1.redis简介
redis是一个 非常快速 的,开源的,支持网络,可以基于内存,也可以持久化的日志型, 非关系型
的键值对数据库。并提供了多种语言的api。有java,c/c++,c#,php,JavaScript,perl,object-c,python,ruby,erlang等客户端,使用方便。
2.未授权访问漏洞的成因和危害
1.漏洞定义
redis未授权访问漏洞是一个由于redis服务器版本较低,并未设置登陆密码所导致的漏洞,攻击者可以直接利用redis服务器的ip地址和端口完成对redis服务器的远程登陆,对目标服务器完成后续的控制和利用。
2.漏洞成因
-
redis为4.x/5.x或以前的版本
-
redis绑定在0.0.0.0:6379,并且没有添加防火墙规则来避免其他非信任来源ip的访问,直接暴露在公网
-
没有设置密码认证,可以免密码远程登录redis服务
3.漏洞危害
-
攻击者可以通过redis命令向目标服务器写入计划任务,让服务器主动连接攻击者,实现反弹shell,完成对服务器的控制
-
攻击者可以通过redis命令向网站目录写入webshell,完成对目标网站服务器的初步控制。即可以通过redis服务间接利用http服务。
-
当redis以root身份运行时,攻击者可以给root用户写入ssh公钥文件,直接通过ssh远程登录受害服务器
3.漏洞复现
0.实验准备
实验环境,centos7两台,需要安装如下工具
yum -y install gcc gcc-c++ make vim net-tools nc wget
使用redis6.2.7版本,攻击机为redisC,靶机为redisS
两台centos关闭selinux安全子系统,iptables和firewalld。
靶机配置redis bind为0.0.0.0
#bind默认为 127.0.0.0 ,表示绑定的本机ip,修改为0.0.0.0表示任意主机可以连接
#这个改动是临时的,没有写入配置文件
127.0.0.1:6379&g