漏洞已在新版本修复,请低版本及时更新补丁
漏洞已在新版本修复,请低版本及时更新补丁
漏洞已在新版本修复,请低版本及时更新补丁
==========正文==========
/mobilemode/Action.jsp
漏洞分析跟踪
先看一下这个基类,也可以叫父类长什么样,这里关注两个函数一个是getAction(),主要用来获取请求参数上的action的值。和execute_proxy(),代理方法调用了抽象的方法execute(),这个execute_proxy()也是jsp页面中真正调用的方法,在这里我们看见execute方法是抽象,所以必然有子类,跟进查找可以找到BaseMobileAction.class
在这里我们可以看见,这个BaseMobileAction仍然是一个抽象类,可以判断,必然还有它的子类。
但是在这里,我们可以看见它已经实现了execute方法。我们来解读一下
1.首先通过getAction()方法获取了请求action的值
2.然后通过getDeclareMethods()获取了自身类所有的全部方法
3.遍历了每一个方法然后获取上面的注解(注解的形式为@注解名(key = value)的形式)并判断是否为空
4.若注解上的name值不为空则检查action的值与注解上name的值是否一致,是则表明执行该方法并获取结果
[小结]这里我们知道了:
1.执行什么方法取决于action的值
2.我们调用的类必须是继承自BaseMobileAction的类
=========切割线=========
继续跟进可以找到本次存在漏洞的类
啊哈!终于找到了CityBrowerAction类,他继承了BaseMobileAction。我们可以看到在方法verifyCity上的注解和方法名是一致的。关注34行,这是注入点,他去接受了参数citites参数,这个参数进行了一次url解码然后尝试转换为一个数组,并在41对该数组进行遍历。在43进行执行(泛微有规则会过滤危险字符串,但此处代码对参数进行了一次url解码,故此我们可以将payload改为双重url编码进行绕过!)。至此,整个漏洞的产生流程分析完毕。
POC(mssql下):
/mobilemode/Action.jsp?invoker=com.api.mobilemode.web.mobile.browser.CityBrowserAction&action=verifyCity&cities=%255B%25221%27%2520%2555%254E%2549ON%2520%2553%2545%254C%2545%2543%2554%201,loginid%20from%20HrmResourceManager%253B%2553%2545%254C%2545%2543%2554%20GETDATE()%20%2557AITFOR%20DELAY%20N%252700:00:05%2527--%2522%255D
原文始发于微信公众号(独语小栈):某微SQL堆叠注入(2)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论