
CVE-2021-40444 - Exploit RCE completamente armato per Microsoft Office Word
Generatore di docx malevolo per sfruttare CVE-2021-40444 (Esecuzione di codice remoto in Microsoft Office Word), funziona con file DLL arbitrari.
Ora il generatore è in grado di creare il documento necessario per sfruttare anche l'attacco 'Follina' (sfruttando ms-msdt).
Sebbene molti PoC siano già presenti su internet, ho deciso di cimentarmi nell'armare questa vulnerabilità, poiché ciò che ho trovato disponibile mancava di informazioni preziose che vale la pena condividere, anche considerando che Microsoft ha già rilasciato una patch per questa vulnerabilità.
Finora, le uniche risorse preziose che ho visto per creare un generatore completamente funzionante sono:
Le risorse sopra elencate delineano molti dei requisiti necessari per creare una catena completa. Per evitare di ripetere troppe informazioni non necessarie, mi limiterò a riassumere i dettagli rilevanti.
Ci sono diversi requisiti trascurati affinché questo exploit funzioni, che hanno causato il fallimento anche di buoni PoC, come quello di lockedbyte.
Forse nessuno li ha esplicitamente 'rilasciati' per evitare che la vulnerabilità fosse sfruttata ulteriormente. Ma ora è stata patchata, quindi non dovrebbe causare molti problemi rilasciare i dettagli.
Come da questo tweet di Will Dormann, l'HTML deve avere una dimensione di almeno 4096 byte per attivare l''Anteprima' in MS Word.
Il file CAB deve essere patchato a livello di byte per evitare errori di estrazione e per ottenere lo ZipSlip:
filename.inf dovrebbe diventare ../filename.inffilename.inf coffCabStartCFFOLDER.typeCompress CFFOLDER.coffCabStart dovrebbe essere aumentato di 3 (a causa dell'aggiunta di '../'')CFFOLDER.cCfData CFFILE.cbFile dovrebbe essere maggiore dell'intero CFHEADER.cbCabinetCFDATA.csum Le ragioni di questi vincoli sono molte, e non ho passato abbastanza tempo per capirli a fondo, ma vediamo i più importanti:
NOTA1: Defender ora rileva se il file CAB contiene un PE utilizzando il valore _IMAGE_DOS_HEADER.e_magic come firma, evitando potenzialmente che i file PE vengano incorporati nel CAB. Questa firma può essere bypassata? Non ne sono sicuro ma, come osservato in precedenza, questa è una vulnerabilità patchata, quindi non ho intenzione di investire molto altro tempo su questo. Spetta al lettore curioso sviluppare ulteriormente.
NOTA2: La patch di Microsoft blocca schemi URI arbitrari, apparentemente usando un approccio di blacklist (questa è solo una supposizione)
La principale catena di attacco associata a CVE-2021-40444 è l'attacco DLL caricato tramite lo schema URI .cpl. Per sfruttarlo, un attaccante deve generare una DLL appositamente creata. Se vuoi provarlo, prova il mio script evildll-gen.
Come notato da Max Maluin, è possibile interagire con diversi tipi di file abusando di IE e dello schema URI basato sull'estensione del file. Sebbene possa essere un buon modo per sfruttare IE, presenta delle limitazioni.
In effetti, va notato che il metodo utilizzato nell'exploit per scaricare file si basa sugli aggiornamenti dei controlli ActiveX e non può essere utilizzato per scaricare file arbitrari. Secondo la documentazione Microsoft, il tag codebase può puntare solo a pochi tipi di file: OCX, INF e CAB.
Anche se possiamo scaricare direttamente un file OCX o INF, non possiamo comunque essere sicuri di scaricare il file nella posizione corretta nel sistema. Con l'exploit del cab, è possibile spostare il file .inf in un percorso noto utilizzando il path traversal, ma in qualsiasi altro caso il file verrà memorizzato in una directory casuale, rendendolo praticamente impossibile da referenziare.
Ad oggi, non ho trovato un modo per concatenare download ed esecuzione SENZA un file CAB.
Nota: Parlando solo di IE, l'HTML smuggling potrebbe essere uno scenario possibile per sfruttare la vulnerabilità.
Questa tecnica è stata per prima divulgata da Eduardo Braun su Twitter e ulteriormente spiegata in questo articolo.
Si noti che utilizzando questa tecnica, la catena di attacco è leggermente diversa. Questo attacco richiede che l'utente scarichi un file RAR appositamente creato, ottenuto concatenando uno script WSF valido e un file RAR valido. Una volta aperto, il RAR conterrà un DOCX con un riferimento a un HTML, che a sua volta tenterà di caricare il file RAR come script WSF.
Per riassumere:
L'utility del generatore può attualmente riprodurre i seguenti attacchi: