环境配置
l 系统:Winserver2019
l 数据库:MySQL5.7.26
l JDK:java 1.8.0_371
l 复现版本:ecology9_V10.57
源码分析
通过查看补丁
ecologyWEB-INFmyclassesweaversecurity
rulesruleImpSecurityRuleForOutDocForSql.class ,
其代码如下所示:
首先对路径做了判断,然后对isFromOutImg和fileid做了比较。如果isFromOutImg为1以及fileid为空且转换为整型的值小于0,则把“pression reject”的错误写进日志。
查看FileDownloadForOutDoc.class代码,其代码如下所示:
从请求包中获取fileid的参数值后,没有做任何的处理就拼接到了select语句中。并且对select语句调用了RecordSet的executeQuery()方法,追踪进去看看,其代码如下所示:
该方法调用了自身的重载方法,其代码如下所示:
前面部分都是在对线程进行一些基础配置。往下看到第253行代码,对var1也就是我们前面拼接的select语句进行预处理操作。因为我们传进来的var5是new Object[0](长度为0的空数组,一种类型标记),所以不会进入到后面的for循环。
接着进入if语句,
调用PreparedStatement的executeQuery()方法来执行查询语句。因此补丁包里对fileid参数的处理有效的避免了SQL注入。
漏洞验证
构造的数据包如下所示:
发送构造好的数据包,确定存在时间盲注。
分享文章,私信获取相关代码学习资料
公众号:
刑天攻防实验室
扫码关注 了解更多内容
原文始发于微信公众号(刑天攻防实验室):泛微OA FileDownloadForOutDoc.class SQL注入漏洞分析及复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论