Part1 前言
更篇文章,尽量做到一周一更,这次写一个小tips分享。
写这篇文章,其实没想好用什么名字,想来想去就定个特殊越权,其实说特殊吧其实也不是多特殊。
但是确实实战场景里面会有这种情况。
Part2 正文
对于权限绕过这种,利用../ 或者;来实现权限绕过,java里面老生常谈的东西了,之前也有分享过。
核心是requesturi导致的
今天带来一个基于这种机制的变种越权,遇到过一次,找不到图了,将就看吧。
核心也是requesturi的问题,不过在权限下的越权,但是很多人不会去测这种漏洞。
具体代码原理如下:(代码写的有点臭,将就看) 这个代码核心可以看出,是做了用户的session判断的,然后根据用户取对应的权限。
但是由于开发未意识到requesturi的问题,因此采用uri.contains(url)的模式去进行判断。
进而导致可以利用;以及../../达到越权效果。
String uri=request.getRequestUri();
if
(NOT_INTERCEPT_URI.contains(uri))
{
logger.info(
"不拦截-->"
+uri);
return
true
;
}
httpSession session=request.getSession();
UserDTO user = (UserDTO) request.getSession().getAttribute(
"user"
);
if
(user !=
null
) {
List<String> userRoles = getUserRoles(user);
boolean
flag = urlLists.stream()
.map(Roleurloto::getMenuurl)
.anyMatch(url -> uri.contains(url));
if
(!flag) {
logger.info(
"非法访问"
+ uri);
return
false
;
}
}
else
{
logger.info(
"用户未登录"
);
boolean
flag=flase;
return
false
;
}
if
(flag==
false
)
{
logger.info(
"非法访问"
+uri);
return
false
;
}
}
很多师傅可能会说这个是特例,可是真的是特例吗?
去github上面看了下 还是有些开发基于这种思路写的
因此在日常做渗透测试的时候,如果是java的网站且
有低权限用户的情况下,可以考虑下 利用../ ;
结合路由api实现权限绕过 说不定就出奇迹了呢?
适用场景:
①具备低权限
②具有白名单路由以及高权限路由
如index.do/../admin.do?*这种
原文始发于微信公众号(goddemon的小屋):实战之特殊越权
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论