利用程式碼執行漏洞


在本節中,我們將更加深入地了解Metasploit,我們將看到如何使用它來利用某個服務中存在的漏洞。這是一個程式碼執行漏洞,可以讓我們完全存取目標計算機。回到我們在Nmap中的結果,我們將做與以前一樣的事情。複製服務名稱,看看它是否有任何漏洞。現在我們檢視埠139,它的Samba伺服器版本為3.X,就像上一節一樣,在Google搜尋Samba 3.X漏洞。我們將看到有很多結果,但主要是關於Rapid7方面的漏洞。Rapid7是一家開發Metasploit框架的公司,因此我們選擇這一特定漏洞的原因。我們使用的漏洞利用是使用者名對映指令碼。這是一個命令執行漏洞。漏洞的名稱是exploit/multi/samba/usermap_script,因此它與我們之前使用的FTP服務中的惡意後門相同。這只是我們將要使用的另一個名稱,如以下螢幕截圖所示:

我們要進入Metasploit並執行msfconsole。我們像上一節中所做的那樣編寫命令。然後鍵入我們想要使用的漏洞利用名稱。接下來我們要做的就是show選項。命令如下:

使用這些漏洞總是幾乎相同。唯一的區別是我們可以為每個漏洞利用設定的選項。我們總是執行使用,然後輸入漏洞利用名稱,然後顯示選項以檢視我們可以更改以使用此漏洞利用。每當我們想要執行漏洞利用時,我們使用<exploit name>,然後我們會顯示選項以檢視要組態的選項。但是使用漏洞並設定選項並執行它們總是一樣的。

我們需要設定RHOST,它是目標計算機的IP。我們將以與上一節相同的方式進行此操作。設定選項始終相同。正如我們之前所做的那樣,我們使用set命令設定一個選項,即RHOST,然後放置目標計算機的IP,即10.0.2.4。我們執行show選項,正如我們在下面的螢幕截圖中看到的,RHOST將根據指定的IP正確設定:

這是與前一節不同的地方。在上一節中,我們需要一個已安裝在目標計算機上的後門,因此我們所要做的就是連線到後門,然後我們就可以在目標計算機上執行Linux命令。在本節中,目標計算機沒有後門。它有一個正常的程式,具有程式碼執行漏洞和緩衝區溢位。該程式不允許我們執行Linux命令的程式碼。但它有一個允許我們執行一小段程式碼的缺陷,這些小程式碼被稱為Payloads。我們需要做的是建立一個Payloads,然後使用我們發現的漏洞在目標計算機上執行它。這段程式碼將允許我們做不同的事情。

我們將來會看到各種型別的Payloads,Payloads可能讓我們執行Linux命令。我們可以執行show payloads命令來檢視我們使用此特定漏洞利用的Payloads。可以使用不同型別的Payloads,如以下螢幕截圖所示:

Payloads是一小段程式碼,一旦漏洞被利用,將在目標計算機上執行。當我們利用此漏洞時,我們將要執行的程式碼將被執行。現在,根據我們選擇的Payloads的型別,Payloads將執行對我們有用的操作。在上面的螢幕截圖中,我們可以看到所有Payloads都是命令列,因此它們讓我們在目標計算機上執行命令,就像Linux命令一樣。而且所有這些都只能在Unix上執行,因為我們的目標是Linux。

Payloads有兩種主要型別:

  • 係結有效負載:它們開啟目標計算機上的埠,然後就可以連線到該埠。
  • 反向有效負載:反向有效負載與系結有效負載相反。在我們的機器上開啟埠,然後從目標計算機連線到我們的機器。此有效負載很有用,因為這允許我們繞過防火牆。防火牆過濾任何連線到目標機器的連線,但如果目標機器連線到我們並且我們沒有防火牆,那麼我們將能夠繞過防火牆。

我們將使用cmd/unix/reverse_netcat有效負載。這些有效負載的最後一部分是程式設計語言或將用於促進連線的工具。例如,在前面的螢幕截圖中,可以看到有用Perl,PHP,Python,Ruby編寫的有效負載,或者有一個名為Netcat的工具,它允許計算機之間的連線。我們將以與使用漏洞利用相同的方式使用cmd/unix/reverse_netcat有效負載。我們將使用set命令來使用它。命令如下:

我們將以與設定選項相同的方式設定有效負載。確實顯示了選項以檢視是否還有其他需要設定的選項,並且因為我們選擇了有效負載,所以有更多選項。在下面的螢幕截圖中,我們可以看到有一個名為LHOST的選項,它是監聽地址,也是我們自己的地址:

現在我們使用ifconfig獲取自己的IP地址,此範例的IP地址為10.2.0.15,如下所示:

我們將以與之前設定RHOST相同的方式設定LHOST。使用set命令將LHOST設定為10.2.0.15。然後設定<value>

然後顯示選項,如果一切沒有問題,如下螢幕截圖所示:

我們正在使用這個漏洞。RHOST設定為10.0.2.4,然後LHOST設定為10.0.2.15。我們還可以設定要在當前計算機上監聽的埠。如果需要可以將其設定為80。Web瀏覽器使用該埠。如果我們將LPORT設定為80,目標計算機將嘗試使用埠80連線到,埠80永遠不會被防火牆過濾,因為這是Web伺服器或Web瀏覽器使用的埠。如果我們在機器上開啟PORT 80並且目標通過埠80連線到,那麼防火牆認為目標只是瀏覽網際網路。我們現在不打算這樣做,因為在埠80上執行了一個Web伺服器並且會發生衝突。我們將以與LHOST相同的方式將LPORT設定為5555。再次使用show選項。在下面的螢幕截圖中,我們可以看到埠更改為5555

現在我們執行exploit命令來執行漏洞利用程式。在下面的螢幕截圖中,我們可以看到對談1已經開啟,連線是在10.0.2.15:5555裝置和10.0.2.4:48184裝置,下面是我們的裝置和目標裝置:

我們執行pwd,然後再檢視使用者id。如果執行uname -a命令,檢視Metasploitable機器核心版本。如果執行ls則將能夠列出檔案等。可以使用任何Linux命令,就像我們在上一節中所做的那樣,如下所示: