位置:芙蓉财经网 >> Bitget

sql与用友问题(用友sql server不存在或拒绝访问)

2023年06月02日 08:46

欧易okx交易所下载

欧易交易所又称欧易OKX,是世界领先的数字资产交易所,主要面向全球用户提供比特币、莱特币、以太币等数字资产的现货和衍生品交易服务,通过使用区块链技术为全球交易者提供高级金融服务。

APP下载   官网注册

1、前言


用友GRP-U8 R10行政事业财务管理软件是用友公司专注于电子政务事业,基于云计算技术所推出的新一代产品,是我国行政事业财务领域专业的财务管理软件。近日,百度云安全团队监测到有研究人员披露了用友GRP-U8任意SQL语句执行漏洞的POC,并可利用SQL SERVER数据库特性执行系统命令,我们对漏洞进行了复现和分析,发现该漏洞危害严重,请广大用户及时进行升级修复。


2、环境搭建


通过搜索发现用友GRP-U8存在3个版本,分别为B版、C版、G版,其中B版,C版和G版模块数量、结构不一样,B版和C版是CS结构,G版可以用浏览器登录。我们需要下载G版进行安装。


用友GRP-U8任意SQL语句执行漏洞分析


安装完成后需要利用自带的工具配置SQL SERVER数据库,并且设置Tomcat的端口等信息并启动。


用友GRP-U8任意SQL语句执行漏洞分析


安装完成后,目录结构如下,其中webserver为tomcat目录,webapps为Web目录。


用友GRP-U8任意SQL语句执行漏洞分析


3、漏洞分析


我们根据网上披露的POC来进一步分析代码,先到webapps/WEB-INF/web.xml中到”Proxy” servlet对应的类为com.anyi.midas.MidasProxy。


用友GRP-U8任意SQL语句执行漏洞分析


跟进到com.anyi.midas.MidasProxy,POST请求进入doPost方法,并随后调用了Dispatcher的Process方法处理请求。


用友GRP-U8任意SQL语句执行漏洞分析


跟进到Dispatcher类的Process方法,37行创建了RequestInfo的对象rqi,并在45行调用了rqi对象的processRequestInfo方法来处理请求。


用友GRP-U8任意SQL语句执行漏洞分析


进入processRequestInfo方法,73行获取请求中ec参数,当ec为空时,加密选项为false;因此,为了方便编写POC,ec参数需要置空,97行调用XMLTools类将dp参数中的xml内容进行解析,方便后续直接获取xml内容中各个参数的值。


用友GRP-U8任意SQL语句执行漏洞分析


返回到Dispatcher类的Process方法继续往下看,解析xml后可通过rqi.getFunctionName()获取标签<R9FUNCTION>下NAME标签的值作为函数名,并且根据不同的函数名进入不同的条件语句,而POC中的函数名为AS_DataRequest,理所当然的跟进到63行,接下来程序调用了com.anyi.midas.access.DataModule的as_DataRequest方法。


用友GRP-U8任意SQL语句执行漏洞分析


跟进看看as_DataRequest方法是如何定义的,其中参数providerName来自XML的PARAM标签下ProviderName标签的值,参数data则为Data标签的值,均为外部可控值。64行调用了ProviderFactory类的getProvider方法。


用友GRP-U8任意SQL语句执行漏洞分析


跟进到ProviderFactory类,POC中ProviderName值为DataSetProviderData,因此返回了QueryProvider类的对象;实际上,经过分析SQLProvider类也可导致任意SQL语句执行,此处ProviderName可为SQLProvider、DataSetProviderData或者置空(为空也会返回SQLProvider对象)。


用友GRP-U8任意SQL语句执行漏洞分析


跟进到QueryProvider类的dataRequest方法,该方法调用了DBTools类的executeSQL方法。


用友GRP-U8任意SQL语句执行漏洞分析


跟进executeSQL方法发现,145行调用了rqi对象中java.sql.Connection对象创建SQL连接对象stmt,sqlType默认为”query”进入147行,调用了executeQueryAction_Buffer方法。


用友GRP-U8任意SQL语句执行漏洞分析


跟进到executeQueryAction_Buffer方法,199行判断数据库是否为oracle,GRP-U8默认为SQL SERVER数据库,因此进入else语句后,206行通过stmt对象调用了executeQuery方法执行了可控的sql参数,并且整个过程中没有SQL语句拼接,可导致任意SQL语句执行。


用友GRP-U8任意SQL语句执行漏洞分析


而SQL SERVER可通过xp_cmdshell语句扩展存储过程将命令字符串作为操作系统命令shell执行,因此该漏洞危害严重,建议用户及时修复。


用友GRP-U8任意SQL语句执行漏洞分析


用友GRP-U8任意SQL语句执行漏洞分析


参考链接:

https://nosec.org/home/detail/4561.html

推荐阅读

山姜子的图片(山姜的功效与作用及食用方法)
腊肉怎么吃前怎么处理方法(腊肉怎么吃前怎么处理方法论)
用友记账凭证(用友记账凭证错误的更正方法)
贵买股票(股票买贵了是应该割肉还是低价买入摊薄成本)
国债期货转换期权的方法(国债期货转换期权的方法有)
股指期货交易方法 股指期货 交易方式
用友hr考勤管理使用方法(用友hr系统怎么样)
简单粗暴炒期货 最简单的炒期货方法
比特币平台互转 比特币平台互转方法
分析期货交易与股票交易区别?分析期货交易与股票交易区别的方法

标签: 行调用 方法 调用

文章来源: summer
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至405936398@qq.com 举报,一经查实,本站将立刻删除。
相关资讯
比特币的网络虚拟商品属性 比特币的网络虚拟商品属性是什么
比特币的网络虚拟商品属性 比特币的网络虚拟商品属性是什么 1970-01-01

跟进到executeQueryAction_Buffer方法,199行判断数据库是否为oracle,GRP-U8默认为S...

比特币技术专家,比特币技术专家是谁
比特币技术专家,比特币技术专家是谁 1970-01-01

跟进到executeQueryAction_Buffer方法,199行判断数据库是否为oracle,GRP-U8默认为S...

股指期货 多头 股指期货多头
股指期货 多头 股指期货多头 1970-01-01

跟进到executeQueryAction_Buffer方法,199行判断数据库是否为oracle,GRP-U8默认为S...

比特币美元架格?比特币美元架格图
比特币美元架格?比特币美元架格图 1970-01-01

跟进到executeQueryAction_Buffer方法,199行判断数据库是否为oracle,GRP-U8默认为S...

国内期货大公司排名2015年(中国期货市场中心是做什么的)
国内期货大公司排名2015年(中国期货市场中心是做什么的) 1970-01-01

跟进到executeQueryAction_Buffer方法,199行判断数据库是否为oracle,GRP-U8默认为S...

比特币微信段子,比特币 段子
比特币微信段子,比特币 段子 1970-01-01

跟进到executeQueryAction_Buffer方法,199行判断数据库是否为oracle,GRP-U8默认为S...