freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

从畅捷通T+勒索病毒事件看文件上传漏洞的攻防之道
六方云 2022-10-21 09:52:45 193193
所属地 北京

01、事件背景

近期,六方云安全团队监测到畅捷通发布一则安全公告,修复了一个存在于畅捷通T+中的任意文件上传漏洞,通告如下:

图片

而在8月底,各大安全公司或团队就陆续收到多起用户反馈其服务器遭受勒索病毒攻击,导致服务器文件被锁,数据被加密,遭受病毒勒索的用户需支付赎金0.2个比特币(约2.8万元人民币)才能解锁。六方云安全团队关注到此次安全通告后,第一时间对漏洞利用过程进行了分析确认,确认这是典型的利用软件供应链0day漏洞上传病毒进行勒索的攻击行为。六方云致力于工业物联网安全,迅速对客户网络开展了安全排查和病毒防范。


当前大多数的互联网Web应用,均以具有可配置用户信息的特性来丰富其可扩展性,而上传文件显然成为其一项关键功能。社交媒体网站允许上传用户个人资料图像和其他社交媒体,而企业网站可能允许用户上传PDF和其他文档供公司使用。但是,当Web 应用程序开发人员启用此功能时,他们也会承担允许最终用户将其潜在恶意数据存储在Web应用程序的后端服务器上的风险。如果用户输入和上传的文件未得到正确过滤和验证,攻击者可能能够利用文件上传功能执行恶意活动,例如在后端服务器上执行任意命令,控制应用程序、系统,读取数据库或文件系统,破坏网站等。

通过本次勒索病毒事件,我们可以看到,网络安全无时无刻都在经受着严峻的安全考验,而一旦存在安全疏忽,企业和公民财产就将遭受严重的损失。借此次安全事件,我们从畅捷通T+ 文件上传漏洞原理分析、漏洞复现、漏洞修复,来阐述文件上传漏洞的攻防之道。

02、漏洞分析

本次发布的漏洞针对的是畅捷通T+ 系列产品,版本<=v17.0,漏洞类型为任意文件上传,可实现RCE获取主机权限。

涉及的接口是/tplus/SM/SetupAccount/Upload.aspx。首先我们使用ILSpy反编译分析Upload.aspx源码,如下:

从源代码可以看到,文件上传模块校验了上传文件的大小,上传文件的Content-type值,那么意味着我们可以使用中继代理如burp修改Content-type进行绕过。如此,我们经过测试发现,直接访问Upload.aspx会弹出“没有登录,请登录。”的提示。

根据这个提示,经过分析我们发现,这个弹窗代码是在/WebSite/Global.asax.cs中,如下:图片

既然能够进行未授权任意文件上传,那么这里一定有办法绕过登陆验证,分析如下:图片

这里通过判断如果flag为false,并且请求的不是login.aspx,changepassword.aspx等页面,就进行跳转到IL_0362,即弹窗提示代码部分,那么我们如果可以控制flag为true的话,就能绕过登录验证。经过分析,flag值源头如下:图片

即请求页面查询字符串中preload为1,flag即为true,否则为false;那么我们只需构造如下请求便可绕过登录验证。

/tplus/SM/SetupAccount/Upload.aspx?preload=1

03、漏洞复现

根据漏洞分析情况,我们采用VMware虚拟机进行畅捷通T+服务器的搭建,系统采用Windows 7旗舰版 Service Pack 1,安装.NET Framework 4.72版本,畅捷通T+ v13 标准版,SQL Server 2012 SP1,环境搭建完成后,访问服务器8080端口,出现畅捷通T+标准版登录页面,则环境部署成功。

根据漏洞分析情况,需要构造文件上传数据包,这里使用Burpsuite进行协议测试。如下:

执行发包动作之后,访问

http://172.20.0.15:8080/tplus/SM/SetupAccount/images/shell.aspx

出现如下提示

图片

