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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-97798-exploit — CVE-2026-97798 Windows Error Reporting - Iniezione di comandi fino a SYSTEM | Kitploit
Strumenti/GitHubGitHub/g4sp4rcs/cve-2026-97798-exploit
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitPost-ExploitRed TeamingSviluppo Payload
GitHubg4sp4rcs/cve-2026-97798-exploit

CVE-2026-97798-exploit

CVE-2026-97798 Windows Error Reporting - Iniezione di comandi fino a SYSTEM

Vedi Repository
4257 giorni 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-2026-97798 — Iniezione di argomenti in Windows Error Reporting per ottenere SYSTEM

[!WARNING] Questo repository è destinato alla ricerca autorizzata sulle vulnerabilità e alla validazione controllata in laboratorio. La proof of concept fallisce in modo sicuro quando non riesce a identificare esattamente un'implementazione compatibile di faultrep.dll!SpawnDataCollector.

CVE-2026-97798 è una vulnerabilità locale di escalation dei privilegi nel percorso di Time Travel Debugging di Windows Error Reporting (WER). Un chiamante non privilegiato può preservare una sintassi della riga di comando controllata dall'attaccante attraverso il confine dei privilegi di WER. Il collector elevato concatena successivamente quell'input in una riga di comando di TTTracer.exe senza preservare i confini degli argomenti. Gli switch iniettati -out e -launch vengono quindi interpretati dal registratore TTD come opzioni del registratore, consentendo di avviare un eseguibile scelto dall'attaccante con il token elevato del collector.

La PoC inclusa in un singolo file trasforma questa primitiva in una shell interattiva NT AUTHORITY\SYSTEM. È stata validata sia da un utente standard sia da un account amministratore a integrità media, filtrato da UAC.

Shell SYSTEM interattiva

Video

Contenuto del repository

PercorsoDescrizione
src/CVE-2026-97798.cppCodice sorgente completo dell'exploit in un singolo file
bin/CVE-2026-97798.exeBuild di laboratorio x64 riproducibile
build.ps1Script di build deterministico per LLVM-MinGW
assets/system-shell.pngProva catturata di whoami dalla VM isolata

Non sono ancora inclusi PDF di report; il documento esteso è ancora in fase di revisione.

Causa principale

Il flusso vulnerabile attraversa diversi componenti:

low/medium-integrity process
  -> faultrep.dll!CElevatedDataCollection::ControlTimeTravelDebugging
  -> faultrep.dll!SpawnDataCollector
  -> Windows Error Reporting service (elevated collector)
  -> CDataCollection::ControlTimeTravelDebugging
  -> TtdControl::LaunchRecordingProcess
  -> TTTracer.exe / TTDRecord.dll command-line parser
  -> attacker-controlled -launch target

La richiesta contiene un valore Process che inizia con un eseguibile legittimo ma aggiunge ulteriori parametri TTD. L'implementazione vulnerabile applica una blocklist debole basata sulla corrispondenza esatta del nome e successivamente formatta la stringa del processo direttamente nella riga di comando privilegiata del recorder. Poiché il valore del processo non viene serializzato come un singolo argomento, i suoi spazi diventano delimitatori di argomenti quando TTTracer analizza il risultato.

Concettualmente, la porzione iniettata è:

Process=CVE-2026-97798-payload.exe
  -out ..\..\Users\Public\Documents\CVE97798\trace
  -launch ..\..\Users\Public\Documents\CVE97798\CVE-2026-97798-payload.exe
  --payload;

I percorsi relativi sono intenzionali. WER incorpora inoltre questi dati in un nome di percorso .ttdconfig; un prefisso di unità assoluto introduce i due punti e fallisce con ERROR_INVALID_NAME. Il percorso in stile traversal evita quel conflitto del parser normalizzandosi al contempo nella directory pubblica controllata.

Si tratta di un problema di injection di argomenti (CWE-88), non di una convenzionale injection di comandi shell. Non è necessario alcun cmd.exe /c nel sink vulnerabile: TTTracer stesso interpreta gli switch iniettati.

Progettazione del PoC a file singolo

