Level 03 —— 利用计划任务提权

详情:

检查 flag03 的主目录并记下那里的文件。有一个 crontab 每隔几分钟就会调用一次。要执行此级别,请以 level03 帐户和密码登录。此级别的文件位于 /home/flag03。

Solution:

根据官方的提示,这关有一个Crontab脚本,它会每间隔两分钟自动执行/home/flag03下的writablel.sh。(可以用nebula账号登录系统,通过sudo ls /var/spool/cron/crontabs看到Crontab的设置)

crontab 是 Linux/Unix 系统中用来定时执行任务的一种机制,全称是 “cron table”。

它允许你按照设定的时间表,自动执行命令或脚本 —— 类似“闹钟”或“自动任务计划”。

而writable.sh内容如下:

#!/bin/sh
for i in /home/flag03/writable.d/*;do
(ulimit -t 5;bash -x "$i")
rm -f "$i"
done

这个Crontab脚本做的事是自动执行/home/flag03/writable.d目录里的文件,之后再删除。ulimit -t 5限制当前子进程最多只能使用 5 秒 CPU 时间,这个不要紧,最重要的是我们要利用writable.d这个目录来完成exploit,这个crontab是以flag03的用户创建的,因此每次执行都是flag03这个身份,而writable.d这个目录任何人都可以读写,所以只需要放一个可执行的脚本在writable.d里,等着它自动运行:

image-20250602203201215

等待两分钟writable.sh将会被执行,由于writable.sh的执行,导致writable.d里的run也会随着被执行,接着我们查看结果。本关很好地体现出权限不严格导致的结果。