一、漏洞描述
这是一个组合漏洞,权限绕过 + 后台sql注入漏洞。
二、漏洞分析
2.1 登录绕过分析
从互联网得知,漏洞路径为/mobile/plugin/browser.jsp
。访问这个路径,无法访问
那么就需要分析哪里拦截了这个请求,或者说哪里进行了权限验证。这种验证通常需要登录,或者有一定的权限。不了解项目架构的时候,我们就通过关键字搜索来找到对应的信息。全局搜索您所请求的资源禁止访问
关键字,在一个403.htm
文件中,接着搜这个文件
在cas
的web.xml
配置文件中,定义了该报错页面。
但是并没有找到/mobile
路径相关的验证代码。根据以往经验,该应用修复漏洞都是添加安全规则,在classbean/weaver/security/rules/ruleImp/SecurityRuleMobile29.class
中找到跟Mobile
有关的安全规则。有以下几个验证,是否登录、不用登录、必须登录。
根据以上条件,想要访问后台功能,可以是登录检查返回true
、mobile-no-login-urls
规则返回包含该URL
、
mobile-need-login-urls
规则不包含该URL。
经过翻找规则文件,找到这么一个文件SecurityRuleNeedLogin.class
从名字看,是验证不许登录的规则。
不包含../
和\
会进入if
逻辑,才可以返回true
。这里少了个空格的验证,那么我们就可以利用空格来绕过必须登录的验证。
2.2 SQL注入分析
接下来就可以进入这个文件了,SQL注入在keyword
中,从http请求获取值,进行一次url解密。
把值初始化给了BrowserAction
类
经过一系列参数值的初始化后,最终调用braction.getBrowserData()
方法获取结果,返回给HTTP的响应。
这个方法会根据browserTypeId
的值调用对应的方法。
这些方法都存在SQL注入漏洞
虽然都可以用,但是存在注入的函数只有listRemindType
会返回所有结果
漏洞复现
传入payload: a' union select 1,''+(SELECT @@VERSION)+'
返回数据库版本的报错信息
三、总结
java web应用登录绕过,其中一类都是通过一些列自定义的规则验证请求的URL,然后配合APACHE
的一些特性,绕过原有的规则限制,达到认证绕过的目的。
链接:https://xz.aliyun.com/t/15645time__1311=Gqjxnii%3D0QitDQD%2FmG7DyDmhnFqk8A2d%2BbD
原文始发于微信公众号(船山信安):泛微E9路径browser.jsp存在权限绕过导致SQL注入漏洞
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论