🚨🚨 CVE-2025-55752 — Apache Tomcat:通过 Rewrite Valve 绕过目录保护 → 基于 PUT 的 RCE🚨🚨 摘要
CVE-2025-55752 是 Apache Tomcat 在修复 bug #60013 时引入的一个安全回归问题。当使用 Rewrite Valve 时,Tomcat 在 URL 解码 之前应用 路径规范化。这种错误的顺序使得精心构造的 URI 能够绕过 StandardContextValve.java 中对 /WEB-INF/ 和 /META-INF/ 等受保护路径实施的访问检查。如果服务器接受 HTTP PUT 请求(或暴露任何可写的文件上传端点),攻击者可以上传恶意工件(例如 .jsp 或序列化会话)并实现远程代码执行(RCE)。
🚨 受影响版本
包含 rewrite/规范化变更的较旧生命周期结束(EOL)Tomcat 分支也可能受影响。请针对您的特定发行版/供应商构建进行验证。
🚨 影响
PUT(或其他可写端点)时,或 webapp 允许文件上传但验证不足时。🚨🚨 技术细节(简明)
StandardContextValve 对 /WEB-INF/ 和 /META-INF/ 的保护。PUT 或具有将文件放置在 webapp 文档根目录下的文件上传端点,攻击者可以将 .jsp 或其他可执行内容写入服务器提供/执行的位置,从而导致 RCE。修复与防御策略
立即修复(推荐)
升级 Tomcat 到已修复的支持版本,尽快执行:
如果无法立即升级(临时缓解措施)
禁用 HTTP PUT 在服务器、连接器或反向代理层面(例如,通过 Web 服务器配置或防火墙规则)。
加固/移除 Rewrite 规则 允许任意重写到可写位置的规则;特别是移除将查询参数重写或转发到文件路径的规则。
加固 Web 应用程序中的文件上传处理:
/WEB-INF/、/META-INF/ 或任何应用程序类路径下的上传。在边界过滤/阻止利用 URI(WAF / 反向代理),通过阻止可疑的编码载荷和试图绕过 /WEB-INF 或 /META-INF 保护的模式。
文件存储的最小权限: 确保 webapp 进程无法写入由容器提供或执行的目录。
功能概述
该工具基于官方 CVE-2025-55752 描述执行两步检测:
尝试利用 Apache Tomcat 的 Rewrite Valve 中 URL 规范化先于解码的错误顺序,允许路径遍历到 /WEB-INF 或 /META-INF 等受保护位置。
尝试通过 HTTP PUT 上传一个测试 JSP 文件,然后检查保护机制是否可以被绕过以访问上传的文件。
检查是否可以路径遍历到受保护目录:
python3 cve_2025_55752_detector.py http://target:8080 --check
尝试上传 JSP 文件并测试访问绕过:
python3 cve_2025_55752_detector.py http://target:8080
🔧 自定义文件名和载荷内容:
python3 cve_2025_55752_detector.py http://target:8080 --filename exploit.jsp --payload "<% out.println('PWNED'); %>"