Windows提权实战:从菜鸟到系统管理员的5种姿势
大家好,我是33blog的Windows安全研究员。今天想和大家分享一些我在渗透测试和系统管理工作中积累的Windows提权经验。这些方法有些是官方提供的正规途径,有些则是系统漏洞的利用方式,请务必在合法授权范围内使用。
1. 善用系统自带的提权工具
很多人不知道Windows其实自带了一个提权神器 – runas
命令。我第一次发现它时简直像捡到宝:
runas /user:administrator "cmd.exe"
执行后会提示输入管理员密码,验证通过就能获得管理员权限的cmd。不过要注意,这需要你知道管理员密码才行。我在客户现场做安全评估时,经常发现运维人员为了方便,直接在批处理里明文存储密码(千万别学这个坏习惯)。
2. 利用计划任务提权
有一次客户系统配置了严格的权限控制,但允许普通用户创建计划任务。于是我写了这样的脚本:
schtasks /create /tn "PrivEsc" /tr "cmd.exe /c net localgroup administrators currentuser /add" /sc onlogon /ru "SYSTEM"
这个技巧的关键在于/ru "SYSTEM"
参数,让任务以系统权限运行。等用户下次登录时,就会自动把当前用户加入管理员组。记得测试完成后一定要删除任务:
schtasks /delete /tn "PrivEsc" /f
3. 服务路径漏洞利用
这是我遇到最多的提权场景。当服务配置了可写路径且以SYSTEM权限运行时:
sc qc VulnerableService
查看服务配置,如果发现BINARY_PATH_NAME指向的路径可写,就可以替换成我们的恶意程序。有次审计发现某服务使用C:Program Files (x86)OldAppservice.exe
,而这个目录所有用户都有写入权限…
4. DLL劫持的艺术
Windows加载DLL的机制存在缺陷,我经常用Procmon监控应用程序加载DLL的顺序:
- 应用程序所在目录
- 系统目录
- 16位系统目录
- Windows目录
- 当前目录
- PATH环境变量目录
如果发现程序优先从可写目录加载DLL,就可以制作恶意DLL实现提权。记得有一次通过劫持某财务软件的更新组件,成功拿到了SYSTEM权限。
5. 内核漏洞的精准打击
对于打补丁不及时的系统,内核漏洞往往是终极武器。我常用的检测工具是:
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
然后根据系统版本查找对应的漏洞利用代码。比如经典的PrintNightmare(CVE-2021-1675),用好了可以直接从普通用户跃升到SYSTEM。不过要提醒大家,这种提权方式风险最大,可能会造成系统崩溃。
写在最后
提权方法远不止这5种,像注册表键、组策略首选项、AlwaysInstallElevated等也都是常见突破口。作为防御方,我建议:
- 定期检查服务权限配置
- 严格控制目录写入权限
- 及时安装系统补丁
- 启用Windows Defender攻击面减少规则
希望这些实战经验对你有帮助。如果遇到有趣的提权案例,欢迎在评论区分享讨论!
学到了,runas命令确实很方便,但明文存密码这个真的要不得啊!