0x01 产品介绍
T+是用友畅捷通推出的一款新型互联网企业管理系统,T+能够满足成长型小微企业对其灵活业务流程的管控需求,重点解决往来业务管理、订单跟踪、资金、库存等管理难题。用户可以通过各种固定或移动设备随时随地迅速获取企业实时、动态的运营信息。
0x02 漏洞概述
畅捷通T+中存在SQL注入漏洞,由于accNum
未进行过滤可直接拼接恶意SQL语句,导致漏洞发生。
0x03 影响范围
畅捷通T+ 13.0 16.0
0x04 漏洞分析
这是xpoc
给的poc;
POST /tplus/ajaxpro/Ufida.T.SM.UIP.MultiCompanyController,Ufida.T.SM.UIP.ashx?method=CheckMutex HTTP/1.1
Host: localhost:8080
Content-Type: text/plain
Cookie: ASP.NET_SessionId=; sid=admin
{"accNum": "6'", "functionTag": "SYS0104", "url": ""}
从POC来看,漏洞点在Ufida.T.SM.UIP.dll
里的MultiCompanyController
中,用Dnspy
反编译Ufida.T.SM.UIP.dll
,找到MultiCompanyController
中的方法CheckMutex
;
进入CheckMutex
发现需要三个参数,分别为url
、accNum
、functionTag
,因为使用了[AjaxMethod]
修饰,使用的是Ajaxpro
方法接收请求,所以需要的请求为{"accNum": "", "functionTag": "", "url": ""}
,接收请求,发现首先判断functionTag
是否为SYS0104
,则进入CheckUserFunction
,并将accNum
传入该函数,若否则进入RegisterFunction
并将所有的参数传入该函数,此时我们已知道POC中functionTag
为SYS0104
,所以漏洞点在CheckUserFunction
中;
进入CheckUserFunction
,发现跳转到了Ufida.T.EAP.Mutex.Interface.dll
中,其中都是接口,并没有具体的实现方法;
Ufida.T.EAP.Mutex
发现存在一个Ufida.T.EAP.Mutex.Service.dll
文件,将其反编译;在Ufida.T.EAP.Mutex.Service
中找到了CheckUserFunction
函数的实现方法,发现其跳转到了MutexBE
中的CheckUserFunction
;
进入MutexBE
中的CheckUserFunction
,发现accountNum
可拼接,故注入点在accNum
处;
继续向后分析跳转到GetDataRows
中,发现又执行了GetDataTable
;
继续向下进入Ufida.T.EAP.Cache.Interface
,也全部都是接口,用同样的方法找到实现方法Ufida.T.EAP.Cache.Service
;
Ufida.T.EAP.Cache.Service
发现GetDataTable
的实现方法,进入Select
函数;Select
函数中找到了完整的SQL语句。0x05 总结
在寻找该漏洞时,碰上那个接口时卡了一天才想到全局搜索相似的文件名,之前审计JAVA时没有遇见过这种情况,也是学习了一种快速定位的方法。
原文始发于微信公众号(安全学习册):畅捷通T+ CheckMutex SQL注入漏洞分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论