Windows提權方式彙總

Ling-X5發表於2024-08-25

windows 提權

一、土豆(potato)家族提權

原理

土豆提權就是透過 windows 的 COM(Component Object Model,元件物件模型)類。向指定的伺服器埠傳送 NTLM 認證,捕獲認證資料包,並修改資料包內容使其認證成功,從而獲得 system 許可權的 token。在透過高許可權的令牌執行反彈 shell 的命令,獲取高許可權使用者的 shell。

實現條件

  1. 獲取到高許可權的 token
  2. 當前賬戶擁有 SeImpersonatePrivilege 或 SeAssignPrimaryTokenPrivilege 許可權

當使用者具有 SeImpersonatePrivilege 特權,可以呼叫 CreateProcessWithTokenW 以某個 Token 的許可權啟動新程序。(最常見的,一般 IIS 服務的使用者都具有該類許可權)
當使用者具有 SeAssignPrimaryTokenPrivilege 特權,可以呼叫 CreateProcessAsUserW 以指定使用者許可權啟動新程序。(這個許可權一般管理員才具有)

1)juicypotato(多汁土豆)

github 裡有詳細的講解: https://github.com/ohpe/juicy-potato

滿足以上提權的條件,直接用工具進行提權。

juicypotato 可以在本地監聽埠,進行提權。

2)RoguePotato(爛土豆)

微軟修補後,高版本 Windows DCOM 解析器不允許 OBJREF 中的 DUALSTRINGARRAY 欄位指定埠號(也就是不能像 juicypotato 一樣在本地埠直接監聽 NTLM 認證的流量包了)。

但是,總有大佬會繞過這樣的限制:為了繞過這個限制並能做本地令牌協商,作者在一臺遠端主機上的 135 埠做流量轉發,將其轉回受害者本機埠,並寫了一個惡意 RPC OXID 解析器。

github 介紹: https://github.com/antonioCoco/RoguePotato/tree/master

image-20240825150146937

出發 NTLM 認證機制後,把流量包轉到了 kali 主機的 135 埠上,再有 kali 主機上轉給 windows 主機的 9999 埠,從而實現了 對 DCOM 解析器不允許 OBJREF 中的 DUALSTRINGARRAY 欄位指定埠號 的繞過,原理與 juicypotato 基本一致。

二、系統錯誤配置提權-AlwaysInstallElevated

這是一個最經典的 windows 提權,但是實際場景中確是很少見的。簡單說一下原理。

這是由於 window 的登錄檔的配置錯誤導致的提權,AlwaysInstallElevated 選項置為 1 後,windows 在執行 msi 下在檔案時,會用高許可權使用者去安裝。此時,我們的 msi 檔案裡的內容不是正常的下載程式,而是反彈 shell 的語句,不就完成提權了嗎

實現的話可以去 msf 中生成一個惡意的 msi 檔案,下載到 windows 上執行,進行提權。

三、核心提權

這是最簡單的一種提權方式,站在巨人的肩膀上,利用大佬發現的作業系統核心的漏洞進行提權。

最經典的永恆之藍(ms-17-010)漏洞,就是作業系統核心漏洞,只要攻擊成功就是最高的 system 許可權。

這裡分享一個幫助發現系統提權漏洞的工具

WinPeas: https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS

他可以列舉出一些可以嘗試的攻擊方式,但是也不能全信,還是要根據我們對目標具體收集到的資訊,進行判斷。

注意:核心提權很容易導致目標系統崩潰,想使用一定是經過授權的,或者是在自己的靶機環境中

四、密碼收集提權

透過發現電腦使用者的一些賬號密碼

1)瀏覽器密碼

瀏覽器密碼一般在: %APPDATA%\Mozilla\Firefox\Profiles\xxx.default\ 資料夾下

Version 大於等於 32.0,儲存記錄的檔案為 logins.json
Version 大於等於 3.5,小於 32.0,儲存記錄的檔案為 signons.sqlite

可以使用工具

WebBrowserPassView:
連結:https://pan.baidu.com/s/1jTumsrJSRLRIIdG49fHLlA?pwd = gbsz
提取碼:gbsz

2)登錄檔密碼

reg query HKEY_CURRENT_USER\Software\TightVNC\Server

用 vncpwd 工具進行解密:https://aluigi.altervista.org/pwdrec/vncpwd.zip

五、資料庫提權

1)mysql UDF 提權

UDF 提權原理

UDF 指的是使用者自定義函式,使用者可以對資料庫所使用的函式進行一個擴充套件(利用 dll 檔案),從而定製一些符合自己需求的函式,但是同樣的,當駭客獲取了資料庫的 root 使用者的一個許可權時,即使所在的系統許可權很低,也可以使用 UDF 來自定義一個執行系統命令的函式,但是執行許可權為管理員許可權,從而可以用來新增管理員賬戶,遠端連線。

提權條件

  1. 必須是 root 許可權(主要是得建立和拋棄自定義函式)
  2. secure_file_priv =
  3. 將 udf.dll 檔案上傳到 MySQL 的 plugin 目錄下(這裡以 MySQL = 5.5.29 為例)

檢視 secure_file_priv 的值(他必須是空白值,只要有內容就不能進行 UDF 提權)

show global variables like "secure%";

檢視 mysql 絕對路徑

SHOW VARIABLES LIKE "%plugin%";

建立資料夾( 你要提權系統的 mysql 的絕對路徑 )

select 'xxx' into dumpfile
'C:\\phpstudy_pro\\Extensions\\MySQL5.5.29\\lib::$INDEX_ALLOCATION';

select 'xxx' into dumpfile
'C:\\phpstudy_pro\\Extensions\\MySQL5.5.29\\lib\\plugin::$INDEX_ALLOCATI
ON';

雖然語句會出現報錯,但是資料夾會成功建立。

利用 msf 的 exploit/multi/mysql/mysql_udf_payload 生成一個 dll 的 payload,上傳到\lib\plugin 目錄下

SELECT 生成的payload內容 into dumpfile 'C:\\phpstudy_pro\\Extensions\\MySQL5.5.29\\lib\\plugin\\udf.dll';

定義別名

CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll';
select sys_eval('whoami');

看到輸出為system使用者

相關文章