Cron Jobs
Theory
Cron is a job scheduler in Unix-based operating systems. Cron Jobs are used for scheduling tasks by executing commands at specific dates and times on the server. By default, Cron runs as root when executing /etc/crontab, so any commands or scripts that are called by the crontab will also run as root. It can be an intresting privelege escalation path.
Practice
Misc Cron Jobs
You may want to enumerate cron jobs with the following commands
#Print jobs with Crontab binary
crontab -l
crontab -l -u username
#Directly cat files
cat /etc/cron* /etc/at* /etc/anacrontab /var/spool/cron/crontabs/root 2>/dev/null | grep -v "^#"
#From logs
cat /var/log/syslog | grep "CRON"
#In /etc/ and subfolders
cat /etc/crontab
cat /etc/cron*/*
# In /var/spool
cat /var/spool/cron/*
cat /var/spool/cron/crontabs/*
Cron Path
For example, inside /etc/crontab you can find the PATH: PATH=/home/user:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
We need to check if we have permissions to write on each path, if a the binary in the cron job is specified without the full command path, we may be able to exploit it.
$ cat /etc/crontab
SHELL=/bin/sh
PATH=/home/user:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
17 * * * * root path-exploit.sh
Wildcard Injection
If a cron job script running as root contains an *
inside a command, then you may be able to exploit it.
$ cat /etc/crontab
SHELL=/bin/sh
PATH=/home/user:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
17 * * * * root rsync -a *.sh rsync://host.back/src/rbd
File Overwriting and Symlink
If you can modify a cron job script executed by root, or it use a directory where you have full access, the we can exploit it.
$ cat /etc/crontab
SHELL=/bin/sh
PATH=/home/user:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
17 * * * * root /opt/crons/overwrite.sh
References
Last updated
Was this helpful?