问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
用友NC complainbilldetail SQL注入漏洞
漏洞分析
用友NC是用友网络科技股份有限公司开发的一款大型企业数字化平台。它主要用于企业的财务核算、成本管理、资金管理、固定资产管理、应收应付管理等方面的工作,致力于帮助企业建立科学的财务管理体系,提高财务核算的准确性和效率。 用友NC 存在SQL注入漏洞,未授权的攻击者可以通过该漏洞获取数据库敏感信息。
一、漏洞简介 ------ 用友NC是用友网络科技股份有限公司开发的一款大型企业数字化平台。它主要用于企业的财务核算、成本管理、资金管理、固定资产管理、应收应付管理等方面的工作,致力于帮助企业建立科学的财务管理体系,提高财务核算的准确性和效率。 用友NC 存在SQL注入漏洞,未授权的攻击者可以通过该漏洞获取数据库敏感信息。 二、影响版本 ------ NC633、NC65 三、漏洞原理分析 -------- 漏洞主要因为complainbilldetail接口的pk\_complaint参数未进行过滤,存在SQL注入。 首先定位到漏洞入口 `nc.bs.ebvp.adviceorappeal.AppealrespController#complaindetail` 在入口处设置断点,构造`payload`并进行发送,成功在断点处停下。同时可以看到,我们传入的载荷。 ![image-20240731212804275.png](https://shs3.b.qianxin.com/attack_forum/2024/07/attach-e5a62d94c76deeb717618616f2186643b25f7201.png) 继续跟进该参数,直接传递到`nc.impl.ebpur.adviceorappeal.service.AppealQueryServiceImpl#queryComplaintVOByPk`函数,该函数接收两个参数,两个参数都是从http请求传递过来,未进行任何过滤。 ![image-20240731213246943-1722432768861-1.png](https://shs3.b.qianxin.com/attack_forum/2024/07/attach-375564f065d8fe6589459f2709422c8aa9922e1c.png) 紧接着又把`pk`传递给`nc.pubimpl.srmsm.complaint.ComplaintMaintainServiceImpl#queryComplaintVOByPk`,另一个参数不用理会,用不到。 ![image-20240731213200466.png](https://shs3.b.qianxin.com/attack_forum/2024/07/attach-f49f3e89f85dd55f9f18b4d6026817ba411d011c.png) 接着把`pk`参数转换成字符串列表,传递给`nc.impl.pubapp.pattern.data.bill.BillQuery#query(java.lang.String[])`。 ![image-20240731213452223.png](https://shs3.b.qianxin.com/attack_forum/2024/07/attach-391cec5f03c4e4d000a70746f150de36279bc289.png) 接下来就开始拼接sql语句了。这里的`query`函数,说明是一个查询语句。进行跟进 先判断参数长度是否为空,接着用`nc.impl.pubapp.pattern.data.table.TableIDQueryCondition`构造查询条件,后边就进行数据库中操作了。 ![image-20240731213901939.png](https://shs3.b.qianxin.com/attack_forum/2024/07/attach-fa724f37afb6c659f2c5171989043e35ca4ab20f.png) 主要的sql语句拼接就是在这个位置,该函数先把传递的字符串初始化给idList数组。 ![image-20240731214800337.png](https://shs3.b.qianxin.com/attack_forum/2024/07/attach-50d3db90308da55fcdf1e495d3394523b72fb4fe.png) 之后会调用build进行生成 ![image-20240731214853928.png](https://shs3.b.qianxin.com/attack_forum/2024/07/attach-b5ad3a49caeb80810c1ead4aca6f6ad9141df468.png) 可以看到,在`buildInSql`中直接把参数拼接进了sql语句。这里之所以两个处理函数,是为了应对多个`where`条件的情况。第二个参数`field`就是表列名,不同的模块,不同的表列名。这里不用理会第二个处理函数,因为sql注入的时候,直接用注释符把后边的语句注释掉了。 ![image-20240731215023881.png](https://shs3.b.qianxin.com/attack_forum/2024/07/attach-4fcef3b94620528ed3caea54a4db276402657c3f.png) 现在的sql语句虽然没有过滤就进行了拼接,还不能100%保证一定存在sql注入。还需要继续跟进,看看执行sql语句的时候,是否用来占位符查询。 跟进另一个Query函数,这里正是进入sql执行阶段。第一个红框把表列传递给build生成sql语句。第二个红框进行查询执行。 ![image-20240731215621911.png](https://shs3.b.qianxin.com/attack_forum/2024/07/attach-d7ba917e9b59d082494e7efde564500459ee078b.png) 把前边`where`语句拼接进整个sql,用`DataAccessUtils.query()`进行查询。 ![image-20240731215938107.png](https://shs3.b.qianxin.com/attack_forum/2024/07/attach-934398c6583f2628654e0ad5fe6cbc3eed5481b3.png) 同样没有进行任何过滤,也没有用占位符查询的方式。同样的,后边的sql语句不用理会,直接被注释掉了。 ![image-20240731220135136.png](https://shs3.b.qianxin.com/attack_forum/2024/07/attach-da9aead1a089be7bc4a3ad5fee922e185cd70f0d.png) 至此,已经可以确定存在SQL注入漏洞。 四、环境搭建 ------ 环境搭建部分,这里就不重复了,奇安信攻防社区有很详细的安装过程。直接参考即可。 传送门: (通过代码审计某友获取CNVD高危证书)\[<https://forum.butian.net/share/3058>\] ![image-20240731220605865.png](https://shs3.b.qianxin.com/attack_forum/2024/07/attach-cdd6fa0618c3677db7865301b3b00e73ddeb8c23.png) 五、漏洞复现 ------ [http://192.168.45.148/ebvp/advorappcoll/complainbilldetail?pageId=login&pk\_complaint=1](http://192.168.45.148/ebvp/advorappcoll/complainbilldetail?pageId=login&pk_complaint=1)'waitfor+delay+'0:0:10'-- ![image-20240731220820235.png](https://shs3.b.qianxin.com/attack_forum/2024/07/attach-70ff300d3d03b6d0d7ccac47c3c5aabe23d46c8c.png) 六、总结 ---- 该SQL注入漏洞主要是因为系统未对`pk_complaint`参数进行任何过滤,导致sql注入漏洞。经过我的分析,这个接口很有可能是被作者忘记了,因为其他接口基本都采用占位符的方式进行查询,可以有效的防治SQL注入漏洞。
发表于 2024-08-07 09:45:26
阅读 ( 3169 )
分类:
Web应用
0 推荐
收藏
0 条评论
请先
登录
后评论
Harper Scott
6 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!