计划任务是windows系统中常见的功能,使用计划任务可以帮助运维人员或者开发人员在指定时间或指定的时间间隔内运行所指定的计算机程序、脚本或系统命令,在Windows与Linux中都有计划任务功能。如果某项计划任务由SYSTEM权限运行,但对应的执行文件、脚本存放在一个低权限用户可操作的目录中,则可能导致提权漏洞。
在Win8之前我们可以使用at命令来帮助创建与执行计划任务,在终端中输入命令at 10:01 notepad.exe,则可以创建一个在时间到达10:01时自动打开notepad.exe的计划任务,命令执行结果如图1-1所示。
而在Win8之后at命令被取消,取而代之的是schtasks命令,schtasks命令相较于at命令拥有更细化的配置选项,schtasks使计划任务的配置变得高度自由化,使用命令schtasks /Create /TN test /SC DAILY /ST 10:01 /TR notepad.exe创建一个在10:01时运行notepad.exe的计划任务,而在这条命令中/Create参数代表创建计划任务,/TN参数则用来设置所创建计划任务的名称,/SC参数用来设置计划任务的运行频率,/ST参数用来设置具体事件,/TR参数用来设置要进行的动作,参数值参考表1-1与表1-2,命令执行结果如图1-2所示。
表1-1 值参考表
值 | 说明 |
---|---|
MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY | 指定计划的时间单位 |
ONCE | 任务在指定的日期和时间运行一次 |
ONSTART | 任务在每次系统启动的时候运行,可以指定启动的日期,或下一次系统启动的时候运行任务 |
ONLOGON | 每当用户(任意用户)登录的时候,任务就运行。可以指定日期,或在下次用户登录的时候运行任务 |
ONIDLE | 只要系统空闲了指定的时间,任务就运行。可以指定日期,或在下次系统空闲的时候运行任务 |
表1-2 参数的含义
计划类型 | 修饰符 | 说明 |
---|---|---|
MINUTE | 1~1439 | 任务每n分钟运行一次 |
HOURLY | 1~23 | 任务每n小时运行一次 |
DAILY | 1~365 | 任务每n天运行一次 |
WEEKLY | 1~52 | 任务每n周运行一次 |
MONTHLY | 1~12 | 任务每n月运行一次 |
LASTDAY | 任务在月份的最后一天运行 | |
FIRST、SECOND、THIRD、FOURTH、LAST | 与/dday参数共同使用,并在特定的周和天运行任务,例如在月份的第三个周三运行 |
创建计划任务之后,schtasks会在C:\Windows\System32\Tasks目录下生成一个刚刚所创建计划任务对应的配置文件,如图1-3所示,而生成的文件名称将会使用/TN所设置的计划任务名称,计划任务会使用xml格式来保存,具体内容如图1-4所示。
从图1-4可以看到<RunLevel>配置项,该配置项的值主要用于设置在运行计划任务时所使用的权限,该配置项中可以设置的权限主要分为两种:LeastPrivilege代表最低权限;HighestAvailable代表最高权限。如果想要将计划任务的运行权限指定为HighestAvailable,我们可以使用命令schtasks /Create /TN test /SC DAILY /ST 10:01 /TR notepad.exe /RL HIGHEST,其中/RL参数用来设置计划任务运行级别,当参数值指定为HIGHEST时,该计划任务将以高权限运行。
而问题出现于/TR参数中,如果计划任务使用高权限运行,而/TR参数指定了一个可执行文件,而被指定的可执行文件存放于一个低权限目录,利用该错误配置可实现权限提升,如图4-21所示,可以看到/TR参数所指定的执行文件为C:/Temp/ssl.exe,使用Windows自带的权限检查工具icacls检查C:/Temp/ssl.exe文件的权限,使用命令icacls "C:/Temp/ssl.exe",执行结果如图1-5所示。
从图1-6中可以看出admin用户均对该文件具有完全控制权,而我们当前会话就是admin用户,于是使用Metasploit生成一个攻击机回连程序并将程序名设置为ssl.exe,生成完成后将该文件替换掉原有的C:/temp/ssl.exe,替换后随着计划任务的运行,使用Metasploit生成的攻击机回连程序也将会被运行,如图1-7我们将得到一个SYSTEM权限的回连会话。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。