星巡研究院
CVE-2017-12615high

Tomcat PUT 方法远程代码执行

Tomcat 7/8/9 在 Windows 且 DefaultServlet 的 readonly 为 false 时,可通过 PUT 上传文件,结合文件名特性写出可执行内容。

# CVE-2017-12615 · Tomcat PUT 方法远程代码执行 ## 基本信息 - 编号:CVE-2017-12615 - 组件:Apache Tomcat 7 / 8 / 9 - 影响条件:Windows 环境,且 servlet 的 readonly 初始化参数为 false - 严重度:high ## 问题成因 Tomcat 的 DefaultServlet 支持 PUT 方法上传文件。当 readonly 配置为 false 时,PUT 请求可以把文件写进 Web 目录。Windows 下文件名末尾的点、空格以及流数据后缀会被系统处理掉,攻击者借此绕过 Tomcat 对可执行后缀的拦截,最终写出可执行页面。 ## 关键点 - 不是所有 Tomcat 都中招:需要 readonly=false,默认配置是 true - 平台相关:利用依赖 Windows 的文件名处理特性 - 危害路径是"写文件 → 写成可执行内容 → 访问执行" ## 修复与缓解 1. 升级 Tomcat 到官方修复版本 2. 确认 DefaultServlet 的 readonly 为 true(默认值) 3. 在 Web 服务器层禁用 PUT / DELETE 方法,只开放需要的动词 4. 应用以低权限账户运行,Web 目录不给执行权限 ## 常见坑 - 只看了 Tomcat 版本,没检查 conf/web.xml 里 readonly 是否被改成 false - 以为内网系统不暴露就没风险,忽略了横向移动场景 - 升级后没有复核方法白名单,历史遗留的 PUT 规则仍在 ## 怎么验证 在测试环境对静态目录做路径穿越请求,观察是否返回 405 或 403。
#tomcat#put#rce#windows