某微SQL堆叠注入(2)

admin 2024年10月7日19:19:48评论16 views字数 1604阅读5分20秒阅读模式

漏洞已在新版本修复,请低版本及时更新补丁

漏洞已在新版本修复,请低版本及时更新补丁

漏洞已在新版本修复,请低版本及时更新补丁

==========正文==========

/mobilemode/Action.jsp

某微SQL堆叠注入(2)

[13]行:接受invoker参数并去掉了字符串两侧的空格
然后检查了一下参数是否为空
[17-19]行:检查invoker参数是否为以字符串com.开头,若不是则会尝试将字符串进行一次base64解码
[20-36]行:先检查了一下是否登录,没登录就会直接抛出异常。检查登录后使用Class.forName去加载invoker这个全路径类名(一般来说一个类的全路径类名是com.example.xxx.xxClass这种形式),26行检查了一下加载的类是否为BaseAction.class的派生类,若是则会调用execute_proxy方法,不是则抛出异常。
[小结]当前已知我们需要找到一个包含漏洞的类它需要满足以下条件:1.是BaseAction的派生类。2.存在漏洞

某微SQL堆叠注入(2)

漏洞分析跟踪

某微SQL堆叠注入(2)

先看一下这个基类,也可以叫父类长什么样,这里关注两个函数一个是getAction(),主要用来获取请求参数上的action的值。和execute_proxy(),代理方法调用了抽象的方法execute(),这个execute_proxy()也是jsp页面中真正调用的方法,在这里我们看见execute方法是抽象,所以必然有子类,跟进查找可以找到BaseMobileAction.class

某微SQL堆叠注入(2)

在这里我们可以看见,这个BaseMobileAction仍然是一个抽象类,可以判断,必然还有它的子类。

但是在这里,我们可以看见它已经实现了execute方法。我们来解读一下

1.首先通过getAction()方法获取了请求action的值

2.然后通过getDeclareMethods()获取了自身类所有的全部方法

3.遍历了每一个方法然后获取上面的注解(注解的形式为@注解名(key = value)的形式)并判断是否为空

4.若注解上的name值不为空则检查action的值与注解上name的值是否一致,是则表明执行该方法并获取结果

某微SQL堆叠注入(2)

[小结]这里我们知道了:

1.执行什么方法取决于action的值

2.我们调用的类必须是继承自BaseMobileAction的类

=========切割线=========

继续跟进可以找到本次存在漏洞的类

某微SQL堆叠注入(2)

啊哈!终于找到了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)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月7日19:19:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某微SQL堆叠注入(2)https://cn-sec.com/archives/1987225.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息