java中相关权限绕过记录 | 风尘孤狼
0%

java中相关权限绕过记录

java中相关权限绕过记录


前言

针对java相关代码审计中的权限绕过,需要先了解一下获取URL的相关操作,如下

String requestURI = request.getRequestURI(); // 获取整个URL
System.out.println("1:我是getRequestURI"+requestURI);
StringBuffer requestURL = request.getRequestURL();  //获取url
System.out.println("2:我是getRequestURl"+requestURI);
String servletPath = request.getServletPath();   //获取Servlet的路径
System.out.println("3:我是getServletPath"+requestURI);

结果如下

String requestURI只是输出一个目录路径,eg:/admin
StringBuffer requestURL输出的是完整的地址+目录,eg:http://127.0.0.1/admin
String servletPath输出的是一个目录路径,eg:/admin

针对以上进行一个payload的绕过总结如下,用于一些java题目的鉴权绕过

payload getRequestURL getRequestURI getServletPath
/index http://127.0.0.1:8081/index /index /index
/./index http://127.0.0.1:8081/./index /./index /index
/.;/index http://127.0.0.1:8081/.;/index /.;/index /index
/a/…/index http://127.0.0.1:8081/a/../index /a/…/index /index
/a/…;/index http://127.0.0.1:8081/a/…;/index /a/…;/index /index
/;/index http://127.0.0.1:8081/;/index /;/index /index
/;a/index http://127.0.0.1:8081/;a/index /;a/index /index
/%2e/index http://127.0.0.1:8081/./index /%2e/index /index
/inde%78 http://127.0.0.1:8081/index /inde%78 /index

可以看到当payload传入的内容经过getServletPath处理之后都变成了/index,但是针对getRequestURLgetRequestURI这俩处理之后就没什么变化。

绕过解释

针对以上情况就可以对不同的处理进行绕过的一些操作

比如设置一种检测,若是在URL当中判断出来存在相关的.css的时候成立,若是不存在.css那么不成立。这种情况比如一些CTF题目,只允许传后缀是.css的文件,我们就可以利用上述的绕过思路,传.css,经过处理依然可以达到我们自己的目标。

大致结果如下

getRequestURL方法   -> 传admin;.css  ->成立
getRequestURI方法   -> 传admin;.css  ->成立
getServletPath方法  -> 传admin;.css  ->不成立

针对判断后缀时使用的equals或endsWith之间的差异:

若是变为equals方法是无法进行绕过的。
制作不易,如若感觉写的不错,欢迎打赏