从畅捷通T+勒索病毒事件看文件上传漏洞的攻防之道

0 1、 事件背景

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

图片

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

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

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

0 2、 漏洞分析

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E1bxBgQ5-1690944052053)(https://image.3001.net/images/20221021/1666316960_6351faa0c4932084f335c.png!small)]

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

根据这个提示,经过分析我们发现,这个弹窗代码是在/WebSite/Global.asax.cs中,如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FyEoAFzK-1690944052056)(https://image.3001.net/images/20221021/1666316968_6351faa8a5866cd599a3b.png!small)]

既然能够进行未授权任意文件上传,那么这里一定有办法绕过登陆验证,分析如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NzQyYxQ7-1690944052059)(https://image.3001.net/images/20221021/1666316975_6351faaf3e1e6d3443073.png!small)]

这里通过判断如果flag为false,并且请求的不是login.aspx,changepassword.aspx等页面,就进行跳转到IL_0362,即弹窗提示代码部分,那么我们如果可以控制flag为true的话,就能绕过登录验证。经过分析,flag值源头如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6a3PLC8u-1690944052062)(https://image.3001.net/images/20221021/1666316981_6351fab5ae1ecacca5eaf.png!small)]

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

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

0 3、 漏洞复现

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GFz79Fic-1690944052066)(https://image.3001.net/images/20221021/1666316998_6351fac60ca37ff729e2c.png!small)]

执行发包动作之后,访问

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,如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o4Vye1Gp-1690944052075)(https://image.3001.net/images/20221021/1666317026_6351fae27d3ec2132aa7a.png!small)]

编译:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DZPmIXkg-1690944052078)(https://image.3001.net/images/20221021/1666317032_6351fae8c1bb7134b6eb7.png!small)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wUJi7b9q-1690944052080)(https://image.3001.net/images/20221021/1666317038_6351faeee6980b2765583.png!small)]

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

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

图片

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

图片

0 4、漏 洞修复

官方修复补丁:

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

六方云建议:

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

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

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

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

文件上传漏洞是指 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),这样的操作不会影响图片文件的打开,自然可以绕过图片内容格式的校验。注意这种利用方式必须配合文件包含类的解析漏洞才可以实施攻击。

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

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

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

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

0 7、 总结

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

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

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

网络安全学习路线

这是一份网络安全从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5nJIO0Op-1690944052087)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]编辑

阶段一:基础入门

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K7r6hvRp-1690944052089)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

网络安全导论

渗透测试基础

网络基础

操作系统基础

Web安全基础

数据库基础

编程基础

CTF基础

该阶段学完即可年薪15w+

阶段二:技术进阶(到了这一步你才算入门)

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9XfPlVPy-1690944052091)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

弱口令与口令爆破

XSS漏洞

CSRF漏洞

SSRF漏洞

XXE漏洞

SQL注入

任意文件操作漏洞

业务逻辑漏洞

该阶段学完年薪25w+

阶段三:高阶提升

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RVhyAxlK-1690944052094)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

反序列化漏洞

RCE

综合靶场实操项目

内网渗透

流量分析

日志分析

恶意代码分析

应急响应

实战训练

该阶段学完即可年薪30w+

阶段四:蓝队课程

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ogV0YVFh-1690944052096)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

蓝队基础

蓝队进阶

该部分主攻蓝队的防御,即更容易被大家理解的网络安全工程师。

攻防兼备,年薪收入可以达到40w+

阶段五:面试指南&阶段六:升级内容

img

需要上述路线图对应的网络安全配套视频、源码以及更多网络安全相关书籍&面试题等内容

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

同学们可以扫描下方二维码获取哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值