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/*路径的请求
发现入口
- 访问经典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-INF/ └── web.xml evil.jsp (使用其他后缀如.evil) -
配置
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> -
打包成WAR并上传部署
-
访问
/manager/app/evil.evil执行恶意代码
方法四:Listener初始化代码执行
技术原理
当WAR包部署时,可以通过Listener的contextInitialized方法自动执行代码,实现RCE。
实施步骤
-
创建恶意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) {} } -
配置
web.xml注册Listener:<listener> <listener-class>EvilContextListener</listener-class> </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绕过等技术,提升安全防护能力。