Redis没设权限咋整,漏洞利用那些事儿和实操方法分享
- 问答
- 2026-01-10 05:25:24
- 4
主要综合自网络安全社区常见案例、渗透测试经验分享以及部分技术博客的讨论,如FreeBuf、CSDN等平台上的相关文章)
Redis没设权限,这事儿在互联网上可太常见了,很多开发或者运维小哥为了图省事,或者在测试环境里搞惯了,直接把Redis服务往服务器上一丢,绑定在0.0.0.0(意思是所有IP都能连),然后连个密码都不设,就以为万事大吉了,这简直就是给黑客们敞开了一扇金光闪闪的大门,下面我就聊聊,这扇门开了之后,别人能怎么进来“溜达”,以及咱们知道了之后该咋把门关上。
漏洞利用那些事儿:黑客会怎么玩?
当黑客用扫描工具(比如傻蛋的Masscan、老牌的Nmap)在网络上扫一扫,发现某个服务器的6379端口(Redis默认端口)开着,并且可以直接连上去,不需要密码,他们的眼睛可就亮了,常规操作有这么几步:
-
信息泄露,直接看光光:这算是最轻的了,黑客连上你的Redis,可以用像
keys *这样的命令,把你Redis里存的所有数据看个底朝天,万一里面存了用户的敏感信息、网站的Session、甚至是数据库的密码,那后果可想而知,来源里提到过一个案例,某公司就把核心业务的配置信息明文放在没权限的Redis里,被人家直接拖库了。 -
写入SSH公钥,直接拿下服务器:这是非常经典也非常致命的一招,前提是Redis服务是以某个系统用户(比如root或者一个有权限的用户)运行的,黑客会先在本地生成一对SSH密钥(公钥和私钥),他通过没权限的Redis,执行一系列命令,把自己的公钥写入到目标服务器上Redis运行用户的
~/.ssh/authorized_keys文件里,这个文件是干嘛的?SSH免密登录就靠它!一旦写进去了,黑客就可以直接用对应的私钥,像回自己家一样SSH登录到你的服务器,获得最高权限(如果Redis是root运行的话),很多关于Redis未授权访问的文章都重点提到了这种利用方式。 -
写入Webshell,控制网站:如果这台服务器正好还是个Web服务器,Redis的数据目录(
dir配置项)又恰好有权限被Web应用访问到(比如在/var/www/html下面),那黑客就能更骚了,他可以通过Redis的config set命令修改数据存储路径和数据库文件名,然后把自己的一句话木马(Webshell)当作一个键值对存进Redis,再让Redis把这个数据持久化到一个.php或.jsp文件里,这样一来,网站上就凭空多了一个后门文件,黑客通过浏览器访问这个文件,就能在服务器上执行任意命令,有来源提到,这种手法在渗透测试中屡试不爽。 -
挖矿木马和僵尸网络:这是最让人头疼的,黑客拿下服务器权限后,往往不是立刻搞破坏,而是把它变成自己的“肉鸡”,他们会下载并运行挖矿程序,用你的CPU和电费给他们挖加密货币;或者把你的服务器拉进僵尸网络(Botnet),用来发动DDoS攻击、发送垃圾邮件等,你的服务器会变得异常卡慢,带宽被占满,成了别人的免费资源。

-
主从复制攻击:这是一种更高级的技巧,Redis支持主从复制模式,黑客可以把自己控制的恶意Redis服务器设置成目标Redis的“从库”(Slave),他可以在自己的恶意服务器上加载恶意的Redis模块(so文件),通过复制关系,让目标Redis也加载并执行这个模块中的恶意代码,从而直接实现远程代码执行,这种攻击方式在几年前被提出来后,让Redis未授权访问的危害性又上了一个台阶。
实操方法分享:咋整?赶紧补救!
知道了黑客的手段,咱们防护起来就有的放矢了,如果你发现自己或者公司的Redis存在这种问题,别慌,按下面的步骤来:
-
第一要务:设密码! 这是最基本也是最有效的,修改Redis的配置文件(通常是redis.conf),找到
requirepass这一行,取消注释,后面跟上一个足够复杂(长且无规律)的密码,然后重启Redis服务,这样一来,再连接Redis时,就需要先通过AUTH命令认证密码了,来源中几乎所有安全建议都把这一条放在首位。
-
禁止外网访问,修改绑定IP:除非有绝对必要,否则不要让Redis暴露在公网上,在配置文件里,把
bind选项从0.0.0改成0.0.1(只允许本机访问),如果其他内网机器需要访问,可以绑定内网IP,配合防火墙规则,只允许特定的IP地址连接6379端口。 -
以低权限用户运行Redis:千万不要用root用户启动Redis服务!专门创建一个只能用于运行Redis的系统用户(比如叫
redis),并确保这个用户没有登录shell(比如设置为/bin/false),并且权限被严格控制,这样即使被入侵,黑客获得的权限也是受限的,想写SSH公钥也写不进去。 -
重命名或禁用危险命令:在配置文件里,可以用
rename-command来给一些高危命令改个名,或者直接禁用它。rename-command FLUSHALL "" # 直接禁用清空所有数据的命令 rename-command CONFIG "a_very_long_random_string_you_wont_guess" # 给CONFIG命令改个超级难猜的名字 rename-command EVAL "another_long_string"这能有效防范上面提到的通过CONFIG命令写Webshell等攻击,不过要注意,这可能会影响一些正常的运维操作。
-
定期更新Redis版本:保持Redis版本更新到最新稳定版,因为新版本通常会修复已知的安全漏洞,新版本对某些危险操作可能有更好的控制。
Redis性能强大,但安全配置绝对不能马虎,一个没设权限的Redis,就像没锁门的保险箱,放在人来人往的大街上,希望上面的漏洞利用故事和实操方法能给大家提个醒,赶紧去检查一下自己的Redis服务是不是还“裸奔”着呢。
本文由度秀梅于2026-01-10发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/77875.html
