Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2021-40444 — CVE-2021-40444 - Exploit RCE completamente armato per Microsoft Office Word | Kitploit
Strumenti/GitHubGitHub/klezvirus/cve-2021-40444
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebAnalisi MalwareCommand and ControlApprendimento e Formazione
GitHubklezvirus/cve-2021-40444

CVE-2021-40444

CVE-2021-40444 - Exploit RCE completamente armato per Microsoft Office Word

Vedi Repository
8321642 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2021-40444 completamente armato

Generatore di docx malevolo per sfruttare CVE-2021-40444 (Esecuzione di codice remoto in Microsoft Office Word), funziona con file DLL arbitrari.

Aggiornamento 31/05/2022 - CVE-2022-30190 - Follina

Ora il generatore è in grado di creare il documento necessario per sfruttare anche l'attacco 'Follina' (sfruttando ms-msdt).

Contesto

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:

  • Blog di Ret2Pwn
  • Tweet di j00sean
  • Tweet di wdormann

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.

Catena di attacco

  1. Docx aperto
  2. La relazione memorizzata in document.xml.rels punta a un html malevolo
  3. L'anteprima di IE viene avviata per aprire il link HTML
  4. JScript all'interno dell'HTML contiene un oggetto che punta a un file CAB e un iframe che punta a un file INF, preceduto dalla direttiva ".cpl:"
  5. Il file CAB viene aperto, il file INF viene memorizzato nella directory %TEMP%\Low
  6. A causa di una vulnerabilità di Path traversal (ZipSlip) nel CAB, è possibile memorizzare l'INF in %TEMP%
  7. Quindi, il file INF viene aperto con la direttiva ".cpl:", causando il caricamento laterale del file INF tramite rundll32 (se si tratta di una DLL)

Requisiti trascurati

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.

File HTML

Come da questo tweet di Will Dormann, l'HTML deve avere una dimensione di almeno 4096 byte per attivare l''Anteprima' in MS Word.

File CAB

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.inf
  • filename.inf dovrebbe essere esattamente <12-char>.inf Non è proprio vero, l'importante è modificare coffCabStart
  • CFFOLDER.typeCompress dovrebbe essere 0 (non compresso)
  • CFFOLDER.coffCabStart dovrebbe essere aumentato di 3 (a causa dell'aggiunta di '../'')
  • CFFOLDER.cCfData dovrebbe essere 2
  • CFFILE.cbFile dovrebbe essere maggiore dell'intero CFHEADER.cbCabinet
  • CFDATA.csum dovrebbe essere ricalcolato (o azzerato) [OPZIONALE]

Le ragioni di questi vincoli sono molte, e non ho passato abbastanza tempo per capirli a fondo, ma vediamo i più importanti:

  • TypeCompress: Se il CAB è compresso, il trucco di aprirlo all'interno di un file oggetto per attivare la scrittura dell'INF fallirà Falso, sono riuscito a ottenere lo stesso risultato con un campione compresso in MSZIP
  • CoffCabStart: CoffCabStart fornisce la posizione assoluta della prima struttura CFDATA, poiché abbiamo aggiunto un '../', dovremmo aumentarla di 3 per puntare al file (è più un'ipotesi)
  • cCfData: Poiché c'è solo 1 file, dovremmo avere solo 1 CFDATA, non sono sicuro del perché debba essere impostato a 2 In effetti, possiamo lasciarlo a 1
  • cbFile: È interessante notare che, se l'estrazione del CAB si conclude senza errori, il file INF verrà contrassegnato per la cancellazione da WORD, rovinando l'exploit. L'unico modo per prevenirlo è far credere a WORD che l'estrazione sia fallita. Se il valore di cbFile è definito maggiore del file cabinet stesso, l'estrattore raggiungerà un EOF prima di leggere tutti i byte definiti in cbFile, sollevando un errore di estrazione.
  • [OPZIONALE] Questo valore sembra non essere controllato da MS Word. Ad ogni modo, per avere un CAB corretto, il valore csum dovrebbe essere ricalcolato. Fortunatamente, come notato da j00sean e secondo la documentazione MS, questo valore può essere 0

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)

Attacco DLL

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.

JScript, VBScript, Javaw, MSIexec, ...

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à.

