代码审计之某高校通用系统getRequsetURI函数的三次鉴权绕过

前言:

放一篇星球里面的代码审计的漏洞案例,该系统为大量高校使用的一个系统。 

三次绕过。

正文:

如图所见,系统厂商采用的是利用过滤器的写法进行鉴权代码审计之某高校通用系统getRequsetURI函数的三次鉴权绕过

第一次的校验代码:

代码审计之某高校通用系统getRequsetURI函数的三次鉴权绕过即requestURI转为小写后,后缀只要不为jpg gif png swf html htm js这些后缀即进行鉴权。

且代码requestURI=httpServletRequest.getRequestURI(); 


该函数由于tomcat+requestURI的特性问题,会导致默认处理时 ../ ; ./以及其的编码造成权限绕过。


这里因此我们能构造的bypass的方法即可 

/(鉴权路由)index.do;.jpg

/(鉴权路由)index.do;.htm等后缀方式进行绕过。


第二次的校验代码:

代码审计之某高校通用系统getRequsetURI函数的三次鉴权绕过

有图可见,厂商修复了利用仅仅用ends后缀判断是否存在进行做权限判断,然后采用

利用判断是否包含/js/ /css和/assets 来进行权限判断

这个地方忽略了一个js/../鉴权路由这种攻击手法,造成第二次绕过。


第三次鉴权绕过:

代码没找到了,大概的原因就是 

开发者考虑到了 /../ 目录穿透符的问题 


对这些目录跳跃的做了一个过滤,导致没办法在通过上面的穿透的思路去绕掉鉴权。代码审计之某高校通用系统getRequsetURI函数的三次鉴权绕过

但是却忽略了indexof(“es5”)这串代码的问题,即包含es5即可filter掉 


即if(path.indexOf(“es5”)>=0)即绕过

因此攻击者可以利用 


鉴权路由;es5去进行再次绕掉鉴权 实现再次权限绕过。

走到这里后自此,权限绕过问题彻底解决,彻彻底底无法再次绕过。

后言:

细化挖掘,谁说开发修复漏洞后该漏洞就一定不会存在了呢?

具体情况具体分析才是正解。

最后打个广告?有需要的就自己加咯。代码审计之某高校通用系统getRequsetURI函数的三次鉴权绕过

代码审计之某高校通用系统getRequsetURI函数的三次鉴权绕过

代码审计之某高校通用系统getRequsetURI函数的三次鉴权绕过


原文始发于微信公众号(goddemon的小屋):代码审计之某高校通用系统getRequsetURI函数的三次鉴权绕过

版权声明:admin 发表于 2024年5月7日 上午12:01。
转载请注明:代码审计之某高校通用系统getRequsetURI函数的三次鉴权绕过 | CTF导航

相关文章