用友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. 受影响版本 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. 攻击向量 四、修复方案 1. 官方补丁 NCM_NC6.5_000_109902_20240116_CP_399718758 f056abc8f5f7c5408f2c7abc21f07e4df2f80735ec1f11203f9dfbed49cdfe16
部署步骤 :
2. 临时缓解措施 五、验证方法 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. 类似漏洞预防建议 使用JPA/Hibernate等ORM框架的预编译功能 七、参考资料 用友官方安全公告: https://www.yonyou.com/security SQL注入防护指南:OWASP Cheat Sheet Series 注 :本文档涉及攻击技术仅用于授权渗透测试和安全研究,请遵守相关法律法规。
阅读原文:https://mp.weixin.qq.com/s/7YAlGWyQH_jkVjPWjNvNPA
该文章在 2025/4/14 9:27:28 编辑过