# 用友NC checkekey参数SQL注入漏洞分析
[![用友NC系统checkekey参数高危SQL注入漏洞分析与防护措施](https://blog.xn--ubt767m.wang/content/uploadfile/text2image/67e98f0fc979a.png "用友NC系统checkekey参数高危SQL注入漏洞分析与防护措施")](https://blog.xn--ubt767m.wang/content/uploadfile/text2image/67e98f0fc979a.png "用友NC系统checkekey参数高危SQL注入漏洞分析与防护措施")
## 漏洞概述
用友NC作为国内广泛使用的企业级ERP系统,其`checkekey`参数被发现存在SQL注入漏洞。该漏洞允许攻击者通过构造恶意请求绕过系统防护,直接操作数据库并获取敏感信息,可能造成企业核心业务数据泄露。

## 技术原理
### 漏洞触发点
在系统身份验证模块中,`checkekey`参数未对用户输入进行有效过滤:
```http
POST /xxx_portal/login.jsp HTTP/1.1
checkekey=1' AND (SELECT 1 FROM (SELECT SLEEP(5))a)-- 

攻击向量

攻击者可通过以下方式实施注入:

  1. 时间盲注:利用SLEEP()函数探测数据库结构
  2. 联合查询:通过错误回显获取数据库版本信息
  3. 带外通信:使用DNS解析记录外传数据

影响范围

受影响版本包括:

  • 用友NC 6.5及更早版本
  • 未安装2023年Q2安全补丁的系统
  • 采用默认配置的NC云部署实例

漏洞验证

通过构造延时注入Payload可检测漏洞存在:

'||(SELECT 0x4e43 FROM DUAL WHERE 8899=8899 AND 1947=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB(300000000/2)))))||'

修复建议

临时处置措施

// 增加参数过滤逻辑
String safeKey = request.getParameter("checkekey")
    .replaceAll("([';]+|--|/*|\\*)", "");

官方解决方案

  1. 升级至NC 6.5 SP3版本
  2. 部署官方紧急补丁包NC_202307_SEC_001
  3. 启用WAF的SQL注入防护规则

防护建议

  1. 实施最小权限原则,限制数据库账户权限
  2. 启用预编译语句处理SQL查询
  3. 建立输入白名单验证机制
  4. 定期进行渗透测试与代码审计

注:本文仅用于安全研究,相关漏洞细节已提交CNVD备案(编号:CNVD-2023-xxxxx)。建议受影响企业及时关注用友官方安全公告。