Redis漏洞利用及防御

admin 2025-12-23 15:54:03 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文档详细介绍Redis未授权访问漏洞的利用与防御,重点演示图形化工具redis_tools_GUI的安装及功能,涵盖密码爆破、反弹Shell、WebShell写入和SSH公钥写入等攻击手法。文章通过实验展示漏洞危害,并提出设置强密码和限制监听地址等加固建议,强调安全配置的重要性。 综合评分: 87 文章分类: 渗透测试,WEB安全,安全工具,红队,漏洞POC


cover_image

Redis漏洞利用及防御

原创

dcnb

Web安全基础与实践

2025年12月22日 21:00 广东

Redis是一种高性能的内存型数据库,广泛应用于缓存、消息队列等场景。由于部分运维人员在部署Redis服务时可能未正确配置访问控制(如未设置密码、未绑定本地地址等),导致Redis服务暴露在公网环境中,进而引发未授权访问漏洞等问题。攻击者可利用该漏洞进行敏感数据读取、文件写入、计划任务植入,甚至获取服务器控制权限等攻击。

redis_tools_GUI是一款基于Python开发的Redis图形化漏洞利用工具,通过图形化界面封装了Redis未授权访问场景下的常见漏洞利用手段,降低了操作的门槛,本文档将围绕redis_tools_GUI的安装、界面功能介绍以及Redis漏洞利用演示进行展开。

1、redis_tools_GUI安装

本教材以Windows10攻击机中安装redis_tools_GUI为例进行演示。

