Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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-2024-30051 — Ricerca di tesi magistrale su CVE-2024-30051 (Overflow dell'heap di DWM di Windows). Include un exploit ad alta affidabilità con ottimizzazione automatizzata dell'heap spray, logging in tempo reale e analisi empirica del tasso di successo. Componente del portfolio che dimostra exploit binario avanzato di Windows, manipolazione del layout dell'heap e LPE tramite Desktop Window Manager. | Kitploit
Strumenti/GitHubGitHub/devianntsec/cve-2024-30051
Escalation di PrivilegiMemory ForensicsAnalisi delle VulnerabilitàExploitReverse EngineeringPaper e RicercaApprendimento e FormazioneSviluppo PayloadBinary Exploitation

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 →

Informazioni

Ricerca di tesi magistrale su CVE-2024-30051 (Overflow dell'heap di DWM di Windows). Include un exploit ad alta affidabilità con ottimizzazione automatizzata dell'heap spray, logging in tempo reale e analisi empirica del tasso di successo. Componente del portfolio che dimostra exploit binario avanzato di Windows, manipolazione del layout dell'heap e LPE tramite Desktop Window Manager.

GitHubdevianntsec/cve-2024-30051

CVE-2024-30051

Vedi Repository
194 mesi faNon ancora revisionato
Condividi

CVE-2024-30051 — Heap Overflow su DWM di Windows EoP · Ricerca per Tesi Magistrale

Platform Language License: MIT Research CVSS

Buffer Overflow basato su Heap in Windows Desktop Window Manager (dwmcore.dll)
Escalation dei Privilegi Locali → Livello di Integrità SYSTEM tramite processo DWM
Target di build: Windows 11 22H2 (10.0.22621.3447) · Patch: KB5037771


Descrizione

Questo repository contiene la mia ricerca per la Tesi Magistrale su CVE-2024-30051, una vulnerabilità di Elevazione dei Privilegi di gravità Alta (CVSS 7.8) nella libreria principale del Windows Desktop Window Manager (dwmcore.dll).

La vulnerabilità origina da un errore di calcolo nella divisione intera in CCommandBuffer::Initialize. La dimensione usata per new() e quella usata per memcpy() divergono a causa di questo errore, producendo un heap overflow di 0x8F byte. Un exploit riuscito fa sì che dwm.exe carichi una DLL controllata dall'attaccante, eseguendo codice arbitrario sotto l'account window manager\dwm-1 con Livello di Integrità SYSTEM.

Il Mio Contributo

AspectDescription
Patch diffingAnalisi BinDiff completa che identifica CCommandBuffer::Initialize come esatto locus della vulnerabilità (punteggio di similarità 0.32 vs globale 0.98 su 14.062 funzioni confrontate)
WinDbg dynamic analysisVerifica passo-passo di tutti e 4 gli hook, sovrascrittura del campo size e costruzione del payload
Empirical heap spray analysis50 sessioni controllate su due configurazioni di RAM (8.192 MB e 4.096 MB) con test statistici formali
Statistical findingsMann-Whitney U (p = 0.031) e test t di Welch (p = 0.011) confermano l'effetto RAM; medie osservate 12.9–19× migliori della previsione teorica di ~64 tentativi
Payload DLL path centralizedPercorso hardcoded estratto nella costante del preprocessore #define PAYLOAD_DLL_PATH
Session loggingRegistro completo con timestamp per ogni sessione scritto in %TEMP%\cve_30051_log.txt
Academic documentationCausa principale, analisi heap spray di 50 sessioni e cronologia CVE

Struttura del Repository

CVE-2024-30051-Masters-Thesis/
├── README.md
├── LICENSE
├── setup.bat                        # Copia s11.dll nella posizione richiesta
│
├── exploit/
│   ├── C21.sln                      # Soluzione Visual Studio 2022
│   ├── exploit_src/
│   │   ├── c26f.vcxproj
│   │   ├── c26f.filters
│   │   └── main.cpp                 # Exploit — heap spray + hooking + overflow
│   └── payload/
│       ├── payload.vcxproj
│       ├── payload.vcxproj.filters
│       ├── dllmain.cpp              # Payload DLL — genera shell SYSTEM + cleanup
│       ├── framework.h
│       ├── pch.h
│       └── pch.cpp
│
└── docs/
    ├── screenshots/                 # Patch diffing, WinDbg e catture forensi
    └── analysis/
        ├── 01-root-cause.md         # Bug di divisione intera in CCommandBuffer::Initialize
        ├── 02-heap-spray.md          # Dati empirici di 50 sessioni e risultati statistici
        └── 03-timeline.md           # Scoperta, divulgazione e cronologia della patch

Avvio Rapido

Prerequisiti

  • Windows 11 22H2 (build 22621.3447, non patchato — nessun KB5037771)
  • Visual Studio 2022 con carico di lavoro C++ Desktop
  • VM con snapshot raccomandata (necessaria per uno stato heap riproducibile)

Passo 1 — Compila la DLL del payload

Apri C21.sln in Visual Studio 2022. Compila il progetto payload in Release x64.

Passo 2 — Posiziona la DLL

Esegui setup.bat dalla radice del repository. Copia s11.dll in C:\Users\Public\Documents\s11.dll (il percorso definito da PAYLOAD_DLL_PATH).

⚠️ La DLL deve essere in questo esatto percorso prima di eseguire C26f.exe. Posizionarla accanto all'eseguibile non funzionerà.

Passo 3 — Compila l'exploit

Compila il progetto C26f in Release x64.

Passo 4 — Esegui

x64\Release\C26f.exe

Esegui da un CMD standard (non elevato). L'exploit riprova automaticamente fino a 10 volte. In caso di successo, dwm.exe carica s11.dll e genera un CMD con Livello di Integrità SYSTEM. Un registro di sessione viene scritto in %TEMP%\cve_30051_log.txt.


Configurazione dell'Exploit

#define MAX_ATTEMPTS        10      // Max auto-retry attempts per session
#define SPRAY_STEP          0x10    // Hole spacing index (1024 holes)
#define SPRAY_RANGE_START   0x3000  // Spray range start index
#define SPRAY_RANGE_END     0x7000  // Spray range end index
#define SLEEP_POST_SPRAY    0xC8    // ms wait after spray (200ms)
#define SLEEP_POST_HOLES    0xC8    // ms wait after freeing holes (200ms)
#define PAYLOAD_DLL_PATH    "C:\\Users\\Public\\Documents\\s11.dll"

Panoramica Tecnica

Causa Principale della Vulnerabilità

In CCommandBuffer::Initialize (dwmcore.dll 10.0.22621.3447), CD2DSharedBuffer::GetBufferSize viene chiamato due volte. La dimensione passata a new() subisce una divisione intera per 0x90 prima della moltiplicazione, mentre memcpy() usa il valore grezzo:

buffer_size = GetBufferSize()   → e.g. 0x23F

size_new    = (0x23F / 0x90) * 0x90  = 0x1B0   ← allocated
size_memcpy = 0x23F                             ← copied

overflow    = 0x23F - 0x1B0 = 0x8F bytes

Risultati del Patch Diffing

BinDiff comparison between build 10.0.22621.3447 (vulnerable) and 10.0.22621.3593 (patched):

MetricValue
Similarità globale0.98
Confidenza0.99
Funzioni corrispondenti14.062 (99.1%)
Similarità di CCommandBuffer::Initialize0.32
Blocchi di base — versione vulnerabile4
Blocchi di base — versione patchata20 (16 blocchi di validazione aggiunti)

Il punteggio anomalo di 0.32 contro una similarità globale di 0.98 è la firma diretta del locus della vulnerabilità.

Catena di Sfruttamento

1. Hook RtlCreateHeap               → cattura l'handle dell'heap di dwmcore
2. Hook RtlAllocateHeap             → cattura l'indirizzo del chunk base
3. Hook NtDCompositionCreateChannel → cattura MappedAddress (regione di memoria condivisa)
4. Hook NtDCompositionCommitChannel → sovrascrive il campo size (0x120 → 0x23F)
                                      inserisce comandi batch aggiuntivi
5. Heap spray di 0x10000 oggetti CHolographicInteropTexture (size=0x1B0)
6. Libera buchi ogni 0x10 indici    → crea spazi vuoti per l'atterraggio dell'overflow
7. Scrive il payload nel buffer di overflow → KCBTable+0x388 + LoadLibraryA + percorso DLL
8. Rilascia tutti gli oggetti spray → innesca overflow → LoadLibraryA("s11.dll")
9. dwm.exe carica la DLL del payload → genera CMD come integrità SYSTEM

Analisi Empirica dell'Heap Spray (50 Sessioni)

Domanda di Ricerca

La RAM disponibile influenza il numero di tentativi necessari per un heap spray riuscito?

Schema Sperimentale

Due blocchi di 25 sessioni ciascuno. Protocollo per sessione: ripristina snapshot pulito post-avvio → attesa 100 secondi di stabilizzazione → avvia exploit → registra il tentativo riuscito.

BloccoRAMSessioniSuccessiFallimenti
A8.192 MB25241
B4.096 MB25241

Risultati

Scarica lo strumento