Redis未授权访问漏洞复现与利用

Redis未授权访问漏洞复现与利用
最新回答
最终心酸

2026-10-21 17:06:39

Redis默认情况下,会绑定在0.0.0.0:6379,若未实施防火墙策略,使其直接暴露于公网,且未配置密码认证(默认为空),将导致任何能访问目标服务器的用户未授权访问Redis及读取其数据。攻击者利用Redis的config命令,可进行写文件操作,如将SSH公钥写入目标服务器的/root/.ssh文件夹的authorized_keys文件中,从而使用对应私钥直接SSH登录目标服务器。

漏洞产生条件包括:Redis绑定于公网IP且未实施安全策略,以及未设置密码认证。漏洞危害主要体现在攻击者无需认证即可访问内部数据,可能造成敏感信息泄露,甚至执行flushall命令清空所有数据,通过EVAL执行lua代码或备份功能往磁盘写入后门文件。最严重情况下,若Redis以root身份运行,攻击者可写入SSH公钥文件,直接通过SSH登录受害服务器。

根据ZoomEye探测,全球无验证可直接利用Redis分布情况如下:全球无验证可直接利用Redis TOP 10国家与地区。

实现漏洞复现:下载并安装Redis测试版本(Ubuntu镜像),安装完毕后启动服务,克隆虚拟机,创建攻击机与靶机(IP地址分别为192.168.0.105与192.168.0.104)。攻击机使用redis-cli连接靶机的redis服务,验证服务对公网开放且未启用认证。

利用redis写入webshell的步骤如下:靶机redis链接未授权,攻击机可连接并未验证登录;开启web服务器,利用phpinfo或错误爆路径爆露目录,确保具有文件操作权限。将shell写入/home/bmjoker目录,注意使用换行符确保文件执行性。

针对以root身份运行的Redis,可利用漏洞获取root权限。在靶机上开启redis服务,创建ssh公钥存放目录,攻击机生成公钥和私钥(密码设置为空),连接靶机redis服务,将公钥写入。检查公钥文件,成功写入后,攻击机使用私钥SSH登录redis服务器。

利用crontab反弹shell:攻击者服务器监听端口,连接redis后写入反弹shell代码,设置计划任务目录及文件名,过一分钟左右即可获取shell。

为测试是否存在未授权或弱口令情况,可使用自动化测试脚本。

解决方案包括:采用绑定IP的方式限制访问(在redis.conf文件中修改bind配置),设置密码以提供远程登录。具体步骤为:在redis.conf中移除对127.0.0.1的绑定注释,并指定允许访问的IP;在requirepass配置下修改密码。这样可一定程度上防止未授权访问,确保服务安全运行。