首先访问redis_tools_GUI的下载页面(链接:https://github.com/zjeweler/redis_tools_GUI),如图1所示。

图1  win10攻击机访问redis_tools_GUI的下载页面

点击Code → Download ZIP,下载项目源码并解压至本地目录,如图2所示。

图2  win10攻击机下载并解压redis_tools_GUI

随后,进入工具解压目录,在文件路径中输入cmd进入命令行窗口,使用命令行执行以下命令安装依赖,如图3、图4所示:

pip install redis  # 用于与目标Redis服务进行通信

图3  win10攻击机进入指定目录命令窗口

图4  win10攻击机安装redis依赖

双击文件夹中的redis_tools_GUI.exe后,将弹出Redis图形化漏洞利用工具主界面,表示工具启动完成。

至此,完成redis_tools_GUI的安装。

2、redis_tools_GUI界面介绍

redis_tools_GUI主界面整体布局简洁,主要由以下几个区域组成:

2.1 目标配置区

包含目标IP、Redis端口(默认6379), 连接按钮等,关键字段说明:

(1)目标IP:目标Redis服务器IP地址。

(2)端口:Redis 服务端口,默认 6379。

(3)连接:连接Redis服务。

(4)查询信息:获取Redis 服务器的信息。

如图5所示。

图5  win10攻击机redis_tools_GUI目标配置区

2.2功能操作区

包含密码爆破、CLI控制台、计划任务反弹shell、写SSH公钥拿Shell、目录控制、写WebShell等功能,如图6所示。

图6  win10攻击机redis_tools_GUI功能操作区

功能介绍:

(1)密码爆破:选择包含多行密码的字典文件,并确保目标IP/端口已填,Redis图形化漏洞利用工具会调用多线程爆破逻辑,实时回显成功的密码与失败原因。

(2)CLI控制台:在输入框中填写原生命令,例如:

info replicationconfig get dir

支持带空格命令,必要时用双引号包裹整条指令,Redis图形化漏洞利用工具会执行任意Redis指令并查看实时回显。

(3)计划任务反弹Shell:填写你的反连IP/端口,点击写入即可,Redis图形化漏洞利用工具会生成每分钟执行的bash反弹脚本写入:

/var/spool/cron/root

实现反弹shell,攻击机监听:

nc -lvvp 7777

该攻击会覆盖服务器原有的root计划任务。

(4)写SSH公钥拿Shell:填写目标用户(root或者user等,可以自动设置路径)或直接填写绝对路径,Redis图形化漏洞利用工具会将公钥写入authorized_keys,方便后续使用ssh免密登录,攻击机执行:

ssh-keygen -t rsa(直接回车设置密码为空)cd /root/.ssh/(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt-cat 1.txt

上传之后,攻击机连接:

ssh -i ./id_rsa [email protected]

(5)目录探测:在输入框填写绝对路径,点击探测即可,Redis图形化漏洞利用工具会通过:

CONFIG SET dir

判断某个目录/文件是否存在,常用于踩点或确认写入位置。

(6)写WebShell:需要知道网站的绝对路径,可以配合目录探测使用,填写目标路径与文件名,文本框内贴入shell内容,可选 GBK 路径,实际是任意文件写入。

(7)CVE-2022-0543:直接填写想要执行的系统命令,适用于Debian/Ubuntu 存在 Lua 沙盒逃逸漏洞的 Redis。Redis图形化漏洞利用工具会通过Lua 动态链接方式执行任意命令,实现无主从情况下的命令执行。

(8)主从复制RCE:点击下载按钮即可将随工具附带的redis_rce.py 保存到本地,将该POC 放到自己的服务器上使用,该主从复制命令执行会清空目标redis数据。

2.3 结果输出

该区域实现输出了显示Redis返回结果、显示利用成功或失败等信息,如图7所示。

图7  win10攻击机redis_tools_GUI结果输出区

3、常用操作及漏洞利用演示

演示环境说明:

(1)攻击机:Windows10攻击机

(2)靶机环境:Windows7靶机、CentOS7靶机、Redis服务

3.1实验环境准备

Win7靶机32位系统Redis下载链接为https://gitcode.com/Premium-Resources/8fbc6,访问下载页面点击下载项目源码并解压至本地目录,如图8所示。

图8  win7靶机redis下载

解压完成后双击redis-server.exe启动服务端,如图9所示。

图9  win7靶机redis服务端启动

再双击redis-cli.exe启动客户端连接服务端,在客户端输入“ping”,出现“PONG”即证明启动成功,如图10所示。

图10  win7靶机redis客户端连接服务端

CentOS7靶机Redis服务已自带。

至此,所有实验环境均准备完毕。

3.2Redis未授权访问检测

操作步骤如下:

(1)输入目标Redis服务器IP和端口,这里为win7靶机ip192.163.1.101,端口为默认端口6379。

(2)点击连接按钮。

(3)若无需密码即可成功连接,说明目标存在Redis未授权访问漏洞。

若连接成功了则说明存在漏洞,连接失败则说明可能存在密码保护或网络不可达。由于3.1在准备实验环境时未配置密码,所以预期结果是会连接成功,如图11所示。

图11  win10攻击机redis未授权访问检测演示

3.3获取Redis服务器信息

点击查询信息按钮,工具会自动执行并获取信息,可获取以下信息:

(1)Redis 版本。

(2)操作系统类型。

(3)运行用户。

(4)持久化路径。

获取的信息可用于判断后续利用方式的可行性,如图12所示。比如从中得到win7靶机Redis服务存放路径为:

C:\Users\websec\Desktop\Redis-3.0.504-Windows-32\Redis

图12  win10攻击机获取redis服务器信息演示

3.4写入任意文件(WebShell利用)

利用原理为Redis支持将内存数据默认保存为后缀为RDB的文件。若攻击者控制保存路径和文件名,即可将恶意内容写入服务器任意位置,操作步骤如下:

(1)在工具中选择写WebShell功能。

(2)指定写入路径(如Web 目录),这里使用3.3获取Redis服务器信息中得到的路径的一部分:

C:\Users\websec\Desktop

(3)填写写入内容:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>&nbsp;<!DOCTYPE&nbsp;html><html><head>&nbsp; &nbsp;&nbsp;<meta&nbsp;charset="UTF-8">&nbsp; &nbsp;&nbsp;<title>Test Page</title></head><body>&nbsp; &nbsp; <%&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; out.println("Hello World");&nbsp;&nbsp; &nbsp; %></body></html>

(4)点击写入WebShell按钮。

如图13、14所示。

图13  写入任意文件演示

图14  写入任意文件成功

3.5写入计划任务(反弹Shell)

利用原理为在Linux 环境下,Redis 可将恶意命令写入 /var/spool/cron/ 目录,从而实现定时执行命令,操作步骤如下:

(1)选择计划任务反弹Shell功能。

(2)填写反弹Shell 命令配置。

(3)执行写入Cron。

在这里使用CentOS7靶机进行演示,开启Redis服务,如图15所示。

图15  CentOS7靶机开启服务

使用win10攻击机连接CentOS7靶机,并查询靶机信息,如图16所示。

图16  查询CentOS7靶机信息

配置反弹Shell命令,反连IP设置为win10攻击机IP,执行写入Cron,如图17所示。

图17  计划任务反弹Shell演示

这里显示失败是因为之前查询CentOS7靶机信息时注意到其Redi服务为7.0版本,Redi服务6.0以上版本引入了更强的安全配置。

4总结与防御措施

通过对Redis图形化漏洞利用工具redis_tools_GUI的实验与分析,可以看出,在Redis服务未进行安全加固的情况下,攻击者可在无需认证的前提下直接连接到目标服务,并利用Redis的持久化机制实现任意文件写入。该漏洞可被进一步扩展为写入WebShell、计划任务或SSH公钥等,从而对服务器造成严重的安全威胁。

在实际生产环境中,为有效防范Redis未授权访问漏洞及其衍生攻击,可以从安全配置的多个层面采取防御措施,具体如下:

4.1设置访问密码(requirepass)

在Redis配置文件中启用访问认证机制,防止未授权用户直接连接服务。

操作如下:

找到Redis根目录下的配置文件(如redis.conf或redis.windows.conf),右键选择打开方式为记事本,搜索requirepass,取消注释并添加密码,然后重启Redis服务,如图18、19所示。

requirepass&nbsp;强密码

图18  找到配置文件

图19  设置访问密码

4.2限制监听地址(bind)

将Redis监听地址限制为本地回环地址,避免对外网开放。操作如下:

找到Redis根目录下的配置文件(如redis.conf或redis.windows.conf),右键选择打开方式为记事本,搜索:

bind&nbsp;127.0.0.1

取消注释,然后重启Redis服务,如图20所示。

图20  限制监听地址

Redis 未授权访问漏洞本质上源于不安全的默认配置与不规范的部署方式。通过本次演示可以清晰地认识到,简单的配置疏忽即可被攻击者利用,进而造成严重的系统安全问题。只有在部署阶段即落实访问控制、网络隔离和最小权限原则,才能从根本上降低Redis 服务被攻击的风险。

本文由陈康楚同学投稿。

  • END –

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:Web安全基础与实践 dcnb《Redis漏洞利用及防御》

评论:0   参与:  7