漏洞分析 | Tomcat路径解析特性

admin 2023年6月13日11:49:24漏洞分析 | Tomcat路径解析特性已关闭评论17 views字数 2545阅读8分29秒阅读模式

0x01 设置远程调试

修改bin/Catalina.sh文件,设置JPDA_ADDRESS="8000"

图片

使用bash bin/catalina.sh jpda run以调试模式运行

图片

Idea中设置远程IP和端口

图片

0x02 复现

HttpServletRequest中包含的常用获取路径方法:request.getRequestURL():返回全路径;request.getRequestURI():返回除去Host(域名或IP)部分的路径;request.getContextPath():返回工程名部分,如果工程映射为/,则返回为空;request.getServletPath():返回除去Host和工程名部分的路径;request.getPathInfo():仅返回传递到Servlet的路径,如果没有传递额外的路径信息,则此返回Null

所以使用这几个方法来查看路径解析特性,新建一个jsp文件包含以下内容,然后通过jar cvf uri.war uri.jsp命令打包为war包部署:

<%out.println("getRequestURL(): " + request.getRequestURL() + "<br>");out.println("getRequestURI(): " + request.getRequestURI() + "<br>");out.println("getContextPath(): " + request.getContextPath() + "<br>");out.println("getServletPath(): " + request.getServletPath() + "<br>");out.println("getPathInfo(): " + request.getPathInfo() + "<br>");%>
正常访问

部署后正常访问如下:

图片

添加./访问

这其实和在本地使用是一样的./表示在当前目录:

图片

添加../访问

和本地路径一样../表示当前目录的上一层目录,所以添加了一个中间目录test,这个目录存不存在都行。

不存在的情况:

图片

存在的情况:

图片

图片

添加;/访问

图片

在;后添加字母

图片

其他的都无法正常访问

图片

所以在项目中使用了request.getRequestURL()和request.getRequestURI()这两个方法就有可能造成认证绕过之类的漏洞。

0x03 路径解析分析

Tomcat中处理socket主要在org.apache.coyote.http11.Http11Processor#service开始

图片

然后进入org.apache.coyote.http11.Http11Processor#prepareRequest方法中,在这里面主要对请求头进行解析

图片

然后会将socket转化为request和response,进入CoyoteAdapter中处理

图片

在CoyoteAdapter中会新建org.apache.catalina.connector中的request和response对象,并且将刚才Http11Processor中的org.apache.coyote.Request和org.apache.coyote.Response放进去

图片

接下来就会进入到postParseRequest方法中再次解析请求,从Http11Processor中提取出请求放到connector的请求里

图片

在postParseRequest中会继续进入parsePathParameters方法中进行处理

图片

在parsePathParameters方法中会检查请求的uri中是否包含;,包含则会首先获取;到第一个出现/之间的字符

图片

然后会将;以及;和第一个/之间的字符串删除

图片

接着会继续对剩下的字符串进行同样的操作

图片

最终会多出/号返回到postParseRequest方法中

图片

返回之后就会进入normalize方法

图片

进到normalize方法就是循环查看/符号的下一个是不是/符号,是则去除后面的/符号

图片

去除/符号后就会检查是否包含/./或者/../,如果不包含则直接返回

图片

当包含/../的时候,则直接跳到上一级,当包含/./的时候则会直接删去./只剩下/

图片

0x04 总结

在parsePathParameters方法中会去除;到下一个/之前的字符串,比如/url/;ssfdf/url就剩下/url//url去除了;ssfdf;如果是/uri/uri;asd/也会直接当成/uri/uri/;在normalize方法中会删除/符号后面紧跟着的/符号,最终只保留一个,并且会去除/./中的./,跳到/../中的上一级。

END


往期经典回顾

JS断点调试教学

搜索框之%的妙用

子域接管漏洞讲解

HTTP头部注入漏洞

ChatGPT渗透教学(一)

对某授权学校的常规渗透

一次另类的mssql渗透之路

DirtyPipe-脏管道内核提权

web站点登录框的常规突破

 一次没有逗号的MSSQL注入

host碰撞之边界突破getshell

另类的SSRF漏洞的挖掘与利用

另类的XSS攻击之新型XSS载体

Nacos历史+最新漏洞详细分析

新型目录碰撞工具DirCollision

Windows文件/文件夹隐藏技巧

xray windows 1.9x版通杀补丁

初学者的mimikatz免杀制作教程

低版本Tomcat如何另类getshell

Nginx配置不当导致内网资产暴漏

web登录框密码加密的突破小秘密

Windows快捷方式权限维持与后门

ChatGPT在红蓝队中的利用姿势(二)

金蝶Apusic未授权目录遍历漏洞分析

Linux本地sudo(CVE-2021-3156)提权

spring-security 三种情况下的认证绕过

密码测评相关概念及国标和行标文档分享

中华人民共和国金融行标文档分享及介绍

中华人民共和国工控国标文档分享及介绍

fastjson反序列化漏洞初探之parseObject

Chatbox 解决chatgpt网页端访问卡顿掉线

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,文章作者和本公众号不承担任何法律及连带责任,望周知!!!

点赞是鼓励 在看是认同 分享传递知识

看完点个“在看”图片分享给更多人图片

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月13日11:49:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   漏洞分析 | Tomcat路径解析特性https://cn-sec.com/archives/1802605.html