漏洞详情
当 Tomcat 运行在 Windows 系统且启用了 HTTP PUT 方法(通过将 readonly 参数设置为 false)时,攻击者可构造恶意请求上传 JSP 文件,导致服务器执行任意代码,进而引发数据泄露或服务器权限被控制。
关键点:
- 触发条件:需手动修改
conf/web.xml文件中的readonly参数为false(默认值为true,PUT/DELETE 方法被禁用)。 - 绕过限制:Tomcat 默认通过
JspServlet处理.jsp文件的上传,但攻击者可通过以下方式绕过限制,使文件由处理静态资源的DefaultServlet处理:- 文件名后添加空格(
evil.jsp%20,利用 Windows 不允许文件名以空格结尾的特性)。 - 使用 NTFS 文件流特性(
evil.jsp::$DATA)。 - 文件名后添加斜杠(
evil.jsp/,此方法甚至影响 Linux 系统及 Tomcat 5.x-9.x 版本)4711。
影响范围:
- 文件名后添加空格(
- 受影响的 Tomcat 版本:
- Apache Tomcat 7.0.0 至 7.0.81(官方公告范围)。
- 部分测试显示 Tomcat 8.5.19 等版本也可能受影响。
- 操作系统:主要针对 Windows,但通过添加斜杠的绕过方式(
evil.jsp/)可扩展至 Linux 系统。
攻击思路:
上传木马文件,webshell管理工具进行连接
环境搭建
使用vulhub进行搭建:
|
|

漏洞复现
burpsuite抓包

使用webshell generate快速生成木马,项目地址:
|
|

一句话木马:
|
|
将生成的木马上传。这里使用PUT方法进行上传,文件名可以是/xxx.jsp/、/xxx.jsp%20、/xxx::$DATA
|
|

返回201即上传成功,使用蚁剑进行连接
|
|

绕过姿势
|
|
修复建议
把readonly 改成true
|
|