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-2022-24481-analysis — Analisi approfondita della type confusion in CLFS di Windows (CVE-2022-24481) con spiegazione della causa radice, flusso di sfruttamento, dettagli sui gadget del kernel e PoC funzionante per l'escalation locale dei privilegi. | Kitploit
Strumenti/GitHubGitHub/uname1able/cve-2022-24481-analysis
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitReverse EngineeringBinary Exploitation
GitHubuname1able/cve-2022-24481-analysis

CVE-2022-24481-analysis

Analisi approfondita della type confusion in CLFS di Windows (CVE-2022-24481) con spiegazione della causa radice, flusso di sfruttamento, dettagli sui gadget del kernel e PoC funzionante per l'escalation locale dei privilegi.

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
Vedi Repository
624 giorni faNon ancora revisionato

CVE-2022-24481 Confusione di tipo

Confusione di tipo

File vulnerabile

clfs.sys

Causa principale

Poiché la logica di validazione per rgContainers[0] non è rigorosa, dopo aver forgiato rgContainers[0], ClientContext si sovrappone alla struttura ContainerContext. Se i dati falsi vengono accettati, dopo CloseHandle, CClfsLogFcbPhysical::FlushMetadata ripristina i dati di ClientContext.

Metodo di sfruttamento

Dopo aver forgiato rgContainers[0], ClientContext si sovrappone alla struttura ContainerContext. Se i dati falsi vengono accettati, dopo CloseHandle, CClfsLogFcbPhysical::FlushMetadata ripristina i dati di ClientContext. Poiché le strutture si sovrappongono, questo processo modifica ContainerContext->pContainer con i dati forgiato. Infine, quando viene chiamato CClfsBaseFilePersisted::RemoveContainer, viene attivata una chiamata indiretta a una funzione membro, viene eseguito un gadget specifico e ciò porta a un'escalation di privilegi.

Flusso del PoC

1. Preparazione del file statico

createlog crea un nuovo file di log.

Aggiungere una voce Container.

Creare un link simbolico X:\ che punti alla directory corrente.

Cancellare l'intervallo cbSymbolName_start -> cbSymbolName_end.

Impostare cbSymbolName_start su X:\N.

Copiare i dati da ContainerContext_start -> New_cbSymbolName_end in ClientContext.

Aggiornare rgContainers[0] in modo che punti alla nuova posizione ContainerContext_start.

Aggiornare il valore del nuovo ContainerContext->pContainer.

Ricalcolare il checksum.

2. Preparazione in fase di esecuzione

Individuare l'indirizzo del gadget nella memoria del kernel.

Costruire la tabella virtuale falsa.

Completare la restante configurazione della memoria.

3. Aprire il file di log forgiato

CClfsLogFcbPhysical::Initialize

00000001C0002EDB memorizza i dati di ClientContext.

Dopo CloseHandle, viene eseguito CClfsRequest::Cleanup->CClfsLogFcbPhysical::FlushMetadata.

Copia i dati forgiato in ClientContext. Poiché ClientContext si sovrappone a ContainerContext, ContainerContext->pContainer viene sovrascritto con i dati forgiato.

CClfsBaseFilePersisted::RemoveContainer esegue quindi il nostro gadget, causando una scrittura di 16 byte in un indirizzo arbitrario.

Riferimenti

https://zhuanlan.zhihu.com/p/645490730

https://github.com/fr4nkxixi/CVE-2022-24481-POC

https://securelist.com/windows-clfs-exploits-ransomware-cve-2022-24521/111580/

https://starmap.dbappsecurity.com.cn/blog/articles/2022/05/10/cve-2022-24481/

https://www.4awl.net/9646.html

Elenco delle modifiche ai dati

Punti chiave del flusso di funzioni

win10_21H2_19044.1620

CClfsLogFcbPhysical::Initialize(0x??7c) routine di inizializzazione per l'apertura del file

bp clfs!CClfsLogFcbPhysical::Initialize + 0x45F

Questo codice memorizza la memoria di ClientContext.

Dopo CloseHandle, viene eseguito CClfsRequest::Cleanup->CClfsLogFcbPhysical::FlushMetadata.

bp clfs!CClfsLogFcbPhysical::FlushMetadata + 0x46

Questo ripristina i dati di ClientContext.

CClfsBaseFilePersisted::RemoveContainer

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x10F

Usare il puntatore alla tabella virtuale forgiato per raggiungere il gadget.

Nota: se il file forgiato non è valido, l'apertura del file fallirà e GetLastError rivelerà il motivo. In tal caso, il flusso dell'exploit non può continuare.

Gadget

CClfsBaseFilePersisted::RemoveContainer

CLFS!ClfsEarlierLsn

nt!SeSetAccessStateGenericMapping

nt!SeSetAccessStateGenericMapping

movdqu xmmword ptr [rax+8], xmm0 scrive 16 byte in [rax+8] (XMMWORD, 128 bit).

Dopo l'esecuzione sequenziale, il risultato è la scrittura dei 16 byte di dati da poi(rdx) 0xFFFFFFFF in poi(poi(rcx+0x48)+0x8).

rcx è la posizione del puntatore alla tabella virtuale e questa posizione è sotto il nostro controllo.

PoC implementata

https://github.com/uname1able/CVE-2022-24481.git

PoC per Win10

winver

win10_21H2_19044.1620

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x10F

PoC per Win11

winver

win11_21H2_22000.593

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x183

Scarica lo strumento