Redis 未授权访问漏洞复现

2022/03/01 安全漏洞 共 1717 字,约 5 分钟

前言

漏洞危害: Redis默认情况下,会绑定在0.0.0.0:6379(在redis3.2之后,redis增加了protected-mode,在这个模式下,非绑定IP或者没有配置密码访问时都会报错),如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源ip访问等等,这样将会将Redis服务暴露在公网上,如果在没有设置密码认证(默认为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。攻击者在未授权访问Redis的情况下,利用Redis自身的提供的config命令,可以进行写文件操作,攻击者还可以成功将自己的ssh公钥写入目标服务器的/root/.ssh文件的authotrized_keys 文件中,进而可以使用对应私钥直接使用ssh服务器登录目标服务器。

漏洞级别:高危 影响范围: Redis 2.x,3.x,4.x,5.x

漏洞危害:

(1) 攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行flushall来清空所有数据

(2) 攻击者可通过eval执行lua代码,或通过数据备份功能往磁盘写入后门文件

(3) 如果redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录目标服务器

环境搭建

打开漏洞平台,开启环境 http://vulfocus.io/#/dashboard

漏洞复现

2.1下载redis-4.0.10
wget http://download.redis.io/releases/redis-4.0.10.tar.gz

tar -zxvf redis-4.0.10.tar.gz
cd redis-4.0.10
make  && make install

测试redis客户端是否安装完成 redis-cli -h 靶机IP -p 靶机端口

利用方式1:写入webshell

利用条件:目标开启了web服务器,并且知道web路径(可以利用phpinfo或者错误暴路径等),还需要具有读写增删改查权限

2、把shell写入到网站根目录下(/var/www/html/)

3、在靶机上查看是否写入了1.php文件

4、浏览器访问http://192.168.10.139/1.php,发现在目标靶机成功写入webshell

5、写入一句话木马

6、菜刀连接, 注:在ubuntu环境测试,菜刀一直解析不到上传的木马

ssh-keygen -t rsa cd /root/.ssh/

利用方式2:通过写入SSH公钥实现SSH登录

原理就是在数据库中插入一条数据,将本机的公钥作为value,key值随意,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys,把缓冲的数据保存在文件里,这样就可以在服务器端的/root/.ssh下生一个授权的key。

1、首先在攻击机(kali)上生成ssh公钥

2、将公钥写入key.txt文件(前后用\n换行,避免和redis里其他缓存数据混合)。

(echo -e "\n";cat id_rsa.pub;echo -e "\n")>key.txt

3.再把key.txt文件内容写入redis缓冲


cat /root/.ssh/key.txt | redis-cli -h 123.58.236.76 -p 39745  -x set pub
  1. 设置redis的dump文件路径为/root/.ssh且文件名为authorized_keys,注意: redis 可以创建文件但无法创建目录,所以,redis 待写入文件所在的目录必须事先存在。出现如下图错误是因为目标靶机不存在.ssh目录(默认没有,需要生成公、私钥或者建立ssh连接时才会生成)

5.当目标使用过ssh服务之后,就会产生.ssh目录了,然后进行如下操作

6.测试是否可以通过ssh登录目标服务器,成功登录

redis 主从复制 RCE

Redis 基于主从复制的RCE利用方式

https://inhann.top/2021/09/14/redis_master_slave_rce/

https://www.freebuf.com/articles/web/325035.html

文档信息

Search

    Table of Contents