文章总结: 本文档详细介绍Redis未授权访问漏洞的利用与防御,重点演示图形化工具redis_tools_GUI的安装及功能,涵盖密码爆破、反弹Shell、WebShell写入和SSH公钥写入等攻击手法。文章通过实验展示漏洞危害,并提出设置强密码和限制监听地址等加固建议,强调安全配置的重要性。 综合评分: 87 文章分类: 渗透测试,WEB安全,安全工具,红队,漏洞POC
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"%> <!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Test Page</title></head><body> <% out.println("Hello World"); %></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 强密码
图18 找到配置文件
图19 设置访问密码
4.2限制监听地址(bind)
将Redis监听地址限制为本地回环地址,避免对外网开放。操作如下:
找到Redis根目录下的配置文件(如redis.conf或redis.windows.conf),右键选择打开方式为记事本,搜索:
bind 127.0.0.1
取消注释,然后重启Redis服务,如图20所示。
图20 限制监听地址
Redis 未授权访问漏洞本质上源于不安全的默认配置与不规范的部署方式。通过本次演示可以清晰地认识到,简单的配置疏忽即可被攻击者利用,进而造成严重的系统安全问题。只有在部署阶段即落实访问控制、网络隔离和最小权限原则,才能从根本上降低Redis 服务被攻击的风险。
本文由陈康楚同学投稿。
- END –
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Web安全基础与实践 dcnb《Redis漏洞利用及防御》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论