Cyber ~ Tryhackme

Cyborg

Vandaag wederom een walkthrough van een kamer van TryHackMe genaamd Cyborg. Dit was een leuke en interessante kamer met ook een nieuw tintje wat ik zelf nog niet vaak ben tegen gekomen. Dus duik gezellig mee in een nieuw avontuur !

Gaining foothold

We beginnen zoals altijd met een nmap scan om natuurlijk de poorten te vinden die open staan.

Zo te zien zijn er twee poorten open genaamd 22 en 80, laten wij beginnen met poort 80. Als er voor het eerst naar de website wordt gegaan ziet u de volgende webpagina voor u.

Nu heb ik gobuster uitgevoerd om te kijken wat voor paden er aanwezig waren.

We zien dat we twee paden hebben genaamd /admin en /etc. Laten we eerst naar /etc kijken.

We zien een map, vervolgens gaan wij kijken wat zich er in de map bevindt.

Een passwd bestand, dit is erg interessant! Laten wij kijken wat zich in dit bestand bevindt.

Ahhhhh ! een hash, deze gaan wij natuurlijk kraken met hashcat. Met de volgende commando kunnen wij deze hash kraken:

hashcat -m 1600 passwd /usr/share/wordlists/rockyou.txt/rockyou.txt

Met de gevonden wachtwoord heb ik geprobeerd in te loggen op SSH (poort 22) maar geen geluk helaas dus we hebben dit wachtwoord voor iets anders nodig. Nu ben ik terug gegaan naar de website om /admin te bekijken.

Hmm interessant, een archive knop. Hier heb ik op geklikt waarna ik een bestand kan downloaden. Nadat ik het bestand heb gedownload en uitgepakt heb, heb ik de volgende bestanden:

Bij het lezen van README kom ik het volgende tegen:

Hmm interessant, Borg backup. Nooit van gehoord dus laten we eens kijken wat dit precies is. Na op Google te hebben gezocht kom ik op het volgende uit:

Dit is een tool om bestanden te back-uppen. Nadat ik de tool heb gedownload met onderstaande commando:

sudo apt install borgbackup

kon ik de volgende commando uitvoeren dat het bestand wat wij gedownload hebben van de /admin pagina nogmaals uitpakken waarna we meer bestanden kregen te zien:

borg extract home/field/dev/final_archive::music_archive

Na het uitvoeren van bovenstaande commando vraagt hij om een wachtwoord, dit is het wachtwoord dat wij eerder hebben gekraakt met hashcat. Nadat het wachtwoord is ingevoerd hebben wij toegang tot een aantal nieuwe mappen. Een van die mappen was de home folder van een gebruiker genaamd alex. In alex zijn documenten map bevind zich een note.txt met de volgende inhoud:

Dit is het wachtwoord om via SSH te kunnen verbinden met de machine. Nu kunnen wij verbinding maken als low user met de machine.

Privilege escalation

Nu wij low user zijn op de machine voer ik de volgende commando uit om te kijken wat wij kunnen uitvoeren als de root gebruiker:

sudo -l

Waarna het volgende tevoorschijn komt:

Interessant! wij kunnen een script genaamd backup.sh als root uitvoeren. Laten wij een kijkje nemen in het script en wat het precies doet.

#!/bin/bash

sudo find / -name "*.mp3" | sudo tee /etc/mp3backups/backed_up_files.txt


input="/etc/mp3backups/backed_up_files.txt"
#while IFS= read -r line
#do
  #a="/etc/mp3backups/backed_up_files.txt"
#  b=$(basename $input)
  #echo
#  echo "$line"
#done < "$input"

while getopts c: flag
do
        case "${flag}" in 
                c) command=${OPTARG};;
        esac
done



backup_files="/home/alex/Music/song1.mp3 /home/alex/Music/song2.mp3 /home/alex/Music/song3.mp3 /home/alex/Music/song4.mp3 /home/alex/Music/song5.mp3 /home/alex/Music/song6.mp3 /home/alex/Music/song7.mp3 /home/alex/Music/song8.mp3 /home/alex/Music/song9.mp3 /home/alex/Music/song10.mp3 /home/alex/Music/song11.mp3 /home/alex/Music/song12.mp3"

# Where to backup to.
dest="/etc/mp3backups/"

# Create archive filename.
hostname=$(hostname -s)
archive_file="$hostname-scheduled.tgz"

# Print start status message.
echo "Backing up $backup_files to $dest/$archive_file"

echo

# Backup the files using tar.
tar czf $dest/$archive_file $backup_files

# Print end status message.
echo
echo "Backup finished"

cmd=$($command)
echo $cmd

Het script doet het volgende. het maakt een back-up van de volgende bestanden:

  • song1.mp3
  • song2.mp3
  • song3.mp3
  • song4.mp4

etc etc etc. Plaats de backup in ‘/etc/mp3backups/’ waarna hij een archief bestand aanmaakt en deze de naam geeft van de machine dus de commando hostname gevolgd door scheduled.tgz.

Daarna print het script een bericht naar het scherm en voert een tar commando uit om de bestanden te back-uppen. Het gevaarlijke in dit script is het volgende:

In de eerste rode cirkel zie je dat jij een argument mee kan geven namelijk ‘-c’. Dat is wat getopts c: flag betekend. Daarna geeft hij de waarde die aan de parameter mee wordt gegeven aan de variable command. In de tweede rode cirkel zie je dat hij de variable command aan cmd geeft en vervolgens toont hij cmd met behulp van echo.

Dus wat wij hier hebben is een RCE, als ik het script als volgt uitvoer:

je ziet dat ik de -c parameter mee geef en de waarde root, onderaan in de tweede rode cirkel zie je root. Dit betekend dat hij het script uitvoert als de root gebruiker. Dit is erg interessant, nu moeten wij de vlag zien te bemachtigen, dit kan door de volgende commando uit te voeren:

Voila ! wij hebben nu de vlag en daarmee de machine afgerond. Zou jij nog een reverse shell willen dan zou je het volgende kunnen doen:

sudo /etc/mp3backups/backup.sh -c '/bin/bash -i'

Bedankt voor het lezen en tot de volgende keer !

Please share and spread
NederlandsEnglish