重生之我是赏金猎人(六)-强行多次FUZZ发现某厂商SSRF到redis密码喷洒批量反弹Shell
0x00 前言
最近BugBounty挖了不少,但大多数都是有手就行的漏洞,需要动脑子的实属罕见
而之前就遇到了一个非常好的案例,故作此文
0x01 对目录批量FUZZ,发现一处隐蔽接口
挖某大厂已经挖了快两个周了,期间因为公司业务比较繁忙,最近一直没挖。
但是一直在用ffuf挂着字典对厂商资产进行批量目录扫描,今天上服务器看了下扫描结果,就出货了
接口地址为:https://xxx.xxxx.com/xxxx/start
我们直接对其进行访问
发现该接口给我们提供了一些可以使用的接口链接
我们逐个测试拼接接口后,发现一个名为face_xxxx的接口有戏
0x02 FUZZ传参格式+参数
访问接口,提示Method Not Allow,405错误,那么很显然,我们得换POST传参
POST随便传个参过去,发现接口提示"Request error, content-type was unsupported"
很好,继续FUZZ content-type header(记得把payload_processing自动编码给关掉)
FUZZ出来application/json的content-type头可用,那么很简单了,构造JSON数据,继续FUZZ JSON数据参数
0x03 SSRF无脑到手
参数为image_url,稍有经验的朋友就可以借此判断出,很可能这个参数是加载远程图片的
直接进行SSRF测试
服务器收到了请求,经测试gopher,dict,http等常规协议都可以使用~
之前通过各种域名二级目录或根目录的spring泄露,下载heapdump,OQL调试出redis明文密码
收集了不少该厂商内网redis的ip和密码,也了解到该厂商的内网网段
尝试利用本处SSRF完全可以批量对内网Redis进行密码喷洒+反弹shell对边界进行突破
0x04 利用gopher协议对内网脆弱网段批量Redis密码喷洒反弹Shell
普及一个知识:与未授权直接访问的redis不同,加入密码认证的redis在命令行链接时会多一个-a参数指定密码
如图所示如果不传参密码,则无法执行任何redis指令
而加入密码认证后redis,在整个RESQ协议流量中表现如下
认证过程中会多一个Auth,因此不能使用dict协议完成一连串的密码认证+写计划任务攻击
写脚本来构造gopher数据,注意把这块Auth加上,后续常规操作写计划任务反弹SHELL
利用上面挖掘到的SSRF点,配合之前自己收集到的内网redis密码和脆弱网段
直接通过intruder批量跑内网的脆弱网段redis,进行密码喷洒,喷洒一但成功,则会写入计划任务
最终功夫不负有心人,在一个网段,弹回来了十几个Shell。。。
厂商的内网Redis主机还能出网,属实是内网安全做的稀烂了。
0x05 后言
这个洞是在去年平安夜挖到的~算是圣诞贺礼啦
师傅们如果有BugBounty交流,技术交流需求,欢迎加个联系方式 QQ/VX:5470066660 ~
评论56次
这要放到平时估计都被忽略好几次了,感谢师傅分享
大佬强啊,学到了,太有耐心了
有志者事竟成,果然思路和耐心加细心才能发现新大陆。
很赞,fuzz传参格式和参数的方法学xi了,谢谢楼主师傅的分享
fuzz字典牛逼啊 强 后面ssrf加密码的redis 也是之前没仔细看过的细节,又学到 了
又学到了,真香
强啊。没试过FUZZ 总感觉不会有没耐心
大的漏洞都藏在深处,模糊测试是一种发现深度漏洞的有效途径
在整个过程中 fuzz字典起了不小作用 可以分享下字典吗
字典可以在论坛内,重生之我赏金猎人 xi列文章中找
这个太需要耐心了,有时候看到没有就pass掉了
强啊。没试过FUZZ 总感觉不会有没耐心
在整个过程中 fuzz字典起了不小作用 可以分享下字典吗
好多个文章都有fuzz 字典可以分享一下吗
参数字典在之前的文章中分享过,师傅可以找下
好多个文章都有fuzz 字典可以分享一下吗
我一般遇到这种情况用POST传,都报未验证账户。
很赞的 FUZZ 思路。但注意到一个可以做得更好的地方:利用 SSRF 扫内网 Redis 时,认证后的第一条命令是 flushall,会把 Redis 数据清空,显得不太友好
嗯嗯,多谢师傅提醒,这个截图是后续补的,flushall忘记删了,当时测试的时候也发现了这个问题,并做了删除(没发现就出事了。。。)
很赞的 FUZZ 思路。但注意到一个可以做得更好的地方:利用 SSRF 扫内网 Redis 时,认证后的第一条命令是 flushall,会把 Redis 数据清空,显得不太友好