Hot Potato Windows上的提權漏洞

2021-07-09 13:54:01 字數 3285 閱讀 1239

windows 7,8,10,server 2008以及server 2012版本的作業系統平台中存在提權漏洞,攻擊者可以利用這一漏洞發動新型的網路攻擊。

工作機制

在windows作業系統的預設配置下,hot potato(也被稱為potato)能夠利用windows中的漏洞來獲取本地計算機的控制許可權,即通過ntlm relay(特別是http->smb relay)和nbns協議欺騙。

通過這項技術,我們可以在安裝了windows作業系統的工作站中為自己提權,並將自己的低階許可權提公升至「nt  authority\system」-在windows作業系統中,這是可獲取到的最高等級的許可權了。

這一點至關重要,因為很多的組織和機構不得不依靠windows的使用者賬號許可權來保護他們組織內部網路的安全。比如說,如果有一名攻擊者能夠得到目標網路中任意一台windows工作站的高階訪問許可權,那麼他們就可以利用這種訪問許可權來進行「橫向攻擊」,並入侵同一網域中的其他主機。作為一名攻擊者,我們通常會通過目標主機中的乙個低階使用者或者服務賬號來獲取目標主機的訪問許可權。而獲取到目標主機的高階訪問許可權是攻擊者在滲透測試中的關鍵步驟,這一步通常會在一種特殊的方式下進行,因為目前還沒有已知的漏洞或者技術可以直接使用。

攻擊者在目標主機中實現許可權提公升時所使用的技術並不算新穎,但是他們使用這項技術的方式卻令人耳目一新。微軟公司已經了解到了所有的相關資訊,但不幸的是,在不破壞系統向後相容性的情況下,這些問題是很難進行修復的,所以攻擊者已經使用這項首席技術官達十五年之久了。

這一漏洞利用技術主要有三大部分組成,其中每一部分都可以通過命令列來進行配置。每一部分均對應著乙個已知型別的攻擊,而且這些攻擊方式也已經被使用多年了:

1.本地nbns欺騙

nbns是乙個udp廣播協議,該協議是 tcp/ip 上的 netbios (netbt) 協議族的一部分,它在基於 netbios 名稱訪問的網路上提供主機名和位址對映方法,windows作業系統通常會使用這一協議來進行網域名稱解析。當你(或windows)進行一次dns查詢時,windows首先會檢測「hosts」檔案。如果不存在可用資源的話,那麼它將會嘗試進行dns查詢。如果搜尋失敗,那麼系統又將會進行nbns查詢。nbns協議會在本地廣播域中向所有的主機發出詢問-「誰知道主機***的ip位址?」。網路中的空閒主機都會對這一訊息產生應答。

在滲透測試過程中,我們通常會對本地網路中的網路流量和nbns請求的應答資訊進行嗅探和觀察。我們將會偽裝成網路中的主機,並使用我們自己的ip位址對所有的請求進行應答,我們希望能夠得到一些有趣的資訊。

為了實現許可權提公升這一目的,我們不能想當然地認為我們能夠嗅探到網路流量資訊。為什麼呢?因為這需要本地管理員許可權。那麼,我們怎樣才能實現nbns欺騙呢?

如果我們能夠提前知道nbns請求所對應的目標主機的主機名(在此環境下,我們的目標主機ip為127.0.0.1),我們就可以建立乙個虛假的應答資訊,並快速地使用nbns應答資訊來對目標主機進行泛洪攻擊(因為它是乙個udp協議)。其中有乙個比較複雜的地方,即nbns資料報中有乙個長度為2子節的資料域-txid。txid必須與請求和應答資訊相匹配,問題就在於我們無法讀取到請求資訊。但是我們可以通過快速泛洪攻擊並對總共65536個可能值進行快速遍歷。

如果目標網路中儲存有主機的dns記錄呢?我們可以使用一種名為udp埠exhaustion(枯竭)的技術來迫使目標系統中所有的dns查詢失敗。我們所做的一切都是為了使每乙個udp埠失效。因為這會使得系統在進行dns查詢時沒有可用的udp埠資源,所以dns將會失效,而此時nbns請求也將會回退。

