游客发表

powershell提权

发帖时间:2026-10-17 04:35:02

某天深夜,提权我盯着屏幕上一行鲜红的提权“Access Denied”,那台测试服务器上的提权漏洞明明已经打穿了Web层,却卡在系统权限的提权最后一堵墙上。旁边同事递了罐咖啡,提权随口说了句:“试试PowerShell呗。提权”——就这么一句话,提权让我折腾了三个通宵,提权也彻底见识了Windows提权世界里,提权这把瑞士军刀有多锋利。提权

PowerShell提权的提权核心逻辑其实不复杂:它不直接攻击内核漏洞,而是提权把Windows自身的管理机制变成你的跳板。最经典的提权思路是抓取内存中的明文密码或哈希,再用这些凭证横向移动。提权比如Mimikatz通过PowerShell加载到内存运行,提权不落地文件,杀软连报警的机会都没有。我见过一台域控服务器,管理员用普通账号登录过,结果LSASS进程里存着域管的哈希,一条`Invoke-Mimikatz`命令下去,整个域就像脱了壳的鸡蛋。

另一个常用手法是滥用系统服务或计划任务的错误配置。Windows服务默认以SYSTEM权限运行,如果某个服务的可执行文件路径能被普通用户写入——比如装在`C:\Program Files`但子目录权限没锁死——那就可以替换成自己的恶意脚本,再触发服务重启。PowerShell在这里的作用是快速枚举:一条`Get-WmiObject win32_service`就能把所有服务的路径和权限列出来,比手工翻注册表高效百倍。我曾在某台内网机器上发现,某杀毒软件的更新服务居然运行在`C:\Temp`下,而且目录Everyone可写,替换成反弹Shell后,直接拿到SYSTEM。

还有个偏门但极其实用的技巧,利用UAC的自动提升机制。Windows的`fodhelper.exe`是个白名单程序,普通用户触发它时如果UAC设置为默认级别,系统会静默提升权限。PowerShell可以修改注册表`HKCU\Software\Classes\ms-settings\Shell\open\command`,把默认值改成你的恶意命令,然后调用`Start-Process fodhelper`——整个过程不弹任何确认框,用户毫无感知。我第一次测试时还以为没执行成功,直到看到反弹回来的Shell显示`NT AUTHORITY\SYSTEM`,才意识到这招有多阴。

当然,这些操作的前提是你已经拿到了一个低权限的shell或代码执行能力。现实里真正的难点往往不是提权手段本身,而是如何绕过AppLocker和AMSI。AppLocker限制了能运行的脚本路径,但PowerShell可以用`-EncodedCommand`把命令编码成Base64塞进白名单进程里;AMSI会扫描脚本内容,那就用`[Ref].Assembly.GetType()`反射机制在内存里patch掉检测函数。这些细节听起来玄乎,实操起来就是几行代码的事——但前提是你得理解Windows内部的消息传递和对象模型,不然抄来的脚本换个环境就废。

我最后悔的一次经历,是在某客户授权的渗透测试里,用PowerShell提权成功后,习惯性地执行了`whoami /all`,结果输出里带着域管理员组的信息,吓得我赶紧清了日志。后来反思,PowerShell的日志记录功能(ScriptBlock Logging)默认开启,所有命令都会写到事件日志里,如果不做清理,蓝队顺着日志就能还原你的整个攻击链。所以真正的老手提权后第一件事,是调用`Get-WinEvent`删除指定事件ID的记录,而不是急着弹Shell。

说到底,PowerShell提权拼的不是命令数量,而是对Windows信任边界的理解。每个服务、每个注册表项、每个默认配置,都可能藏着一条通往SYSTEM的暗路。工具本身没有善恶,但当你用`Invoke-WebRequest`下载一个脚本,然后看着它把权限从`USER`变成`SYSTEM`时,那种感觉——比破解任何密码都来得刺激。

    热门排行

    友情链接