Hack the Box Starting Point Tier 2: Oopsie

Huom. kohteen ja oma tun0 IP-osoitteet vaihtuvat tehtävässä, koska harjoitusta tehty eri kerroilla

User flag

Kohteen Nmap-skannaus paljastaa, että kohteessa on portit 22 (SSH) ja 80 (HTTP) avoinna. Selaimella menty kohteen IP-osoitteeseen ja huomattu, että sivulla on sisältöä.

Kali Linuxin Firefox-selaimessa tehty manuaalinen proxy-konfiguuraatio localhost-osoitteelle 127.0.0.1 porttiin 8080.

Käynnistetty Burb Suite, laitettu Proxy-välilehdeltä “Intercept” off-tilaan, jotta sivuston sisältö näkyy, kun proxy on päällä. Avattu Target-välilehti, päivitetty selaimen sivu, jossa kohteen IP-osoite auki, ja huomataan että kohteen IP-osoite tuli näkyviin Burb Suiteen. Oranssilla näkyvistä huomataan mielenkiintoinen URL-osoite /cdn-cgi/login.

Menty selaimella osoitteeseen: {TARGET_IP}/cdn-cgi/login. Painettu sivulta “Login as Guest”.

Aukesi uusi sivu: Repair Management System.

Menty Uploads-välilehdelle. Sivulla lukee: “This action require super admin rights”. Sivulla oltiin guest käyttäjänä, joten jos sivulle halutaan päästä, pitää saada käyttöön super admin oikeudet.

Avataan Firefoxissa Developer Tools painamalla näppäimistöstä F12. Storage-välilehdellä on nähtävillä sivun evästeet, josta huomataan “role=guest” ja “user=2233“. Mahdollisesti jos tiedetään käyttäjän super admin käyttäjämuuttuja, saadaan pääsy Uploads-sivulle.

Vaihdettu Account-välilehdelle ja osoiteriviltä huomataan, että lukee osoitteena {TARGET_IP}/cdn-cgi/login/admin.php?content=accounts&id=2.

Vaihdettu URL-osoitteen id numeroon 1, ja huomataan, että sivulla näkyy nyt admin käyttäjän Access ID: 34322.

Muokattu evästeessä Developer Toolin avulla role: admin ja user: 34322. Näillä arvoilla saatu pääsy Uploads-sivulle.

Seuraavaksi otetaan yhteys kohteeseen PHP-reverse-shellin avulla. Käytetään Kali Linuxista löytyvää valmista PHP-reverse-shelliä, joka löytyy polusta: /usr/share/webshells/php/php-reverse-shell.php
Tehty tiedostosta kopio ja muokattu $ip kohtaan oma tun0 IP-osoite, sekä $port kohtaan vaihdettu portti 4444.

Uploads-välilehden sivulle ladattu onnistuneesti muokattu php-reverse-shell.php tiedosto painamalla sivulla “Browse” ja “Upload”.

Gobuster työkalulla käyttäen sanalistaa directory-list-2.3-small.txt, varmistetaan mihin hakemistoon ladattu php-reverse-shell.php tiedosto meni. Käytetään komentoa: gobuster dir –url http://{TARGET_IP}/ –wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php
Gobuster löysi heti loogisen hakemiston /uploads

/uploads hakemistoon ei pääsyä.

Käynnistetty Netcat-kuuntelija samaan porttiin 4444, joka muokattiin php-reverse-shell.php tiedostoon.

Menty selaimella osoitteeseen: http://{TARGET_IP}/uploads/php-reverse-shell.php
Netcat-kuuntelijasta huomataan, että onnistuneesti saatiin reverse shell: “Connection received on 10.129.132.136” (kohteen IP-osoite). Lopuksi komennolla python3 -c ‘import pty;pty.spawn(“/bin/bash”)’ käynnistetty toimiva shell käyttäjänä www-data.

Komennolla cat /etc/passwd luettu tiedosto /etc/passwd, jotta voidaan tarkastella kohteessa olevia käyttäjätilejä. Huomataan, että käyttäjällä robert on /bin/bash -shell, joka mahdollistaa sisäänkirjautumisen.

Hakemiston /var/www/html/cdn-cgi/login tiedostosta db.php löydetty käyttäjän robert salasana M3g4C0rpUs3r!

Kirjauduttu sisään käyttäjänä robert ja syötetty löydetty salasana. Siirrytty kotihakemistoon, ja sieltä löydetty tiedosto user.txt, joka sisälsi user flagin.

Root flag

Käyttäjänä robert ei ole mahdollista suorittaa komentoja kohotetuin oikeuksin, koska robert ei kuulu käyttäjäryhmään sudo. Komennolla id tarkistetaan ryhmät, joihin robert kuuluu. Huomataan, että robert kuuluu ryhmään bugtracker, ja löydetty tiedosto bugtracker hakemistosta /usr/bin.

Komennolla: ls -la /usr/bin/bugtracker && file /usr/bin/bugtracker tarkistetaan tiedoston bugtracker käyttöoikeudet ja minkä tyyppinen tiedosto on kyseessä. Tiedosto on ELF 64-bit binääritiedosto, jossa on suid asetettu. Koska tiedoston omistaja on käyttäjä root, tiedosto suoritetaan aina root käyttäjänä.

Suoritettu tiedosto bugtracker ja “Bug ID” kohtaan satunnaisesti laitettu numero 7. Bugtracker hyväksyy syötetyn numeron 7 tiedoston nimenä, joka luetaan cat komennon avulla. Syötteessä cat: root/reports/7 ei näy koko polkua tiedostoon cat.

Siirrytty hakemistoon /tmp ja luodaan tiedosto cat, johon halutaan shell. Komento: echo “/bin/sh” > cat
Lisätty tiedosto cat suoritettavaksi komennolla: chmod +x cat

Asetetaan hakemisto /tmp muuttujaan PATH komennolla: export PATH=/tmp:$PATH ja tarkistetaan $PATH komennolla: echo $PATH ja huomataan, että PATH on nyt asetettu hakemistoon /tmp, jossa suoritettava tiedosto cat sijaitsee.

Suoritetaan bugtracker /tmp hakemistosta ja laitetaan Bug ID kohtaan jälleen satunnainen numero 7. Onnistuneesti saatu shell käyttäjänä root.

Siirrytty /root kansioon ja löydetty sieltä tiedosto root.txt, joka sisältää root flagin. Komento cat ei toiminut normaaliin tapaan, koska se oli asetettu aiemmin PATH muuttujaan.