该脚本旨在确定通常是由于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"