CVE-2017-9841 — 神龙十问 AI 深度分析摘要
本页是神龙十问 AI 深度分析的
摘要版。完整版(更长回答、追问、相关漏洞)需
登录查看 →Q1这个漏洞是什么?(本质+后果)
🚨 **本质**:PHPUnit 测试框架中的 `eval-stdin.php` 文件存在远程代码执行 (RCE) 漏洞。 💥 **后果**:攻击者可通过发送特定 HTTP POST 数据,**执行任意 PHP 代码**,完全控制受影响的服务。
Q2根本原因?(CWE/缺陷点)
🔍 **缺陷点**:`eval-stdin.php` 文件直接使用了 `eval('?>'.file_get_contents('php://input'));`。 ⚠️ **原因**:未对用户输入(stdin)进行任何过滤或验证,直接将其作为 PHP 代码执行。
Q3影响谁?(版本/组件)
📦 **受影响组件**:PHPUnit 测试框架。 📅 **具体版本**: - PHPUnit **4.8.28 之前**的版本 - PHPUnit **5.6.3 之前**的 5.x 版本 🌐 **常见场景**:TYPO3、PrestaShop、Drupal 等 CMS 模块中意外包含的 PHPUnit 库。
Q4黑客能干啥?(权限/数据)
👑 **权限**:以 Web 服务器进程权限执行代码。 📂 **数据**:可读取、修改、删除服务器上的任何文件,甚至获取服务器 Shell。 🔓 **范围**:若 Web 目录可访问,危害极大。
Q5利用门槛高吗?(认证/配置)
📉 **门槛低**: - **无需认证**:远程攻击者即可利用。 - **无需复杂配置**:只要 `eval-stdin.php` 文件在 Web 根目录下可访问即可。 - **简单 POST**:发送以 `<?php` 开头的 POST 数据即可触发。
Q6有现成Exp吗?(PoC/在野利用)
🛠️ **有现成 Exp**: - GitHub 上有多个 PoC 脚本(如 `CVE-2017-9841 detector`、`phpunit-brute`)。 - 存在自动化扫描工具(如 `laravel-phpunit-rce-masscaner`)。 - 在野利用案例包括 PrestaShop 1.7 模块。
Q7怎么自查?(特征/扫描)
🔎 **自查方法**: 1. **路径探测**:尝试访问常见路径,如 `/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php`。 2. **POST 测试**:向该路径发送 `<?php phpinfo(); ?>`,若返回 PHP 信息则存在漏洞。 3. **工具扫描**:使用 `phpunit-brute.py` 等工具批量探测。
Q8官方修了吗?(补丁/缓解)
🛡️ **官方修复**: - 升级 PHPUnit 至 **4.8.28+** 或 **5.6.3+**。 - 参考链接:[PHPUnit PR #1956](https://github.com/sebastianbergmann/phpunit/pull/1956)。 - 厂商如 Gentoo 已发布 GLSA-201711-15 修复指南。
Q9没补丁咋办?(临时规避)
🚧 **临时规避**: 1. **删除文件**:直接从 Web 根目录删除 `eval-stdin.php`。 2. **权限控制**:确保 `vendor` 目录不在 Web 可访问范围内。 3. **WAF 拦截**:配置 WAF 拦截包含 `php://input` 或 `eval` 的 POST 请求。
Q10急不急?(优先级建议)
🔥 **优先级:高**。 - **利用简单**:无需认证,脚本化攻击容易。 - **影响广泛**:许多 CMS 默认包含此库。 - **建议**:立即检查并升级 PHPUnit 或移除 Web 目录下的测试文件。