Skip to content

Redis未授权访问

漏洞描述

Redis 默认配置下,绑定在 0.0.0.0:6379, Redis服务会暴露到公网上,默认未开启认证下,导致任意用户未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法,成功在 Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器。

漏洞危害

(1)攻击者无需认证访问到内部数据,可能导致敏感信息泄露,也可以恶意执行flushall来清空所有数据;

(2)攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件;

(3)如果Redis以root身份运行, 攻击者可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。

漏洞验证

1、 利用条件

1)redis服务以root账户运行
2)redis无密码或弱密码进行认证
3)redis绑定在0.0.0.0公网上

2、 漏洞验证

1) redis无密码认证
2) 远程未授权访问,info读取敏感信息
3) 其他利用方式
        写入ssh公钥,免密登录
        利用crontab反弹shell等

修复建议

1、 设置本机访问或者指定主机访问redis,修改redis.conf中bind配置

2、 iptables策略仅允许指定的IP来访问Redis服务

shell
iptables -A INPUT -s x.x.x.x -p tcp --dport 6379 -j ACCEPT

3、 设置访问密码 (需要重启redis才能生效), redis.conf 中找到“requirepass”字段添加密码。

4、 最小权限运行redis,修改Redis服务运行账号 (需要重启redis才能生效),以较低权限账号运行Redis服务,并禁用该账号的登录权限。