PowerShell UAC绕过任务计划执行失败问题求助
解决PowerShell UAC绕过脚本中schtasks失败与目录创建问题
看起来你在运行Hak5的UAC绕过脚本时遇到了几个典型问题,我来帮你一步步排查解决:
一、先搞定schtasks的路径错误问题
你遇到的"schtasks.exe : ERROR: The filename, directory name.... is incorrect"错误,大概率是脚本里的schtasks命令路径参数格式不对:
- 检查引号包裹:如果命令里的目标路径(比如
/tr参数后的程序路径)包含空格,必须用双引号完整包裹,注意嵌套引号要用反斜杠转义,避免PowerShell解析错误,比如正确写法:schtasks /create /tn "UACBypassTask" /tr "\"C:\Program Files\SomeApp.exe\"" /sc once /st 00:00 - 手动验证命令:先脱离脚本,在管理员命令行里单独执行schtasks命令,比如先测试创建一个简单任务来验证路径是否有效:
如果这个命令能成功执行,再把参数替换成脚本里的内容,逐步定位问题。schtasks /create /tn "TestTask" /tr "cmd.exe /c echo test > C:\test.txt" /sc once /st 00:00
二、解决C:\Windows\uacbypass目录创建失败的问题
这个目录创建失败通常和权限或系统防护有关:
- 先手动测试权限:打开管理员权限的PowerShell,直接执行
mkdir C:\Windows\uacbypass,如果还是失败,可能是Windows Defender的受控文件夹访问、组策略限制,或者系统目录的权限锁死了。这种情况下你可能需要临时关闭防护(仅限测试环境),或者换一个非系统目录来测试(比如C:\Temp\uacbypass)。 - 脚本里显式提升权限:如果脚本没有自动提升权限,尝试在创建目录的代码前加上权限提升逻辑:
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs exit } # 然后再执行创建目录的命令 mkdir C:\Windows\uacbypass -Force
三、处理添加"?"后出现的FilterScript提示
这个提示说明你的脚本末尾可能有未完成的管道命令,比如Where-Object没有指定过滤脚本块。举个例子,如果脚本最后是:
Get-Something | Where-Object
PowerShell就会交互式询问FilterScript参数。你需要检查脚本的完整结构,确保管道命令的参数齐全,比如改成:
Get-Something | Where-Object { $_.Status -eq "Running" }
如果是复制脚本时丢失了部分内容,建议重新获取完整代码,检查所有括号、管道符是否配对完整。
四、调试技巧帮你快速定位问题
- 开启PowerShell调试追踪:在脚本开头加上
Set-PSDebug -Trace 1,这样会显示每一步执行的命令和参数,你能清楚看到哪一行的schtasks命令参数出了问题。 - 拆分复杂命令:把schtasks命令拆成变量单独执行,方便排查:
这样能单独验证参数是否正确。$taskArgs = "/create /tn `"UACBypass`" /tr `"C:\Windows\System32\cmd.exe /c mkdir C:\Windows\uacbypass`" /sc once /st 00:00" & schtasks.exe $taskArgs
内容的提问来源于stack exchange,提问作者Bruce Wayne
相关产品推荐
相关产品推荐