在我們的測試過程中,這一方法是百分之百有效的。

2.偽造wpad**伺服器

在windows作業系統中,ie瀏覽器在預設配置下會通過url:「http://wpad/wpad.dat」」來自動嘗試檢測網路**。而且windows中的一些服務也會採用這一機制,例如windows update,而且這似乎是windows的一種版本依賴。

當然了,並不是所有的網路中都存在url「http://wpad/wpad.dat」」。因為並不是所有的dns網域名稱伺服器都存在主機「wpad」的。但是我們仍然可以使用nbns欺騙來進行主機名欺騙。

我們一旦能夠偽造nbns的應答資訊,我們就可以對目標主機(127.0.0.1)進行攻擊了。我們將會對目標主機使用nbns應答資料報來進行泛洪攻擊。

與此同時,我們將會在本地執行乙個http伺服器(ip位址為127.0.0.1)。當它接收到了請求(http://wpad/wpad.dat」)之後,它將會產生類似下圖所顯示的應答資訊:

有趣的是,低許可權的使用者同樣可以進行這樣的攻擊,這將會影響目標主機中所有的使用者,包括管理員賬戶和系統賬戶在內。在下面所給出的截圖中,兩名使用者同時登入到了同一臺裝置中,低許可權使用者正在進行本地nbns欺騙,在第二張截圖中大家可以看到高許可權使用者將會受到攻擊的影響。

大家應該都聽說過ntlm relay,但是大家通常會將其誤解為針對windows ntlm認證的攻擊。攻擊者可以通過中間人攻擊來對ntlm協議進行攻擊。如果攻擊者能夠誘騙目標使用者在其裝置上使用ntlm協議進行身份驗證,攻擊者就可以將身份驗證請求**到其他的裝置上。

微軟公司已經通過禁用ntlm認證協議來修復了這一問題。這也就意味著,smb -> smb ntlm relay將無法工作。但是,類似http -> smb這樣的跨協議攻擊仍然可以正常使用。

在potato攻擊中,所有的http請求將會被重定向至「http://localhost/gethashes***xx」」,其中的***xx表示的是某些唯一識別符號。傳送至「http://localhost/gethashes***xx」」的請求資訊會收到乙個請求ntlm認證的應答資訊。

當高許可權賬戶進行這樣的http請求,比如說,當windows更新服務發出這樣的請求之後,這一命令將會在「nt authority\system」許可權下執行。

漏洞利用

整個過程也許看起來會有些古怪,因為windows在處理**設定以及wpad檔案時所採用的處理機制就十分的奇怪。當windows中已經存在相應的wpad可用資源時,系統將會花費30至60分鐘的時間來重新整理wpad檔案。

windows 7-

windows server 2008-

windows 8/10/server 2012-

相關**

基於Windows上的幾種提權手段

自從vista之後windows就開始實行了uac機制 無論是標準使用者還是特權使用者都以標準使用者許可權執行程式。除非使用者特別選擇以管理員許可權執行程式並且系統會提示乙個許可權提公升的對話方塊。如果當時正處於標準使用者登陸狀態,則系統會要求輸入管理員賬號密碼以此來進行一次管理員許可權的程式執行。...

mysql 提權 通過Mysql提權的幾種姿勢

本文記錄利用mysql資料庫,在拿到shell之後進行提權的兩種方法。一 udf提權 基本步驟 1 匯出udf.dll檔案到指定目錄 有些webshell整合,直接導 出即可,沒有,則需要上傳 2 基於udf.dll建立自定義函式cmdshell 3 利用自定義函式,執行高許可權cmd命令 以下按照...

FileZilla提權的過程

話不多說,我們直接操作!在得到以上基本資訊後,我們找到可讀寫檔案,上傳lcx.exe埠 程式。因為從以上資訊我們可以知道,它只偵聽在本地的14147埠上。然後執行埠 命令 接著我們在我們本地機器上,通過 filezilla 的服務端程式,來連線它!位址填寫,目標位址埠為 後的14148埠,密碼為空!...