根据错误提示,这里应该是网站采用了.NET预编译机制,导致访问失败,那么什么是.NET预编译机制呢?

我们首先来看一下不存在预编译机制下,用户访问一个.NET网站所发生的情况。当用户首次请求网站的资源时,将动态编译.NET网页和代码文件并进行缓存,其后访问将直接访问编译后的资源,这样做有诸多优点,如加快用户访问页面的响应时间,直接部署编译版本避免源代码泄露等。

.NET提供了命令行方式的预编译程序aspnet_compiler.exe,使用它可以将源代码文件轻松的进行编译,指令格式如下:

aspnet_compiler-v <网页虚拟目录> -p <源代码目录> <编译后存储目录> -fixednames

预编译操作将生成一个程序集dll和一个指向该程序集的.compiled文件,部署时将存放在网站bin文件夹中,原始文件将去除内容,写入“这是预编译工具生成的标记文件,不应删除!”,存放在原始位置。

了解了.NET预编译机制后,那么我们就可以编写webshell文件,首先通过aspnet_compiler进行源代码文件的编译,然后通过文件上传漏洞将编译后文件上传到网站特定路径,从而获取webshell。那么问题来了,上传路径是否可以控制呢?我们构造如下数据包进行测试,是否可以路径穿越:

图片

访问http://172.20.0.15:8080/tplus/shell.html成功,证明此漏洞可以上传文件到服务器web任意目录。

接下来我们开始实际操作了,首先构造aspx一句话木马文件src/shell.aspx,如下:图片

编译:

图片

其中-v参数指定此源代码文件部署在web根目录下,dst目录编译后文件如下:

图片

我们需要上传shell.aspx到网站根目录,上传App_Web_x5zgrm4o.dll,

shell.aspx.cdcab7d2.compiled文件到网站根目录bin文件中,编写exp脚本,关键代码如下:

图片

文件上传完成后,使用蚁剑进行连接,成功获取webshell。

图片

04、漏洞修复

官方修复补丁:

https://www.chanjetvip.com/product/goods/goods-detail?id=53aaa40295d458e44f5d3ce5

六方云建议:

  • 定期关注官方产品漏洞通告,及时安装版本补丁;

  • 网站需做好定期的数据备份;

  • 如果系统已经中毒,则需要安装杀毒软件并及时更新病毒库,进行全盘扫描查杀。

05、文件上传漏洞的攻击原理

文件上传漏洞是指 Web 服务器允许用户在没有充分验证其名称、类型、内容或大小等内容的情况下将文件上传到其服务器文件系统。而这种未能正确实施的处理缺陷,访问限制等因素意味着即使是基本的图像上传功能也可用于上传任意或潜在危险的文件,甚至可能是包括启用远程代码执行的服务器端脚本文件。

那么上传文件漏洞是如何产生的呢?通常情况下,多数网站都会对用户上传的文件进行限制,这主要取决于开发人员是否具备完善的安全开发知识以及开发足够健壮安全的验证功能的能力。

然而现实并非如人所愿,所谓“道高一尺,魔高一丈”,针对文件上传安全验证的攻击和绕过也层出不穷,我们以这个为切入点,通过几个主要的攻防手段阐述文件上传漏洞的原理和攻击方式。

前端验证绕过:通常在用户选择,提交文件时,大部分网站会在前端对文件扩展名进行验证是否为预期的上传格式,如果上传的格式不正确,则会提示用户。一般情况是在本地客户端的脚本来执行校验功能,此时数据包并未提交到服务端。针对此类验证,攻击者通常上传允许的文件,使用Burp等代理工具轻松修改数据包的特定字段进行绕过,发起攻击。

修改Content-type绕过:有些网站在服务端仅仅校验上传文件数据的http头部字段Content-type,如果字段值为预期的上传格式,则允许;否则,返回上传失败等信息。针对此类验证,攻击者也往往可以采用类似前端验证绕过的方法,通过Burp等中继代理工具修改数据包中的Content-type字段值绕过,从而发起攻击。

