本系列为 redis 安全专题,从漏洞原理、攻击利用到生产加固,循序渐进讲解 redis 相关安全风险。内容包含未授权访问、主从复制 rce、ssrf+gopher 内网攻击、redis 命令注入以及生产环境全套加固方案。适合网络安全初学者、运维工程师、web 安全方向学习者阅读,所有案例仅用于安全原理学习,请勿在未授权环境进行测试。
摘要:redis 未授权访问是运维高频踩坑的安全漏洞,因配置不当无密码且公网开放 6379 端口,攻击者可直接连接 redis 写入 webshell、ssh 公钥拿下服务器。本文通俗讲解漏洞成因、攻击手段、检测方法与完整防护配置。
前言
redis 是当下最热门的内存数据库,很多项目都会用到。但大量服务器因为偷懒不改默认配置,直接把 6379 端口暴露在公网,不需要账号密码,任何人都能连接操作数据库,这就是 redis 未授权访问漏洞。
很多人以为漏洞只是能看数据,实际上攻击者可以写入 ssh 公钥拿到服务器权限、写入网站木马、篡改业务缓存数据,危害非常严重。
一、漏洞产生原因
redis 默认配置有两个坑:
- 默认没有密码(
requirepass为空),保护模式关闭; - 默认监听
0.0.0.0,监听本机所有网卡,公网可以直接访问 6379 端口。
只要满足这两点,攻击者直接用redis-cli -h 目标ip -p 6379就能连上 redis,不需要任何认证。
注意:不是 redis 代码本身有 bug,完全属于配置不当导致的安全缺陷。
二、攻击者能做什么?3 种常见攻击方式
1. 写入 web 一句话木马(webshell)
如果 redis 和网站在同一台服务器,并且 redis 进程有写入网站目录权限。 攻击者修改 redis 持久化 rdb 文件的保存路径,把一句话木马存入 redis,执行save落地成 php 文件,访问网页就可以控制网站。
config set dir /var/www/html config set dbfilename shell.php set x "<?php @eval($_post['cmd']);?>" save
限制前提:必须知道网站物理路径,并且 redis 有权限写入该目录。
2. 写入 ssh 公钥,直接登录服务器
这是最经典的利用手法。 攻击者将自己的 ssh 公钥写入 redis,保存到 root 家目录.ssh/authorized_keys,之后直接用 ssh 免密登录服务器,拿下服务器最高权限。
3. 恶意清空数据,业务瘫痪
直接执行flushall,一键清空 redis 里面全部缓存数据,网站直接报错、业务雪崩。
三、怎么快速检测自己服务器是否中招
本地安装 redis-cli,执行命令:
redis-cli -h 你的服务器ip -p 6379
如果直接连接成功,不需要输入密码,说明存在未授权访问漏洞。 执行config get requirepass查看是否设置密码。
四、生产环境防护方案(必做)
- 开启 redis 密码认证 修改
redis.conf,设置强密码: requirepass 你的复杂密码
重启 redis,客户端连接必须auth 密码才能操作。
- 绑定内网 ip,不要监听 0.0.0.0
bind 127.0.0.1
只允许本机访问 redis;如果多服务器使用,只填写业务服务器内网 ip,拒绝公网访问。
- 开启保护模式(protected-mode yes) redis3.2 + 默认开启,不要手动关闭。
- 防火墙限制端口 使用 firewalld/iptables,只放行可信内网 ip 访问 6379,公网直接封禁 6379 端口。
- 低权限运行 redis 禁止使用 root 账号启动 redis-server,即使被入侵,攻击者也很难拿到服务器 root 权限。
- 重命名高危命令 在 redis.conf 禁用危险命令,防止攻击者修改配置、持久化写文件:
rename-command config "" rename-command flushall "" rename-command flushdb "" rename-command save "" rename-command bgsave ""
五、总结
redis 未授权访问是运维最常踩的安全大坑,没有复杂漏洞利用链,工具简单,脚本小子都能批量扫描攻击。 记住核心安全准则:数据库绝对不能直接裸奔到公网,必须做身份认证 + 网络访问限制。
免责声明:本文仅用于安全学习,禁止未经授权对任何服务器进行测试攻击,违法必究。
到此这篇关于redis未授权访问漏洞怎么检测和修复?一文看懂6379端口安全风险的文章就介绍到这了,更多相关redis未授权访问漏洞内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论