攻击者未经授权可以访问数据库中的数据,从而盗取用户数据,造成用户信息泄露。
1.0,2.0,2.1,2.3,2.5,2.6,2.65,2.7,3.0,3.1,3.2,3.5,3.6,3.6sp,5.0,5.0sp
漏洞位于MeasureQueryFrameAction
接口处,该文件位于nc.ui.iufo.query.measurequery.MeasureQueryFrameAction
处。这个接口通过iufo/com.ufida.web.action.ActionServlet
接口进行调用,所以会有人误以为是ActionServlet
接口的漏洞。调用类之后,加载类的execute
方法,后边再传递该函数需要的参数,完成功能函数调用。这是用友自己设定的一种调用方式
调用方法。
这部分就不细说了。接着来到漏洞所在的接口。
该接口有两个函数,都是同一个参数,存在sql注入。doRefresh
方法,直接来到这个函数。从请求中获取TableSelectedID
参数赋值给select
变量。最终调用nc.ui.iufo.query.measurequery.MeasureQueryBO_Client#loadQueryForRefresh
通过一步步跟进,最终来到nc.bs.iufo.query.measurequery.MeasureQueryDMO#loadQueryById(java.lang.String[])
函数。该函数接收的参数就是传入的参数,直接拼接进了sql语句。
略
构造payload:/service/~iufo/com.ufida.web.action.ActionServlet?action=nc.ui.iufo.query.measurequery.MeasureQueryFrameAction&method=doRefresh&TableSelectedID=1%27);WAITFOR+DELAY+%270:0:5%27--
复现结果
该漏洞主要是未对用户传入的参数进行任何过滤,导致SQL注入漏洞。官方在7月17发布了补丁,这里验证传入参数是否包含单引号'
。
9 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!