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-2025-62215-POC — Exploit proof-of-concept per CVE-2025-62215, una vulnerabilità Use-After-Free del kernel Windows in SepTokenSidSharingEnabled. Include un driver del kernel e un exploit in modalità utente per l'analisi delle race condition. | Kitploit
Strumenti/GitHubGitHub/gowonisgood/cve-2025-62215-poc
Analisi delle VulnerabilitàExploitCTFApprendimento e FormazioneBinary Exploitation
GitHubgowonisgood/cve-2025-62215-poc

CVE-2025-62215-POC

Exploit proof-of-concept per CVE-2025-62215, una vulnerabilità Use-After-Free del kernel Windows in SepTokenSidSharingEnabled. Include un driver del kernel e un exploit in modalità utente per l'analisi delle race condition.

Vedi Repository
101154 mesi faNon ancora revisionato

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-2025-62215 — Windows Token UAF (SepTokenSidSharingEnabled Race Condition)

Questo repository è solo per scopi educativi e di ricerca.

Panoramica

Un Use-After-Free PoC che si verifica nel percorso di ottimizzazione SepTokenSidSharingEnabled del kernel Windows.

  • Quando NtDuplicateToken incrementa il RefCount del SID Values Block da 1→2, un thread kernel concorrente libera il blocco tramite ExFreePoolWithTag.
  • Successivamente, SepDereferenceSidValuesBlock accede al blocco liberato → UAF / Double Free.
root@kitploit:~
[User]  IOCTL_REPLACE_SID_BLOCK  →  Posiziona un blocco indipendente (RefCount=1) a TOKEN+0x468
[User]  IOCTL_TRIGGER_FREE       →  Crea un thread kernel (poll fino a RefCount==2)
[User]  NtDuplicateToken         →  Internamente incrementa RefCount 1→2
[Kernel Thread] RefCount==2 rilevato → ExFreePoolWithTag(pBlock)  ← punto UAF

Struttura dei file

PercorsoDescrizione
exploit/exploitWithDriv/exploitWithDriv.cppExploit in modalità utente (app console)
tokendriv/tokendrv/tokendrv/tokendrv.cppDriver kernel (fornisce interfaccia IOCTL)

Istruzioni di compilazione (Visual Studio)

Prerequisiti

  • Visual Studio 2022 (MSVC)
  • Windows Driver Kit (WDK) — richiesto per la compilazione di tokendriv
  • SDK 10.0.26100.x o successivo

1. tokendriv.sys — Driver kernel

  1. Aprire tokendriv/tokendrv/tokendrv.slnx
  2. Configurazione: Release / x64
  3. Compilare → genera tokendriv/tokendrv/x64/Release/tokendriv.sys
  4. Distribuzione standalone: copiare solo il file .sys nella VM

Dopo aver installato il WDK, verificare: Project Properties → Driver Settings → Target OS Version

2. exploitWithDriv.exe — Exploit in modalità utente

  1. Aprire exploit/exploitWithDriv.slnx
  2. Configurazione: Release / x64
  3. Project Properties → Linker → System → SubSystem: Console
  4. Compilare → genera exploit/x64/Release/exploitWithDriv.exe
  5. Per distribuzione standalone (senza Visual C++ Redistributable):
    • C/C++ → Code Generation → Runtime Library: Multi-threaded (/MT)

Esecuzione nella VM

Prerequisiti

  • RAM VM: 2 GB o meno (necessario per attivare SepTokenSidSharingEnabled)
  • Account di test: test / 1234 (account locale, non richiede diritti amministrativi)
  • Connessione per debug kernel (opzionale, necessaria per l'analisi)
  • Prompt dei comandi come amministratore

Caricare il driver

root@kitploit:~
sc create tokendriv type= kernel binpath= "C:\path\to\tokendrv.sys"
sc start tokendriv

Verificare che il driver sia in esecuzione:

root@kitploit:~
sc query tokendriv

Lo stato dovrebbe essere RUNNING.

Eseguire l'exploit

root@kitploit:~
exploitWithDriv.exe

Flusso di esecuzione:

  1. Controlla FullNumberOfPhysicalPages (deve essere ≤ 0x83400)
  2. LogonUser("test", ".", "1234") → acquisisce hSource
  3. Premere Invio per avviare il loop di race (100.000 iterazioni)
  4. Ogni iterazione: REPLACE → TRIGGER → NtDuplicateToken → Sleep(1)

Analisi della Race Condition (WinDbg KD)

1. Ottenere l'indirizzo del processo target

root@kitploit:~
0: kd> !process 0 0 exploitWithDriv.exe

Output di esempio:

root@kitploit:~
PROCESS ffffa88f5e61e080
    SessionId: 1  Cid: 1234    Peb: ...  ParentCid: ...
    Image: exploitWithDriv.exe

ffffa88f5e61e080 è l'indirizzo EPROCESS.

2. Impostare i breakpoint

Gli indirizzi seguenti possono variare in base all'ambiente — confermare con i simboli kernel reali.

A. Incremento RefCount del blocco SID (inizio finestra di race)

root@kitploit:~
0: kd> bp fffff800`725c6114 ".if (@$proc == 0xffffa88f5e61e080) { .echo A_REFCNT_INCR; dq poi(@rsi+0x468)+8 L1; gc } .else { gc }"
  • Stampa il RefCount (+0x8) del SID Values Block a TOKEN+0x468
  • Il momento in cui il valore passa da 1 → 2 è la finestra di race

B. Punto di lettura UAF

root@kitploit:~
0: kd> bp fffff800`726f51fb ".if (@$proc == 0xffffa88f5e61e080) { .echo REAL_UAF_READ; r rax,rdx; gc } .else { gc }"
  • Punto in cui viene letto il blocco liberato
  • Controllare i valori rax, rdx

C. Punto di scrittura UAF

root@kitploit:~
0: kd> bp fffff800`726f5208 ".if (@$proc == 0xffffa88f5e61e080) { .echo REAL_UAF_WRITE; r rcx,rdx,rax; gc } .else { gc }"
  • Punto in cui viene scritto il blocco liberato
  • Controllare i valori rcx, rdx, rax per eventuale corruzione

3. Flusso temporale della race

root@kitploit:~
NtDuplicateToken entry
    └─ SeTokenCanImpersonate
        └─ SID Block RefCount: 1 → 2        ← bp A (A_REFCNT_INCR)
                                              ← kernel thread: ExFreePoolWithTag(pBlock)
    └─ SepDereferenceSidValuesBlock
        └─ dereference pBlock (read)         ← bp B (REAL_UAF_READ)
        └─ dereference pBlock (write)        ← bp C (REAL_UAF_WRITE)

4. Suggerimenti per l'analisi

  • Se RefCount è 2 immediatamente dopo la stampa di A_REFCNT_INCR, la finestra di race è stata entrata con successo
  • Se compaiono REAL_UAF_READ / REAL_UAF_WRITE, la UAF è confermata
  • Tracciare i blocchi allocati con pool tag 'kcoB': !pool <addr> o !poolused

Offset chiave (Windows 11 24H2)

StrutturaOffsetCampo
_TOKEN+0x468SepSidValues (puntatore al blocco SID Values)
Blocco SID Values+0x000Length (ULONG)
Blocco SID Values+0x008ReferenceCount (LONGLONG)

Scaricare il driver

root@kitploit:~
sc stop tokendriv
sc delete tokendriv
Scarica lo strumento