Il normale utilizzo richiede solo CVE-2026-97798.exe. La stessa immagine PE rientra in se stessa in diverse modalità interne:

  1. Analizza la tabella delle eccezioni PE64 caricata e risolve faultrep.dll!SpawnDataCollector dinamicamente dalla funzione univoca che contiene l'opcode del collector WER e le invarianti del protocollo. Nessun RVA specifico della build è incorporato.
  2. Avvia il proprio client console integrato e crea il proprio stato di prova.
  3. Ottiene il collector WER elevato e invia la richiesta TTD predisposta.
  4. TTTracer avvia la stessa immagine in modalità payload.
  5. Il payload espone un vero cmd.exe tramite named pipe, consentendo a una console visibile nella sessione utente di interagire con una shell creata nella sessione 0.

L'artefatto distribuito rimane un singolo EXE. A runtime prepara due alias di quella stessa immagine: uno per la console integrata e uno per il payload elevato. L'alias del payload viene usato anche come target -onlaunch di TTTracer, così il recorder osserva il processo che effettivamente avvia ed esce quando quella breve fase del payload termina. Il PoC reimposta lo stato TTD obsoleto prima di ogni trigger e di nuovo dopo un payload riuscito, impedendo che un'esecuzione interrotta faccia fallire la successiva con HRESULT 0x80070032.

Per un utente standard, il percorso del collector elevato raggiunge direttamente SYSTEM. Per un amministratore filtrato da UAC, WER avvia prima il payload con il token amministratore elevato collegato—il nome dell'account rimane invariato, ma TokenIsElevated=true. Il PoC quindi rientra nella stessa immagine come SYSTEM. Tenta prima la creazione diretta di un processo con token SYSTEM e usa una voce di Task Scheduler di breve durata come fallback; l'attività di fallback viene eliminata immediatamente dopo l'avvio.

Ambiente validato

ComponenteValore validato
OSWindows 11 24H2 x64, build 26100.9550
faultrep.dll vulnerabile10.0.26100.9549
Confronto con versione correttafaultrep.dll 10.0.26100.9711
TTTracer / TTDRecord1.11.580.0
Verifica del resolver dinamico9549: RVA 0x4CEB0; 9711: RVA 0x4E40C
SHA-256 del PoCC7B8FAFB132D69E9BD5A398AE183107155129C7080A87D56EFE55572450B4147

Il resolver percorre la tabella delle eccezioni x64 e richiede una funzione con la configurazione del large frame del collector, l'opcode di richiesta 0xD0000002, la dimensione del messaggio 0x578, il timeout di attesa 10000 e le sue tre mappature attese di errore wait/service. È stato verificato su entrambe le build faultrep.dll fornite e testato negativamente su immagini PE non correlate. Non viene memorizzato alcun numero di build o RVA. Se una build futura modifica tale implementazione abbastanza da rendere la corrispondenza ambigua o incompleta, il PoC si arresta prima di effettuare una chiamata indiretta.

Utilizzo

Usare uno snapshot usa e getta della build vulnerabile. Da un PowerShell o Prompt dei comandi non elevato:

.\bin\CVE-2026-97798.exe

In caso di successo, la console integrata stampa:

[CVE-2026-97798] Exploit shell token:
nt authority\system

La prova leggibile dalla macchina è scritta di seguito:

C:\Users\Public\Documents\CVE97798\system-proof.txt

Il resolver può anche essere testato su una DLL x64 offline senza attivare la vulnerabilità:

.\bin\CVE-2026-97798.exe --resolve C:\path\to\faultrep.dll

Per verificare in anticipo la DLL di sistema installata, anche senza attivare il percorso vulnerabile:

.\bin\CVE-2026-97798.exe --preflight

Una validazione riuscita dell'amministratore filtrato ha prodotto:

cve=CVE-2026-97798
user=NT AUTHORITY\SYSTEM
is_system=true
is_elevated=true
payload_session=0
shell_session=0
spawn_error=0

Compilazione

Installa una toolchain x64 LLVM-MinGW e inserisci x86_64-w64-mingw32-clang++.exe nel PATH, oppure passa il suo percorso assoluto esplicitamente:

.\build.ps1
Scarica lo strumento