
Roundcube 1.0.0 <= 1.2.2 Remote Code Execution Exploit und angreifbarer Container
Roundcube ist eine weit verbreitete Open-Source-Webmail-Software, die von vielen Organisationen und Unternehmen auf der ganzen Welt genutzt wird. Der Spiegel auf SourceForge beispielsweise zählt allein in den letzten 12 Monaten mehr als 260.000 Downloads, was nur ein kleiner Teil der tatsächlichen Nutzer ist. Sobald Roundcube auf einem Server installiert ist, bietet es authentifizierten Benutzern eine Weboberfläche zum Senden und Empfangen von E-Mails mit ihrem Webbrowser.
In Roundcube 1.2.2 und früher fließt benutzergesteuerte Eingabe ungefiltert in das fünfte Argument eines Aufrufs der PHP-eigenen Funktion mail(), die als sicherheitskritisch dokumentiert ist. Das Problem besteht darin, dass der Aufruf der mail()-Funktion PHP veranlasst, das sendmail-Programm auszuführen. Das fünfte Argument erlaubt es, Argumente an diese Ausführung zu übergeben, was eine Konfiguration von sendmail ermöglicht. Da sendmail die Option -X bietet, um den gesamten Mail-Verkehr in einer Datei zu protokollieren, kann ein Angreifer diese Option missbrauchen und eine bösartige PHP-Datei im Webroot-Verzeichnis des angegriffenen Servers ablegen. Die folgenden Codezeilen lösen die Schwachstelle aus.
Die Schwachstelle hat die folgenden Anforderungen für die Ausnutzung:
mail()-Funktion verwendet (standardmäßig, wenn kein SMTP angegeben wurde [1])mail()-Funktion ist so konfiguriert, dass sie sendmail verwendet (standardmäßig, siehe sendmail_path [2])safe_mode deaktiviert ist (standardmäßig, siehe safe_mode [3])Diese Anforderungen sind nicht besonders anspruchsvoll, was wiederum bedeutet, dass es viele verwundbare Systeme in freier Wildbahn gab.
Um eine verwundbare Umgebung für Ihren Test einzurichten, benötigen Sie Docker und führen einfach den folgenden Befehl aus:
docker build -t vuln/cve-2016-9920 .
docker run --rm -it -p 80:80 vuln/cve-2016-9920
Und es wird eine verwundbare Webanwendung auf Ihrem Host auf dem Port 80 bereitstellen.
In Roundcube 1.2.2 und früher fließt benutzergesteuerte Eingabe ungefiltert in das fünfte Argument eines Aufrufs der PHP-eigenen Funktion
mail(), die als sicherheitskritisch dokumentiert ist. Das Problem besteht darin, dass der Aufruf dermail()-Funktion PHP veranlasst, das sendmail-Programm auszuführen. Das fünfte Argument erlaubt das Übergeben zusätzlicher Parameter an diese Ausführung, was eine Konfiguration von sendmail ermöglicht. Da sendmail die Option-Xbietet, um den gesamten Mail-Verkehr in einer Datei zu protokollieren, kann ein Angreifer diese Option missbrauchen und eine bösartige PHP-Datei im Webroot-Verzeichnis des angegriffenen Servers ablegen. Obwohl diese Schwachstelle selten und nicht weit verbreitet ist, wurde sie von RIPS innerhalb von Sekunden erkannt. [4]
Um dieses Ziel auszunutzen, führen Sie einfach aus:
./exploit.py --host HOST --user USERNAME --pwd PASSWORD --path PATH --www_path WEB_DIRECTORY
Wenn Sie dieses verwundbare Image verwenden, können Sie einfach ausführen:
./exploit.py --host 127.0.0.1 --user username --pwd password --path roundcube --www_path "/var/www/html/roundcube"
Nach der Ausnutzung wird eine Datei namens backdoor.php im Stammverzeichnis des Webverzeichnisses gespeichert. Und der Exploit öffnet Ihnen eine Shell, in der Sie Befehle an die Hintertür senden können:
./exploit.py --host 127.0.0.1 --user username --pwd password --path roundcube --www_path "/var/www/html/roundcube"
[+] CVE-2016-9920 exploit by t0kx
[+] Exploiting 127.0.0.1
[+] Target exploited, acessing shell at http://127.0.0.1/roundcube/backdoor.php
[+] Running whoami: www-data
[+] Done
Dieser Fehler wurde von Robin Peraglie gefunden [4]. Der Haupttext und die Idee für dieses Lehrstück wurden von opsxcq erstellt.
Dieses oder frühere Programme dienen NUR zu Bildungszwecken. Verwenden Sie es nicht ohne Erlaubnis. Der übliche Haftungsausschluss gilt, insbesondere die Tatsache, dass ich (t0kx) nicht für Schäden haftbar bin, die durch direkte oder indirekte Nutzung der Informationen oder der von diesen Programmen bereitgestellten Funktionalität entstehen. Der Autor oder jeder Internetanbieter übernimmt KEINE Verantwortung für den Inhalt oder die missbräuchliche Verwendung dieser Programme oder deren Derivaten. Durch die Nutzung dieser Programme akzeptieren Sie die Tatsache, dass jeglicher Schaden (Datenverlust, Systemabsturz, Systemkompromittierung usw.), der durch die Nutzung dieser Programme verursacht wird, nicht in der Verantwortung von t0kx liegt.