泛微E9路径browser.jsp存在权限绕过导致SQL注入漏洞
la0gke 发表于 河南 漏洞分析 957浏览 · 2024-09-17 09:22

一、漏洞描述

这是一个组合漏洞,权限绕过 + 后台sql注入漏洞。

二、漏洞分析

2.1 登录绕过分析

从互联网得知,漏洞路径为/mobile/plugin/browser.jsp。访问这个路径,无法访问

那么就需要分析哪里拦截了这个请求,或者说哪里进行了权限验证。这种验证通常需要登录,或者有一定的权限。不了解项目架构的时候,我们就通过关键字搜索来找到对应的信息。全局搜索您所请求的资源禁止访问关键字,在一个403.htm文件中,接着搜这个文件

casweb.xml配置文件中,定义了该报错页面。

但是并没有找到/mobile路径相关的验证代码。根据以往经验,该应用修复漏洞都是添加安全规则,在classbean/weaver/security/rules/ruleImp/SecurityRuleMobile29.class中找到跟Mobile有关的安全规则。有以下几个验证,是否登录、不用登录、必须登录。

根据以上条件,想要访问后台功能,可以是登录检查返回truemobile-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的一些特性,绕过原有的规则限制,达到认证绕过的目的。

0 条评论
某人
表情
可输入 255