用友U8cloud ReleaseRepMngAction接口 SQL注入漏洞分析
type
status
date
slug
summary
tags
category
icon
password
AI summary
漏洞分析
根据官网给出的补丁可以迅速定位到漏洞点位于:
pubiufoiufoserver.jar!nc.ui.iufo.release.ReleaseRepMngAction#updateDelFlag()

这里对
getTableSelectedIDs()
获取的参数值逐个传入SQL注入的WAF检查,下面是修复前的代码。通过
this.getTableSelectedIDs()
获取TableSelectedID
参数的值,以逗号分隔,返回字符数组。跟进
updateRelRepDelFlag()
继续跟进

这里把传入的字符数组拼接成SQL语句,规则如下:
- 最前面和最后面添加
(
和)
- 把数组每个值添加单引号,然后以逗号分隔再拼起来
那么传入
1
进去,得到('1')
,传入进去1,2
进去,得到的是('1','2')
构造SQL语句
通过
')
闭合最左边的单引号和括号,然后1=DBMS_PIPE.RECEIVE_MESSAGE(1,5)
改为1=DBMS_PIPE.RECEIVE_MESSAGE('1,5')
闭合中间的2个单引号,最后--空格
注释最后面的')
传入
TableSelectedID=1') and 1=DBMS_PIPE.RECEIVE_MESSAGE('1,5')--
得到的SQL语句是

路由分析
用友U8cloud的Action类都由
com.ufida.web.action.ActionServlet
处理,通过?action=nc.ui.iufo.release.ReleaseRepMngAction&method=updateDelFlag
来确定具体的Action和方法。具体调用过程不再分析。调用堆栈如下:
最终PoC如下:

成功延时注入!
Loading...