记一次 Tomcat 部署 WAR 包拦截绕过的深究 作者: admin 时间: 2022-05-25 分类: 随便写写,开发 项目遇到的好玩技巧 # 0x01 前言 在一次项目中进入 Tomcat 后台,但是部署 WAR 包的时候被拦截,从而引发的一些列源码审计 ![](https://www.ch1ng.com/blog/usr/uploads/2022/05/215276607.png) # 0x02 分析过程 在 filename 参数添加 `\ ` 字符的时候发现成功部署了应用并且绕过了 WAF 拦截,按照正常逻辑来说,这样的包不应该被成功部署的。 ![](https://www.ch1ng.com/blog/usr/uploads/2022/05/1266079984.png) 定位到 Tomcat 的上传应用包的 Servlet - HTMLManagerServlet,发现调用了 upload 方法。跟进 ![](https://www.ch1ng.com/blog/usr/uploads/2022/05/2982312375.png) 发现获取文件名用了getSubmittedFileName 函数,跟进 ![](https://www.ch1ng.com/blog/usr/uploads/2022/05/1553179054.png) 在getSubmittedFileName函数里面发现使用了HttpParser.unquote函数对文件名进行处理,跟进 ![](https://www.ch1ng.com/blog/usr/uploads/2022/05/3701458324.png) 通过 Debug 调试得知,当文件名遇到有 `\ ` 符号的时候会自动的忽略该符号获取下一个字符 ![](https://www.ch1ng.com/blog/usr/uploads/2022/05/3533100504.png) 所以最终的文件名由`fu2.\war` 变成了`fu2.war` ![](https://www.ch1ng.com/blog/usr/uploads/2022/05/3429745815.png) 由于`fu2.\war`在流量中WAF是不认为它是一个危险的后缀,所以也就不拦截了。往后延伸,其实`\f\u\2\.w\a\r` 或者`demo.w\\\\\\ar`等都可以进行绕过,后续看各位师傅的发挥了。 标签: none
大佬 图太小了,看不太清
保存为PDF即可
666