-
绕过原理
-
绕过方式
-
案例
绕过原理
在java开发的过程中,经常使用一些权限拦截器配置某些url需要认证才能够访问,如果配置不当攻击者可通过构造特殊url来绕过拦截器来获取访问权限。
可以参考一下shiro权限绕过的思路。
绕过方式
构造如/xxx/xxx/login/../xxx/xxx/xxx
等形式的url以绕过拦截器。
案例
具体原理:
权限拦截器可能对于/saat/login.spr/**
,这种路由全部放行,不进行权限鉴别。正常用户访问该url只是在进行登陆。因此无需进行鉴别权限。
用户在访问某些功能点路由的时候,例如访问/saat/combService这种路由,通常是需要权限才可以访问,因此后端对这种路由进行权限鉴别。
那么当我们访问/saat/login.spr/../combService/com.spr
的时候,拦截器匹配以上url不进行权限相关校验,然后又因为../路径穿越,可以回到/saat/combService
。此时可以绕过权限限制正常访问功能点。
正常访问目标功能点
http://ip:port/saat/combService/com.spr?method=call
观察com文件到后缀为spr,所以登陆的后缀会不会是login.spr?构造如下路径,以绕过访问控制
http://ip:port/saat/login.spr/../combService/com.spr?method=call
其他功能点也可以按照该思路绕过。
原文始发于微信公众号(不懂安全的果仁):Bug Bounty Tip | 一次权限绕过