黑名单绕过:绝大部分的网站应用服务端都采用了黑名单的验证方式,具体做法是获取到用户上传的文件后缀名后,与应用中设置的黑名单进行比对,如果后缀名在黑名单中,文件将禁止上传。与此相对应的有白名单,即应用中设置允许上传的文件格式,如果用户上传的文件后缀名不在白名单中,文件将被禁止上传。

针对网站应用设置的黑名单,其做法本身往往存在先天缺陷和不足,如无法显式列举可用于执行代码的每个可能的文件扩展名,攻击者往往可通过上传一些鲜为人知的文件扩展名(php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml等)从而绕过验证实施攻击,其它诸如利用了特定服务器系统的特性,使用文件扩展名大小写,特殊字符等进而实施攻击。白名单的验证方式,相较于黑名单来说,安全性提高了很多,但并不是无懈可击。较为常见的攻击方式主要有00截断,图片马等。

00截断的思路是利用白名单的过滤通常是从后往前读取文件后缀名,而调用文件请求时读取文件名是从前往后读,构造诸如1.php%00.jpg的url从而绕过图片上传的白名单限制。图片马则是服务端对上传的图片文件存在基于内容格式的校验,针对此类验证,通常在Windows下使用copy命令将一句话木马文件和图片文件进行合成(如copy 1.jpg/b + shell.php shell .jpg),这样的操作不会影响图片文件的打开,自然可以绕过图片内容格式的校验。注意这种利用方式必须配合文件包含类的解析漏洞才可以实施攻击。

06、文件上传漏洞的防御措施

通过对文件上传漏洞的基本认识,我们知道允许用户上传文件是网站应用司空见惯的功能,对于网站服务提供者来说,需要采取正确的预防措施,来避免黑客攻击和不必要的经济损失是至关重要的。通常,保护您自己的网站免受上传文件漏洞攻击的最有效方法是实施尽可能多的防御措施,如下:

  • 使用随机数改写文件上传路径。
  • 对用户上传的文件名进行硬编码或统一编码,过滤斜杠反斜杠等引起路径穿越漏洞的字符。
  • 文件上传的目录设置为静态资源目录,不可执行,防止被解析为脚本执行。
  • 设置严格的白名单和黑名单验证。
  • 文件名后缀存在%00字节,截断某些函数对文件名的判断。
  • 上传图片文件进行二次渲染。
  • 使用文件存储服务。

而所谓“智者千虑,必有一失”,无论网站开发人员,维护人员进行再周密的考虑,也无法保障所开发的系统不存在此类漏洞,安装必要的安全防护设备将作为系统安全的最后一道防线,显得尤为重要。

07、总结

此次的勒索病毒事件与畅捷通T+软件供应链攻击直接相关。在遭遇勒索病毒攻击后,不光涉及到企业IT网络,工业网互联网络同样面临着病毒的威胁。因此,对于工业互联网的相关用户也应该予以重视。

六方云一直致力于保护工业互联网安全,在工业安全领域拥有多项核心技术。其神探系列产品部署于工业互联网边界,及时精确发现、阻断已知和未知威胁,包括此次类似畅捷通T+的常规文件上传漏洞攻击。工业卫士则用于部署于核心服务器终端,及时扫描和查杀病毒。六方云团队将持续提供专业的产品及服务,切实帮助用户抵御工业互联网安全攻击。

# 网络安全 # 安全漏洞 # 漏洞分析 # 文件上传
本文为 六方云 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
六方云 LV.8
北京六方云科技有限公司
  • 366 文章数
  • 42 关注者
六方云 安全态势周刊丨第337期
2025-03-20
智能·高效·合规丨六方云轨道交通综合监控系统安全方案
2025-03-20
中关村网络安全与信息化产业联盟第三届第二次会员大会成功举办,六方云再获殊荣
2025-03-11
文章目录