前言
1、 Redis因配置不当可以未授权访问,很容易被攻击者恶意利用。如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录、控制服务器,引发重要数据泄露或丢失,严重威胁用户业务和数据安全,风险极高,业界将此漏洞定位为高危漏洞。
2、 当前业界已暴出多起因Redis漏洞导致主机被入侵、业务中断、数据丢失的安全事件,请用户务必警惕该漏洞的严重危害,防止造成无法挽回的损失。
看到一个公众号的作者写到最近面试老是遇到Redis的问题,所以我这里也记录一下
因为在学习过程中遇到一些奇奇怪怪的问题,所以持续更新….
笔记
Redis属于NoSql数据库
关于Redis的理解主要参考:
https://www.cnblogs.com/testfan2019/p/11008297.html
Redis未授权漏洞
Redis的端口是6379
我安装的版本是Redis 4.0.6
这里测试利用
1 | auxiliary/scanner/redis/file_upload #该exp功能为上传本地的文件到目标服务器。 |
在靶机中搭建好Redis服务器后。
枚举爆破密码
测试密码的可用性
使用auxiliary/scanner/redis/file_upload
当靶机的22号端口是开启的,并且权限够大的情况下,我们上传我们的公钥,然后使用我们的私钥进行ssh连接
因为靶机的权限不够,所以我就写到/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 | 1.本地编译好外部扩展即so文件 |
这里实际上有个疑问就是:为何不在目标机器上直接保存转译好的so文件,而是使用主从复制的方式?
4.redis外部拓展的利用
1 | redis外部拓展可以加载自己想要的任何东西,应用也十分广泛,不仅仅是执行命令。 |
关于漏洞的详情在Redis 基于主从复制的 RCE 利用方式里有详细介绍
复现参考:Redis基于主从复制的RCE 4.x/5.x 复现
docker的基本使用:docker基本使用教程
拉取docker后,下载exp和exp.so
执行exp:
后记
参考文章: