Redis漏洞利用及主从复制getshell

前言

1、 Redis因配置不当可以未授权访问,很容易被攻击者恶意利用。如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录、控制服务器,引发重要数据泄露或丢失,严重威胁用户业务和数据安全,风险极高,业界将此漏洞定位为高危漏洞。
2、 当前业界已暴出多起因Redis漏洞导致主机被入侵、业务中断、数据丢失的安全事件,请用户务必警惕该漏洞的严重危害,防止造成无法挽回的损失。

看到一个公众号的作者写到最近面试老是遇到Redis的问题,所以我这里也记录一下

因为在学习过程中遇到一些奇奇怪怪的问题,所以持续更新….

笔记

Redis属于NoSql数据库

关于Redis的理解主要参考:

https://www.cnblogs.com/testfan2019/p/11008297.html

Redis未授权漏洞

redis未授权漏洞和主从复制rce漏洞利用

Redis的端口是6379

我安装的版本是Redis 4.0.6

image-20200503152622464

这里测试利用

1
2
3
auxiliary/scanner/redis/file_upload   #该exp功能为上传本地的文件到目标服务器。
auxiliary/scanner/redis/redis_login   #该exp功能是对redis的密码进行枚举,亲测速度很快。
auxiliary/scanner/redis/redis_server #该exp功能是验证枚举或者其他手段得到的redis密码是否正确,该功能会执行一个info命令并返回执行结果。

在靶机中搭建好Redis服务器后。

image-20200503153144891

枚举爆破密码

测试密码的可用性

image-20200503153407472

使用auxiliary/scanner/redis/file_upload

当靶机的22号端口是开启的,并且权限够大的情况下,我们上传我们的公钥,然后使用我们的私钥进行ssh连接

image-20200503173633722

因为靶机的权限不够,所以我就写到/tmp中仅做试验。

写公钥的操作可以参考文章:

https://www.freebuf.com/column/170904.html

https://www.cnblogs.com/cute-puli/p/10870885.html

写ssh公钥有两个要求:(1)redis以root用户运行 (2)ssh端口开放并且权限够大

那么我们能直接使用ssh登陆

参考文章:https://mp.weixin.qq.com/s/ORVca1YlDIp8W02xCZ_mlA

持续更新……

渗透Redis一般就是写ssh,写crontab,最作死的就是写shadow

因为还没学习完,所以详情先看参考文章。

Redis主从复制RCE

随着现代的服务部署方式的不断发展,组件化成了不可逃避的大趋势,docker就是这股风潮下的产物之一,而在这种部署模式下,一个单一的容器中不会有除redis以外的任何服务存在,包括ssh和crontab,再加上权限的严格控制,只靠写文件就很难再getshell了,在这种情况下,我们就需要其他的利用手段了。

然后关于Redis主从复制的一些问题,REDIS主从复制的疑问

1.redis主从复制

1
什么是主从复制呢?跟所有的数据库的主从复制一样,为了备份和提高性能。有一台主服务器,n台从服务器,从服务器会实时备份主服务器数据。

2.redis4.x以上外部拓展

1
在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在redis中实现一个新的Redis命令。

3.redis主从复制getshell过程

1
2
3
4
5
6
7
1.本地编译好外部扩展即so文件
2.把so文件转码存入本地redis数据库
3.到目标服务器上设置主从关系,主服务器指定我们的本地机子
4.待同步后,设置备份路径和备份文件名(xx.so)
5.开始同步,备份数据库
6.然后加载备份数据库
7.然后就可以通过redis执行命令反弹shell了

这里实际上有个疑问就是:为何不在目标机器上直接保存转译好的so文件,而是使用主从复制的方式?

4.redis外部拓展的利用

1
2
3
redis外部拓展可以加载自己想要的任何东西,应用也十分广泛,不仅仅是执行命令。
1.后门的制作
2.绕过一些无法执行命令的场景(如php_disable_fuction)

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

关于漏洞的详情在Redis 基于主从复制的 RCE 利用方式里有详细介绍

复现参考:Redis基于主从复制的RCE 4.x/5.x 复现

docker的基本使用:docker基本使用教程

拉取docker后,下载exp和exp.so

执行exp:

image-20200505214034024

后记

参考文章:

linux 定时任务 crontab 反弹 shell

https://mp.weixin.qq.com/s/ungjainqdPhA_dDOOMKn4Q

Author: 我是小吴啦
Link: http://yoursite.com/2020/05/03/Redis%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.