Tomcat文件上传基于Nginx绕过靶场全过程
字数 1559 2025-08-30 06:50:11

Tomcat文件上传基于Nginx绕过靶场全过程教学文档

前言

本教学文档详细分析了一个结合Tomcat和Nginx的Web靶场环境,重点讲解了如何绕过Nginx代理限制实现文件上传和代码执行的技术。该靶场环境展示了多种绕过技术,包括特殊WAR包命名、路径穿越、WAF绕过以及Listener初始化代码执行等方法。

环境分析

靶场基本情况

  • 靶场地址:https://web-10001-range.redcellsec.cn/
  • 主要组件:Tomcat + Nginx
  • Nginx配置:仅代理/manager/*路径的请求

发现入口

  1. 访问经典Tomcat管理路径/manager,发现Tomcat的icon图标
  2. 尝试使用弱口令tomcat/123456成功登录Tomcat管理界面

主要绕过技术

方法一:特殊WAR包命名绕过

技术原理

根据Tomcat官方文档,可以通过foo#bar.war的命名方式将应用部署到/foo/bar/路径下。利用这一特性,可以构造manager#app.war,将恶意代码部署到Nginx代理的/manager/*路径下。

实施步骤

  1. 准备恶意WAR包(由于靶场WAF拦截.jsp文件,需使用内存马)
  2. 将WAR包命名为manager#app.war
  3. 通过Tomcat管理界面上传并部署该WAR包
  4. 访问/manager/app/路径下的恶意代码

官方文档参考

Tomcat 5.5 Automatic Application Deployment

方法二:Nginx反向代理限制绕过(路径穿越)

技术原理

  • Nginx仅代理/manager/*路径的请求
  • Tomcat在规范化处理URL时会将/..;/替换为/../
  • Nginx不会对;做特殊处理,导致Tomcat侧可实现路径穿越

实施步骤

  1. 构造特殊路径如/manager/;/../evil.x
  2. 通过路径穿越访问Tomcat上的任意路径
  3. 配合WAR包部署实现getshell

类似技术

这种绕过方式与Shiro鉴权绕过的方式类似

方法三:WAF绕过技术

技术原理

  • WAF仅拦截上传表单中的.jsp文件
  • 可以通过修改web.xml配置,将其他后缀文件交给JspServlet处理

实施步骤

  1. 准备特殊目录结构:

    WEB-INF/
      └── web.xml
    evil.jsp (使用其他后缀如.evil)
    
  2. 配置web.xml

    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.evil</url-pattern>
    </servlet-mapping>
    
  3. 打包成WAR并上传部署

  4. 访问/manager/app/evil.evil执行恶意代码

方法四:Listener初始化代码执行

技术原理

当WAR包部署时,可以通过Listener的contextInitialized方法自动执行代码,实现RCE。

实施步骤

  1. 创建恶意Listener类:

    public class EvilContextListener implements ServletContextListener {
        public void contextInitialized(ServletContextEvent sce) {
            try {
                Runtime.getRuntime().exec("恶意命令");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        public void contextDestroyed(ServletContextEvent sce) {}
    }
    
  2. 配置web.xml注册Listener:

    <listener>
        <listener-class>EvilContextListener</listener-class>
    </listener>
    
  3. 打包部署WAR包,部署时自动执行恶意代码

替代方案

也可以注册Valve实现类似效果

总结与防御建议

技术总结

  1. 特殊WAR包命名可绕过路径限制
  2. Tomcat与Nginx对URL处理的差异可导致路径穿越
  3. WAF可通过修改web.xml配置绕过
  4. Listener初始化可实现自动代码执行

防御建议

  1. 避免使用弱口令
  2. 限制Tomcat管理界面的访问权限
  3. 统一Nginx和Tomcat的URL处理规则
  4. 加强WAF规则,不仅检查.jsp后缀
  5. 监控Listener和Valve的注册
  6. 定期更新Tomcat版本,修复已知漏洞

扩展思考

该靶场展示了多种绕过技术,实际环境中还可以尝试:

  1. 利用Tomcat的其他特性如Filter、Servlet等实现RCE
  2. 结合其他中间件特性进行综合绕过
  3. 使用内存马等更隐蔽的攻击方式

通过此类靶场练习,可以深入理解Web安全中的路径处理、代理差异和WAF绕过等技术,提升安全防护能力。

Tomcat文件上传基于Nginx绕过靶场全过程教学文档 前言 本教学文档详细分析了一个结合Tomcat和Nginx的Web靶场环境,重点讲解了如何绕过Nginx代理限制实现文件上传和代码执行的技术。该靶场环境展示了多种绕过技术,包括特殊WAR包命名、路径穿越、WAF绕过以及Listener初始化代码执行等方法。 环境分析 靶场基本情况 靶场地址:https://web-10001-range.redcellsec.cn/ 主要组件:Tomcat + Nginx Nginx配置:仅代理 /manager/* 路径的请求 发现入口 访问经典Tomcat管理路径 /manager ,发现Tomcat的icon图标 尝试使用弱口令 tomcat/123456 成功登录Tomcat管理界面 主要绕过技术 方法一:特殊WAR包命名绕过 技术原理 根据Tomcat官方文档,可以通过 foo#bar.war 的命名方式将应用部署到 /foo/bar/ 路径下。利用这一特性,可以构造 manager#app.war ,将恶意代码部署到Nginx代理的 /manager/* 路径下。 实施步骤 准备恶意WAR包(由于靶场WAF拦截.jsp文件,需使用内存马) 将WAR包命名为 manager#app.war 通过Tomcat管理界面上传并部署该WAR包 访问 /manager/app/ 路径下的恶意代码 官方文档参考 Tomcat 5.5 Automatic Application Deployment 方法二:Nginx反向代理限制绕过(路径穿越) 技术原理 Nginx仅代理 /manager/* 路径的请求 Tomcat在规范化处理URL时会将 /..;/ 替换为 /../ Nginx不会对 ; 做特殊处理,导致Tomcat侧可实现路径穿越 实施步骤 构造特殊路径如 /manager/;/../evil.x 通过路径穿越访问Tomcat上的任意路径 配合WAR包部署实现getshell 类似技术 这种绕过方式与Shiro鉴权绕过的方式类似 方法三:WAF绕过技术 技术原理 WAF仅拦截上传表单中的 .jsp 文件 可以通过修改 web.xml 配置,将其他后缀文件交给 JspServlet 处理 实施步骤 准备特殊目录结构: 配置 web.xml : 打包成WAR并上传部署 访问 /manager/app/evil.evil 执行恶意代码 方法四:Listener初始化代码执行 技术原理 当WAR包部署时,可以通过Listener的 contextInitialized 方法自动执行代码,实现RCE。 实施步骤 创建恶意Listener类: 配置 web.xml 注册Listener: 打包部署WAR包,部署时自动执行恶意代码 替代方案 也可以注册Valve实现类似效果 总结与防御建议 技术总结 特殊WAR包命名可绕过路径限制 Tomcat与Nginx对URL处理的差异可导致路径穿越 WAF可通过修改web.xml配置绕过 Listener初始化可实现自动代码执行 防御建议 避免使用弱口令 限制Tomcat管理界面的访问权限 统一Nginx和Tomcat的URL处理规则 加强WAF规则,不仅检查.jsp后缀 监控Listener和Valve的注册 定期更新Tomcat版本,修复已知漏洞 扩展思考 该靶场展示了多种绕过技术,实际环境中还可以尝试: 利用Tomcat的其他特性如Filter、Servlet等实现RCE 结合其他中间件特性进行综合绕过 使用内存马等更隐蔽的攻击方式 通过此类靶场练习,可以深入理解Web安全中的路径处理、代理差异和WAF绕过等技术,提升安全防护能力。