Redis未授权访问漏洞复现及利用
一、Redis相关介绍
Redis是完全开源的,遵守BSD协议,是一个高性能的key-value数据库。
应用场景
在Java web中主要有两个应用场景:
- 存储、缓存用的数据
- 需要高速读写的场合使用它快速读写
常用语法
- 连接命令(可远程操作,需要对配置文件进行更改)
redis-cli -h <host> -p <port> -a <password>
参数 | 含义 |
---|---|
-h | 主机IP |
-P | 主机端口 |
-a | Redis服务密码 |
set key value
设置指定的key值。key为自定义的变量名;value为赋值的内容,可以为数字,字符串。
get key
获取指定的key值
keys *
获取当前数据库中所有的key
config set dir /XXX/XXX/XX
设置工作目录,必须是绝对路径,而且已经存在
config set dbfilename xxx
设置备份文件名
save
进行备份
flushall
删除所有数据
漏洞发现
-
nmap端口扫描,Redis默认端口为6379
-
fofa搜索
https://fofa.so/
-
shodan
https://www.shodan.io/
二、漏洞复现
整个过程中,使用的是Centos 7,Redis选择的是6.2.1版本。
环境搭建
Centos 7 环境配置
首先安装Apache和PHP,为后续的webshell做铺垫。
安装Apache
sudo yum -y install httpd
打开防火墙的80端口,允许访问
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload
设置开机启动
sudo systemctl enable httpd
Apache的配置文件位于:/etc/httpd/conf
中的httpd.conf
文件
配置可以解析PHP,在配置文件中添加
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch