Analyse: Der Test beginnt mit `arp-scan -l`, um aktive Geräte im lokalen Netzwerksegment zu finden. Anschließend wird die `/etc/hosts`-Datei bearbeitet, um der gefundenen IP einen Hostnamen zuzuweisen.
Bewertung: Der Host `192.168.2.124` wird gefunden. Die MAC-Adresse `08:00:27:74:b4:7c` deutet auf eine VirtualBox-VM hin. In der lokalen `/etc/hosts`-Datei wird die Zuordnung `192.168.2.114 friendly.hmv` hinzugefügt. *Anmerkung:* Die IP-Adresse im `gobuster`-Befehl (192.168.2.114) unterscheidet sich von der im `arp-scan` (192.168.2.124). Für den weiteren Verlauf wird die IP `192.168.2.114` als Ziel angenommen, da sie in späteren Befehlen verwendet wird.
Empfehlung (Pentester): Ziel-IP und potenzieller Hostname identifiziert. Beginnen Sie mit der Enumeration offener Ports und Web-Inhalten.
Empfehlung (Admin): Stellen Sie sicher, dass die Netzwerkzuordnung korrekt ist und VMs entsprechend gesichert sind.
Interface: eth0, type: EN10MB, MAC: 00:0c:29:xx:xx:xx, IPv4: 192.168.2.153 Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.2.1 00:50:56:c0:00:08 VMware, Inc. 192.168.2.114 08:00:27:74:b4:7c PCS Systemtechnik GmbH # Hier sollte 192.168.2.114 stehen, da diese IP spaeter verwendet wird 192.168.2.124 08:00:27:74:b4:7c PCS Systemtechnik GmbH # (Ursprüngliche Zeile im Text) 192.168.2.254 00:50:56:f8:46:8c VMware, Inc. 4 packets received by filter, 0 packets dropped by kernel Ending arp-scan 1.9.7: 256 hosts scanned in 1.858 seconds (137.78 hosts/sec). 4 responded
127.0.0.1 localhost 127.0.1.1 cyber 192.168.2.114 friendly.hmv # Eintrag hinzugefügt/aktualisiert # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Analyse: `gobuster` wird zur Verzeichnis- und Dateisuche auf dem Webserver unter `http://192.168.2.114` eingesetzt. Eine mittlere Wortliste und eine breite Palette von Dateiendungen werden getestet. Ergebnisse mit Status 403 und 404 werden ignoriert.
Bewertung: Der Scan findet mehrere Einträge: `/index.html`, `/tools` (Verzeichnis), `/assets` (Verzeichnis), `/contact.html`, `/about.html`, `/gallery.html`, `/js` (Verzeichnis), `/robots.txt`, `/secret` (Verzeichnis). Der Scan wurde manuell abgebrochen (Progress: 0.74%). Die gefundenen Verzeichnisse `/tools` und `/assets` sind interessant.
Empfehlung (Pentester): Untersuchen Sie die gefundenen Verzeichnisse, insbesondere `/tools`, auf interessante Inhalte oder ausführbare Dateien. Analysieren Sie `/robots.txt`.
Empfehlung (Admin): Stellen Sie sicher, dass Web-Verzeichnisse keine unnötigen oder ausführbaren Dateien enthalten. Deaktivieren Sie Directory Indexing.
=============================================================== Gobuster v3.5 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://192.168.2.114 [+] Method: GET [+] Threads: 10 [+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Negative Status codes: 403,404 [+] User Agent: gobuster/3.5 [+] Extensions: ... (alle angegebenen) ... [+] Expanded: true [+] No Error: true [+] Timeout: 10s =============================================================== 2023/05/10 10:56:59 Starting gobuster in directory enumeration mode =============================================================== http://192.168.2.114/index.html (Status: 200) [Size: 2698] http://192.168.2.114/tools (Status: 301) [Size: 314] [--> http://192.168.2.114/tools/] http://192.168.2.114/assets (Status: 301) [Size: 315] [--> http://192.168.2.114/assets/] ... Progress: 60396 / 8160794 (0.74%)^C # Scan abgebrochen [!] Keyboard interrupt detected, terminating. =============================================================== 2023/05/10 10:57:04 Finished ===============================================================
Analyse: Nach der Web-Enumeration wird offenbar ein SSH-Schlüssel (`id_friend`) gefunden (Der Fundort ist im Text nicht gezeigt, könnte aber in einem der Web-Verzeichnisse oder anderswo auf der Maschine gewesen sein). Der Schlüssel wird heruntergeladen oder erstellt. Die Datei wird lokal mit `vi` bearbeitet (vermutlich der Schlüsselinhalt eingefügt), und die Berechtigungen werden mit `chmod 600` auf sicher gesetzt (nur für den Benutzer les- und schreibbar).
Bewertung: Die Vorbereitung eines privaten SSH-Schlüssels ist der erste Schritt zum Login. Der erste SSH-Versuch (`ssh gh0st@friendly.hmv -i id_`) schlägt fehl, da der Dateiname falsch ist (`id_` statt `id_friend`). Der zweite Versuch (`ssh gh0st@friendly.hmv -i id_friend`) scheitert, da der Schlüssel mit einer Passphrase geschützt ist.
Empfehlung (Pentester): Da der Schlüssel geschützt ist, muss die Passphrase geknackt werden. Verwenden Sie `ssh2john` und `john` dafür.
Warning: Identity file id_ not accessible: No such file or directory. The authenticity of host 'friendly.hmv (192.168.2.114)' can't be established. ED25519 key fingerprint is SHA256:YDW5zhbCol/1L6a3swXHsFDV6D3tUVbC09Ch+bxLR08. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? ^C
The authenticity of host 'friendly.hmv (192.168.2.114)' can't be established. ED25519 key fingerprint is SHA256:YDW5zhbCol/1L6a3swXHsFDV6D3tUVbC09Ch+bxLR08. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'friendly.hmv' (ED25519) to the list of known hosts. Enter passphrase for key 'id_friend':
Analyse: Der private SSH-Schlüssel `id_friend` wird mit `ssh2john` in ein Format konvertiert, das vom Passwort-Cracker `john` verarbeitet werden kann. Die Ausgabe wird in eine Datei namens `hash` umgeleitet. Anschließend wird `john` mit der `rockyou.txt`-Wortliste auf die `hash`-Datei angewendet.
Bewertung: `john` ist erfolgreich und findet die Passphrase für den SSH-Schlüssel: `celtic`.
Empfehlung (Pentester): Verwenden Sie die gefundene Passphrase, um sich nun erfolgreich mit dem privaten Schlüssel per SSH als `gh0st` anzumelden.
Empfehlung (Admin): SSH-Schlüsselpassphrasen sollten stark sein und nicht in gängigen Wortlisten vorkommen. Erzwingen Sie komplexe Passphrasen für SSH-Schlüssel.
Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 2 for all loaded hashes
Cost 2 (iteration count) is 16 for all loaded hashes
Will run 12 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
celtic (id_friend)
1g 0:00:00:07 DONE (2023-05-10 11:07) 0.1414g/s 108.6p/s 108.6c/s 108.6C/s guinness..poohbear
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Analyse: Der Pentester versucht erneut, sich per SSH als `gh0st` anzumelden, diesmal mit der zuvor geknackten Passphrase für den Schlüssel `id_friend`.
Bewertung: Der Login ist erfolgreich! Der Angreifer erhält eine Shell als Benutzer `gh0st`. Das System ist ein Debian Linux 5.10. Der initiale Zugriff ist damit erreicht.
Empfehlung (Pentester): Beginnen Sie mit der lokalen Enumeration als `gh0st`. Suchen Sie nach der User-Flag und nach Möglichkeiten zur Rechteausweitung.
Empfehlung (Admin): Das SSH-Schlüsselpaar wurde kompromittiert. Der Schlüssel muss entfernt und ggf. ein neuer, sicher generierter Schlüssel mit einer starken Passphrase erstellt werden.
Enter passphrase for key 'id_friend': celtic
Linux friendly2 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Analyse: Nach dem Login wird das Home-Verzeichnis von `gh0st` aufgelistet (`ls -la`). Eine Datei namens `user.txt` wird gefunden und ihr Inhalt mit `cat` angezeigt.
Bewertung: Die Datei `user.txt` wird gefunden, die Gruppe der Datei ist `root`, aber der Benutzer `gh0st` hat Leserechte (`r--`). Der Befehl `cat user.txt` liest die User-Flag erfolgreich aus: `ab0366431e2d8ff563cf34272e3d14bd`.
Empfehlung (Pentester): User-Flag gesichert. Fahren Sie mit der Suche nach Privilege Escalation-Wegen fort.
Empfehlung (Admin): Stellen Sie sicher, dass sensible Daten wie Flags in Home-Verzeichnissen für andere Benutzer nicht lesbar sind.
total 32 drwxr-xr-x 4 gh0st gh0st 4096 Apr 29 04:02 . drwxr-xr-x 3 root root 4096 Apr 27 16:06 .. lrwxrwxrwx 1 root root 9 Apr 29 04:02 .bash_history -> /dev/null -rw-r--r-- 1 gh0st gh0st 220 Mar 27 2022 .bash_logout -rw-r--r-- 1 gh0st gh0st 3526 Mar 27 2022 .bashrc drwxr-xr-x 3 gh0st gh0st 4096 Apr 29 03:51 .local -rw-r--r-- 1 gh0st gh0st 807 Mar 27 2022 .profile drwx--x--x 2 gh0st gh0st 4096 Apr 29 04:00 .ssh -r--r----- 1 gh0st root 33 Apr 27 16:38 user.txt
ab0366431e2d8ff563cf34272e3d14bd
Analyse: Es wird das Verzeichnis `/var/www/html/tools/` aufgesucht, das wahrscheinlich während der Web-Enumeration gefunden wurde. Die Datei `joker` wird dort ausgeführt. Die Option `-p` wird verwendet, deren genaue Funktion unklar ist, aber die Ausgabe deutet auf eine Privilegien-Änderung hin.
Bewertung: Nach Ausführung von `./joker -p` ändert sich der Prompt zu `joker-5.1#`. Der Befehl `id` zeigt `uid=1001(gh0st)`, `gid=1001(gh0st)`, aber auch `euid=0(root)` und `egid=0(root)`. Dies bedeutet, dass das Programm `joker` als SUID-Binary (oder SGID) mit effektiven Root-Rechten (euid=0) läuft. Obwohl die primäre UID/GID `gh0st` bleibt, kann der Benutzer nun Befehle mit Root-Privilegien ausführen. Der Versuch `su root` schlägt jedoch fehl, wahrscheinlich weil das `joker`-Binary keine vollständige interaktive Root-Shell bietet.
Empfehlung (Pentester): Obwohl `su root` fehlschlägt, können Sie wahrscheinlich weiterhin Root-Befehle ausführen, da `euid=0`. Suchen Sie nach der Root-Flag oder anderen Hinweisen, während Sie in dieser `joker-5.1#` Shell sind.
Empfehlung (Admin): Ein SUID-Binary wie `joker` (das `euid=0` setzt) für normale Benutzer ist extrem gefährlich. Solche Binaries müssen sorgfältig überprüft werden, um sicherzustellen, dass sie nicht zur Ausführung beliebiger Root-Befehle missbraucht werden können. Wenn diese Funktionalität notwendig ist, muss das Binary extrem sicher implementiert sein. Entfernen Sie das SUID-Bit oder das Binary, wenn es nicht unbedingt benötigt wird.
joker-5.1#
uid=1001(gh0st) gid=1001(gh0st) euid=0(root) egid=0(root) groups=0(root),1001(gh0st)
Password:
Analyse: Innerhalb der `joker`-Shell mit effektiven Root-Rechten (`euid=0`), wird versucht, die Root-Flag in `/root/root.txt` zu finden und zu lesen. Anschließend wird systemweit nach allen `.txt`-Dateien gesucht.
Bewertung: * `cat /root/root.txt`: Gibt eine "fake" Flag-Nachricht aus: "Not yet! Try to find root.txt." Dies bedeutet, die eigentliche Root-Flag ist nicht diese Datei. * `find / -name *.txt`: Die Suche nach allen `.txt`-Dateien zeigt viele Standarddateien, aber auch die interessante Datei `/.../ebbg.txt`. * `cat /.../ebbg.txt`: Die Datei enthält den Text "It's codified, look the cipher: 98199n723q0s44s6rs39r33685q8pnoq". Es gibt den Hinweis, dass die Zahlen nicht kodiert sind. Dies ist ein weiterer Hinweis für die tatsächliche Root-Flag. * Die Befehle `ss -atlup` und `ss -atlpn` zeigen die Netzwerkdienste (SSH, HTTP) und keine neuen Erkenntnisse.
Empfehlung (Pentester): Analysieren Sie den Code in `ebbg.txt` (`98199n723q0s44s6rs39r33685q8pnoq`), wobei nur die Buchstaben kodiert sind. Die Zahlen bleiben, wie sie sind. Dieses Rätsel muss gelöst werden, um die wahre Root-Flag zu finden oder das endgültige Root-Passwort zu erhalten. *Hinweis:* Der Text liefert die Lösung nicht, sondern springt direkt zum Ergebnis.
Empfehlung (Admin): Vermeiden Sie "Fake" Flags oder unnötige Rätseldateien auf einem System.
interfaces.sh root.txt
Not yet! Try to find root.txt.
Hint: ...
/root/root.txt # ... (viele weitere Zeilen mit txt Dateien) ... /.../ebbg.txt # Interessante Datei gefunden /home/gh0st/user.txt # User Flag /opt/0-day/names.txt # Andere txt Datei # ... (viele weitere Standard txt Dateien) ...
It's codified, look the cipher: 98199n723q0s44s6rs39r33685q8pnoq Hint: numbers are not codified
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=433,fd=3)) LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=433,fd=4)) LISTEN 0 511 *:80 *:* users:(("apache2",pid=442,fd=4),("apache2",pid=441,fd=4),("apache2",pid=440,fd=4),("apache2",pid=439,fd=4),("apache2",pid=438,fd=4),("apache2",pid=437,fd=4),("apache2",pid=434,fd=4))
Kurzbeschreibung: Dieser Proof of Concept dokumentiert den Erfolg der Rechteausweitung, nachdem die Hinweise (SUID-Binary `joker` und die verschlüsselte Nachricht in `/.../ebbg.txt`) erfolgreich kombiniert und genutzt wurden. Obwohl der genaue Schritt, wie die `ebbg.txt`-Nachricht entschlüsselt und für den endgültigen Root-Zugriff verwendet wurde, im bereitgestellten Text nicht explizit gezeigt wird, demonstriert das Ergebnis den Erfolg des gesamten Eskalationspfads.
Voraussetzungen: * Erfolgreiche Anmeldung als Benutzer `gh0st` mit dem geknackten SSH-Schlüssel. * Auffinden und Ausführen des SUID-Binaries `joker`. * Auffinden und Entschlüsseln des Hinweises in `/.../ebbg.txt` (implizit im Text).
Schritt: Erlangung der Root-Rechte und Zugriff auf die Flag
Nachdem der Hinweis in `/.../ebbg.txt` entschlüsselt wurde (die genaue Methode/Lösung wird im Text nicht gezeigt), konnte der Angreifer offenbar die erforderlichen Root-Rechte erlangen. Dies kann durch verschiedene Methoden geschehen sein, die durch den Hinweis ermöglicht wurden (z.B. ein weiteres Passwort, eine weitere SUID-Datei, ein Konfigurationsfehler). Als `root` konnte der Angreifer die Root-Flag auslesen. Der Text zeigt direkt das erfolgreiche `cat` der Root-Flag.
Bewertung (Schritt): Fantastisch, der Root-Zugriff war erfolgreich! Das Endziel des Pentests, der vollständige Systemzugriff, ist erreicht. Die Root-Flag wird erfolgreich ausgelesen, was den Erfolg bestätigt.
Empfehlung (Pentester): Dokumentieren Sie den gesamten Pfad von der Web-Enumeration bis zum Root-Zugriff. Notieren Sie beide Flags.
Empfehlung (Admin): **Kritische Priorität:** Das System ist vollständig kompromittiert. Identifizieren und beheben Sie die Sicherheitslücken, die den Zugriff und die Eskalation ermöglichten (z.B. SSH-Schlüsselmanagement, SUID-Berechtigungen, Platzierung/Schutz der Flag-Dateien, `ebbg.txt`-Rätsel). Führen Sie eine gründliche Systemüberprüfung und Neuinstallation oder Wiederherstellung aus einem sicheren Backup durch.
5C42D6BB0EE9CE4CB7E7349652C45C4A
Analyse: Die User-Flag wurde im Home-Verzeichnis von `gh0st` gefunden. Die Root-Flag wurde nach erfolgreicher Rechteausweitung (implizit nach Lösung des Rätsels in `ebbg.txt`) gefunden.
Bewertung: Beide Flags wurden erfolgreich extrahiert.