該腳本旨在確定通常是由於Windows配置問題或錯誤實踐所致的本地特權升級(LPE)漏洞。它還可以收集有用的信息,以進行某些剝削和探索後任務。
下載腳本並將其複製到目標Windows計算機上後,請使用以下命令之一運行它。
筆記
您無需克隆整個存儲庫。文件PrivescCheck.ps1是一個獨立的powershell腳本,包含PrivescCheck運行所需的所有代碼。
重要的
在下面的命令中,第一個. (DOT)用於“點採購”腳本,因此可以在當前範圍中使用功能和CMDLET(請參閱PowerShell DOT DOT Sourcing功能)。
快速確定重要問題,例如本地特權升級漏洞。
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck "確定重要的問題,同時也收集其他信息,並保存結果以報告易於閱讀的文件。
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML "執行擴展和審核檢查,並將結果保存到人類可讀報告中,還將結果保存到機器可讀的文件中,以後可以將其解析以自動報告生成。
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML,CSV,XML " PrivesCcheck中實施的所有檢查都有一種類型。此值以及命令行上指定的標誌將確定是否運行。
除非腳本作為管理員運行,否則將始終執行類型Base的檢查。它們主要旨在確定特權升級漏洞或其他重要問題。
只有在命令行上指定了選項-Extended時,才可以執行Extended名的檢查。它們主要旨在提供可能有用的其他信息,這些信息可用於開發開發或探索後。
只有在命令行上指定了選項-Audit時,才能執行類型Audit的檢查。它們主要旨在提供在配置審核的上下文中相關的信息。
只有在命令行上指定-Experimental實驗時,才能執行類型Experimental的檢查。這些是不穩定的檢查,需要進一步的工作。謹慎使用它們。
默認情況下,PowerShell執行策略設置為Restricted客戶端,並在啟動新的powershell.exe進程時在服務器上RemoteSigned 。這些策略阻止了(未簽名)腳本的執行,但是它們可以在當前範圍內超越如下。
Set-ExecutionPolicy Bypass - Scope Process - Force
. .PrivescCheck.ps1但是,當通過GPO執行執行策略時,此技巧不起作用。在這種情況下,啟動新的PowerShell會話後,您可以按照以下方式加載腳本。
Get-Content .PrivescCheck.ps1 | Out-String | Invoke-Expression繞過受約束語言模式的一種常見方法在於啟動PowerShell版本2,因為它無法實現此保護。因此,開發工作的很大一部分用於維持這種兼容性。
筆記
儘管PowerShell版本2仍在最近版本的Windows上啟用,但如果沒有.NET Framework 2.0版,它就無法運行,該版本需要手動安裝。
如果您在MeterPreter會話中運行此腳本,則可能會遇到“超時”錯誤。 Metasploit具有“響應超時”值,默認情況下將其設置為15秒,但是在大多數環境中,此腳本需要更多時間運行。
meterpreter > load powershell
Loading extension powershell...Success.
meterpreter > powershell_import /local/path/to/PrivescCheck.ps1
[+] File successfully imported. No result was returned.
meterpreter > powershell_execute "Invoke-PrivescCheck"
[-] Error running command powershell_execute: Rex::TimeoutError Operation timed out.借助sessions命令的-t選項(文檔),可以設置不同的值。在下面的示例中,設置了與ID 1會話設置2分鐘的超時。
msf6 exploit(multi/handler) > sessions -t 120 -i 1
[*] Starting interaction with 1...
meterpreter > powershell_execute "Invoke-PrivescCheck"