点击上方「蓝字」,关注我们
环境配置
l 系统:Winserver2008R
l 数据库:Oracle11G
l JDK:java 1.7.0_51
l 复现版本:用友NC6.5
源码分析
Jar包所在位置:
moduleswebsmlibpubwebsm_pmngLevel-1.jar!
类方法代码位置:
ncuapportalactionPortalPageManagerAction.class
可以看到第218行代码:
从请求包获取“billitem”参数值后,除了判断值是否为“null”之外,并没有其它的过滤限制操作。
随后第238行代码:
直接把“billitem”追加到“where”字符序列中。
最后在第243行代码把where.tostring作为参数,
调用了
PortalServiceUtil.getPageQryService().getPagesByCondition()方法。
追入看到该方法详细代码如下:
其中又调用了PtBaseDAO的retrieveByClause()方法:
通过this.buildSql构建好SQL语句后,使用executeQuery()方法进行查询操作。在这些流程中也没有发现过滤危险函数或字符的操作。
纵观全流程,都没有对客户端输入的“billitem”数据做过滤以及限制,直接就拼接到SQL语句中并执行它,导致了SQL注入漏洞。
漏洞复现
Sqlmap进行测试,其测试结果显示有时间盲注:
构造的数据包以及结果如下:
从结果看到,成功延迟5秒。
刑天攻防实验室
扫码关注 了解更多
原文始发于微信公众号(刑天攻防实验室):用友NC6.5 importPmlSQL注入漏洞分析与复现
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论