Redis 介绍
Redis 是非关系型数据库系统,没有库表列的逻辑结构,仅仅以键值对的方式存储数据。
Redis 数据库经常用于Web 应用的缓存。
Redis 可以与文件系统进行交互。
Redis 监听TCP/6379
漏洞原理
- Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上
- 如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。
- 攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法,可以成功在 Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器
漏洞危害
漏洞影响版本
Redis 2.x,3.x,4.x,5.x
Redis未授权主要是配置不当造成的所以不管哪个版本只要配置有问题就造成危害
Redis环境安装
官网地址:Redis
下载地址:Index of /releases/
漏洞复现
复现环境
攻击机kali(安装有redis3.2.0,192.168.110.236)
靶机(redis3.2.11 192.168.91.119)
攻击方法
要成功的利用Redis未授权访问的漏洞需要如下几点
- redis服务以root账户运行
- redis无密码或弱密码进行认证
- redis监听在0.0.0.0公网上或内网中
首先可以使用Kali Nmap的检测脚本 对 Redis进行未授权检测
nmap -A -p 6379 –script redis-info 192.168.91.119
连接数据库查看 info, 确定未授权访问
redis-cli -h 192.168.91.119 -p 6379
Linux 获取权限
SSH公钥
生成密钥在攻击机中
ssh-keygen -t rsa
将公钥导入key.txt文件(前后用\n\n换行,避免和Redis里其他缓存数据混合)
再把 key.txt 文件内容写入目标主机的缓冲里
再通过设置参数,写入指定文件
如上则为成功写入SSH密钥文件,攻击机可无需密码远程连接目标主机SSH
WebShell
当SSH不允许远程登录时,也可以通过写入 Web目录控制目标主机
定时任务
也可以通过写入定时任务反弹Shell,获取权限
攻击机监听端口
nc -lvvp 9999
Webshell
攻击成功的前提为:需要准确的知道Web目录位置
可通过 phpinfo 或者 网站报错得知
这里测试的目标路径为:/var/www/html
成功写入木马,并可连接控制服务器