漏洞详情
当 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
|
|