Attacco senza CAB utilizzando file RAR ibrido

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:

  1. Viene scaricato un file RAR appositamente creato (probabilmente nella cartella Download)
  2. Il DOCX viene estratto e aperto
  3. La relazione memorizzata in document.xml.rels punta a un HTML malevolo
  4. L'anteprima di IE viene avviata per aprire il link HTML
  5. JScript all'interno dell'HTML contiene uno script/iframe che punta al file RAR, preceduto dallo schema URI ".wsf:"
  6. Poiché il RAR è stato progettato per essere contemporaneamente un RAR valido e uno script WSF valido, lo script viene eseguito

Quali sono gli exploit PoC implementati dallo strumento

L'utility del generatore può attualmente riprodurre i seguenti attacchi:

1Il CAB non viene scaricato correttamente in alcuni ambienti

2L'utente deve cliccare su "Salva" per scaricare il file su IE

3Non funziona veramente su tutte le versioni di Windows/MS Word

Parser del file CAB

L'utility cab_parser.py può essere utilizzata per vedere gli header del file exploit, ma non consideratelo un parser completo. È un visualizzatore di header CAB molto rapido e sporco che ho sviluppato per capire cosa stesse succedendo.

Installazione

Il generatore è progettato per funzionare su Windows, poiché utilizza l'utility makecab. Prima dell'uso, assicurati di installare le dipendenze richieste:

  • Con Virtualenv
root@kitploit:~
git clone https://github.com/klezVirus/CVE-2021-40444
cd CVE-2021-40444
pip install virtualenv
python -m virtualenv venv
venv\Scripts\activate.bat 
pip install -r requirements
  • Senza Virtualenv
root@kitploit:~
git clone https://github.com/klezVirus/CVE-2021-40444
cd CVE-2021-40444
pip install -r requirements

Utilizzo

Il generatore è semplice da usare, anche se è stato testato con diversi payload e versioni di Windows, non è a prova di errore. Sto riscontrando comportamenti diversi su diverse build di Windows. Appena avrò ulteriori dettagli da condividere, li pubblicherò qui.

root@kitploit:~
usage: generator.py [-h] -P PAYLOAD -u URL [-o OUTPUT] [--host] [-c COPY_TO] [-nc] [-t]

[%] CVE-2021-40444 - MS Office Word RCE Exploit [%]

optional arguments:
  -h, --help            show this help message and exit
  -P PAYLOAD, --payload PAYLOAD
                        DLL payload to use for the exploit
  -u URL, --url URL     Server URL for malicious references (CAB->INF)
  -o OUTPUT, --output OUTPUT
                        Output files basename (no extension)
  --host                If set, will host the payload after creation
  -c COPY_TO, --copy-to COPY_TO
                        Copy payload to an alternate path
  -nc, --no-cab         Use the CAB-less version of the exploit
  -t, --test            Open IExplorer to test the final HTML file

Esempio

  • Genera l'exploit originale e testalo localmente
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.dll --host 

Nota: la porta è selezionata dall'URL e l'exploit viene generato in base all'estensione del file payload

  • Genera l'exploit CABless con RAR e testalo localmente tramite IE
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\job-jscript.wsf --no-cab --host -t 
  • Genera l'exploit CABless (solo IE) con HTML smuggling e testalo localmente tramite IE
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.js --no-cab --host -t 
  • Genera l'exploit CABless che sfrutta MS-MSDT (attacco Follina), sia in documenti DOCX che RTF
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.ps1 --no-cab --host --convert

Crediti

  • RET2_pwn per l'incredibile blog
  • j00sean per i buoni suggerimenti
  • lockedbyte per il primo PoC decente
  • Max_Mal per il suggerimento sugli schemi URI alternativi
  • wdormann per il suggerimento sulle restrizioni di dimensione dei file HTML
  • Edu_Braun_0day per la versione CABless interessante dell'exploit
  • Kevin Beaumont per la ricerca su CVE-2022-30190 (Follina)
Scarica lo strumento
AttaccoHTML TemplatesTargetMetodo di ConsegnaMetodo di EsecuzioneFunzionante
Versione originale dell'attaccocab-orig-*WORDDOCXCAB + DLLYES
Attacco solo IE di j00seancab-orig-j00sanIEHTMLCAB + DLLYES
Mia versione senza DLLcab-uri-*WORDDOCXCAB + JS/VBSNO1
Attacco "CABless" di Eduardo B. usando RARcabless-rar-*WORDRARWSFYES
Attacco modificato di j00sean + HTML smugglingcabless-smuggling-*IEHTMLJS/VBSYES2
Attacco Follinacabless-msdt-*WORDDOCX/RTFMSDT + PSYES3