泛微OA CheckServer.jsp SQL注入漏洞分析及复现

admin 2024年10月18日09:31:08评论37 views字数 1117阅读3分43秒阅读模式
泛微OA CheckServer.jsp SQL注入漏洞分析及复现

环境配置

l 系统:Winserver2019

l 数据库:MySQL5.7.26

l JDK:java 1.8.0_371

l 复现版本:ecology9_V10.42

泛微OA CheckServer.jsp SQL注入漏洞分析及复现

源码分析

接口位置:mobile/plugin/CheckServer.jsp ,如下图所示:

泛微OA CheckServer.jsp SQL注入漏洞分析及复现

首先从FileUpload对象中获取type参数,然后根据type参数值可进入不同分支。着重关注当type等于“mobileSetting”时所进入的分支。

获取了settings和timestamp参数,然后调用ps.syncMobileSetting()方法,追踪进去,如下图所示:

泛微OA CheckServer.jsp SQL注入漏洞分析及复现

可以看到第845行代码:把实参settings转换为json数组。然后再转换为列表并赋值给var6。对var6进行判空,不为空的话,放到迭代器对象var8里。继续往下看,如下图所示:

泛微OA CheckServer.jsp SQL注入漏洞分析及复现

遍历var8对象,且把var8里的元素转换成Map集合赋值给var9。后面依次获取scope、module、setting、modulename、include、orasc数据。当module不为1、7、8、9、10进入第一个if语句;当module等于2或3时,进入else分支调用this.saveMobileDocSetting()方法。跟进去,如下图所示:

泛微OA CheckServer.jsp SQL注入漏洞分析及复现

这里的形参依次对应的参数是scope、setting、modulename。如果scope大于0且modulename不为空,则进入if语句。

从数据库MobileDocColSetting表中删除scope值的数据。如果setting值为空,向MobileDocColSetting表中插入一条数据;否则进入else分支。

移除setting首尾的空格,在判断是否以@开头,如果是的话去除@后赋值给var2。以#字符对var2进行分隔并赋值给var7,如果var7为空,则直接return返回。

继续往下看,如下图所:

泛微OA CheckServer.jsp SQL注入漏洞分析及复现

遍历var7数组,去除数组里单个元素的|符号后赋值给var10,并判断var10数组是否为空。当setting是以@开头时,进入if分支。对var10数组中的第一个元素进行URL解码;第二个元素转换成Int类型并赋值给var19;根据数组后面是否还有元素进行相应赋值。注意看到第958行代码:直接使用String类型的var11拼接到insert语句中,且没有对它进行过滤处理,造成了SQL注入漏洞。

泛微OA CheckServer.jsp SQL注入漏洞分析及复现

漏洞验证

构造的数据包如下图所示:

泛微OA CheckServer.jsp SQL注入漏洞分析及复现

发送构造好的数据包,确定存在时间盲注。

分享文章,私信获取相关代码学习资料

泛微OA CheckServer.jsp SQL注入漏洞分析及复现
泛微OA CheckServer.jsp SQL注入漏洞分析及复现
公众号:
刑天攻防实验室

扫码关注 了解更多内容

泛微OA CheckServer.jsp SQL注入漏洞分析及复现

原文始发于微信公众号(刑天攻防实验室):泛微OA CheckServer.jsp SQL注入漏洞分析及复现

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

发表评论

匿名网友 填写信息