taibeihacker
Moderator
0x00 工具介绍
前言BeRoot是一個後期開發工具,用於檢查常見的Windows的配置錯誤,以方便找到提高我們提權的方法。其二進制編譯地址為:Releases · AlessandroZ/BeRoot
Privilege Escalation Project - Windows / Linux / Mac - AlessandroZ/BeRoot
需要注意的是,這款工具只能用來檢測,而無法直接利用目標系統中存在的漏洞。但是,如果它發現了錯誤配置,它可以通過模版來利用這些漏洞。模版文件位於templates/service目錄下,如果項目提供的模版文件無法運行,我們也可以根據目標系統的情況手動創建一個模版文件。
工具下载【beRoot.zip】(zip)
【源代碼】(zip)
【源代碼】(tar.gz)
工具运行:|==============================================
| |
| Windows Privilege Escalation |
| |
| ! BANG BANG ! |
| |
|==============================================
usage: beRoot.exe [-h] [-l] [-w] [-c CMD]
Windows Privilege Escalation
optional arguments:
-h, --help show this help message and exit
-l, --list list all softwares installed (not run by default)
-w, --write write output
-c CMD, --cmd CMD cmd to execute for the webclient check (default: whoami)


0x01 工具利用
包含没有引号的空格路径:如以下文件路徑:C:\Program Files\Some Test\binary.exe
如果路徑中包含空格並且沒有引號,Windows將嘗試按以下順序查找和執行目標程序:
C:\Program.exe
C:\Program Files\Some.exe
C:\Program Files\Some Folder\binary.exe
按照此順序,如果“C:\”文件夾是可寫的,可能會創建一個名為“Program.exe”的惡意可執行二進製文件,如果“binary.exe”擁有高權限,那麼我們就可以利用這種機制來提升我們的權限。
注意:BeRoot會對每一條服務路徑、計劃任務、以及HKLM條目中的啟動鍵執行這樣的檢測
利用方法:在利用存在安全缺陷的路徑時,我們應該遵循以下方法:
1.如果是一個服務,那麼我們就創建一個惡意服務(或編譯一個service模版)。
個人理解為:通過該工具檢查到的服務運行的路徑為帶空格且沒有引號的目錄路徑,則可以用其他惡意服務來替換來達到提權。
2.如果是一個可執行程序,那麼我們就可以創建一個惡意的可執行程序
可写目录:如下文件路徑:
C:\Program Files\Some Test\binary.exe
如果“binary.exe”的根目錄是可寫的(“C:\ Program Files \ Some Test”)並以高權限運行,那麼我們就可以利用它來實現提權。
利用方法1.如果服務不處於運行狀態:用我們的服務模版替換掉合法服務,重啟該服務,並嘗試觸發該服務。
2.服務處於運行狀態且無法被終止:這是大多數的情況,可以嘗試進行DLL劫持並使用其他的技術來重啟服務
%PATH%上的可写目录:這項技術可在以下Windows版本中使用:
6.0=Windows Vista/Windows Server 2008
6.1=Windows 7/Windows Server 2008 R2
6.2=Windows 8/Windows Server 2012
在上述Windows版本中,DLL文件是通過指令代碼進行加載的,Windows會通過下列步驟來嘗試定位相應的代碼:
- 定位代碼所在目錄
- C:\Windows\System32
- C:\Windows\System
- C:\Windows\
- 當前目錄下的代碼已啟動
- 目錄地址將會保存在%PATH%環境變量中
二進製文件啟動的當前目錄
如果%PATH%變量中的目錄路徑是可寫的,那麼我們就有可能實現DDL劫持攻擊。那麼接下來,我們的目標就是要找出一個能夠加載DLL文件但路徑還不在%PATH%變量中的服務。默認情況下,我們選擇使用“IKEEXT”服務,它可以加載我們的惡意DLL文件-wlbsctrl.dll。
如何利用:創建一個名為“wlbsctrl.dll”(使用DLL模版)的惡意DLL文件,並將其添加至%PATH%變量中的可寫路徑,開啟“IKEEXT”服務,為了在沒有高級權限的情況下開啟IKEEXT服務,我們可以參考法國雜誌MISC90中所介紹的方法,方法大致如下:
根據下列信息創建一個文件:
C:\Users\bob\Desktoptypetest.txt
[IKEEXTPOC]
MEDIA=rastapi
Port=VPN2-0
Device=Wan Miniport (IKEv2)
DEVICE=vpn
PhoneNumber=127.0.0.1
使用“rasdial”命令開啟IKEEXT服務,如果鏈接失效,則說明該服務已經處於運行狀態了。
MS16-075漏洞检查對於懂法語的用戶,我建議可以參考MISC 90中提供的技術細節。
微軟已經在公告MS16-075的補丁中修復了這個漏洞,但是很多服務器仍然存在這個問題,這裡給大家提供一個C++PoC【點我獲取】。大致的實現方法如下:
1.使用某些方法(使用其UUID)開啟Webclient服務
2.在本地開啟一個HTTP服務器
3.找到一個能夠觸發SYSTEM NTLM哈希的服務
4.啟用該服務的文件追踪,修改其註冊表鍵值,並讓其指向我們的Web服務器(\\127.0.0.1@port\tracing)
5.開啟該服務
6.讓我們的HTTP服務器請求獲取SYSTEM NTLM哈希
7.使用這個哈希和SMB來執行我們的自定義Payload
8.清除痕跡(終止服務,清除註冊表鍵等等)
如何利用:在目標主機中,BeRoot可以通過下列命令來執行自定義命令:
beRoot.exe -c “net userZapata LaLuchaSigue /add”
beRoot.exe -c “net localgroupAdministrators Zapata /add”
註冊表鍵AlwaysInstallElevated
通過對AlwaysInstallElevated進行設置,我們可以讓非特權用戶使用高級權限(SYSTEM權限)來運行MicrosoftWindows Installer包文件。為此,我們需要將下面這兩個註冊表鍵值設置為1:
HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated
如何利用:創建一個惡意MSI文件,然後執行。
Unattend安裝文件
很多安裝文件中包含程序的所有配置信息,並且會在程序的安裝過程中對程序進行配置,而有些安裝文件中還包含對本地賬號(例如管理員賬號)的配置信息,我們可以通過下列路徑獲取到這些文件:
C:\Windows\Panther\Unattend.xml
C:\Windows\Panther\Unattended.xml
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\Panther\Unattend\Unattend.xml
C:\Windows\System32\Sysprep\unattend.xml
C:\Windows\System32\Sysprep\Panther\unattend.xml
如何利用:打開unattend.xml文件,檢查其中是否含有密碼。文件結構大致如下:
UserAccounts
LocalAccounts
LocalAccount
Password
ValueRmFrZVBhc3N3MHJk/Value
PlainTextfalse/PlainText
/Password
DescriptionLocal Administrator/Description
DisplayNameAdministrator/DisplayName
GroupAdministrators/Group
NameAdministrator/Name
/LocalAccount
/LocalAccounts
/UserAccounts
0x03 总结
可檢查以下的內容:可寫的應用程序路徑
可寫不含引號有空格的路徑
可利用的註冊表鍵值
找到無人值守安裝文件
可檢查到MS16-075漏洞利用