ESC4
Performing ESC4 allows an attacker to introduce a misconfiguration to a template that is not vulnerable to begin with by abusing a certificate with overly-permissive ACLs; some rights that are critical for this abuse are:
Owner - Full Control
FullControl - Full Control
WriteOwner - Modify Owner for grant Full Control
WriteDacl - Modify access control for grant Full Control
WriteProperty - Edit any properties
In order to modify a template we need to modify these values:
Grant Enrollment rights for the vulnerable template
Disable the
PEND_ALL_REQUESTS
flag inmspki-enrollment-flag
to deactivate Manager ApprovalSet the
mspki-ra-signature
attribute to0
to disable theAuthorized Signature requirement
Enable the
ENROLLEE_SUPPLIES_SUBJECT
flag inmspki-certificate-name-flag
to allow requesting users to specify another privileged account name as aSAN
Set the
mspki-certificate-application-policy
to a certificate purpose for authentication:Client Authentication (OID: 1.3.6.1.5.5.7.3.2)
Smart Card Logon (OID: 1.3.6.1.4.1.311.20.2.2)
PKINIT Client Authentication (OID: 1.3.6.1.5.2.3.4)
Any Purpose (OID: 2.5.29.37.0)
No Extended Key Usage (EKU)
These are the steps we can take to abuse a certificate template vulnerable to ESC4: first we make the changes to the certificates we have ACLs on and save the old configuration so that we can revert the changes at a later time
now the ESC4
certificate should be vulnerable to all ESC techniques from 1 to 4 (included)
From this point on we can abuse any of the 3 misconfigurations (either ESC1, ESC2 or ESC3).
To revert the changes made to the certificate template we can use the JSON file generated with the previous certipy template
command
The certipy template
command automates the process of setting up the misconfigurations completely but it's also possible to do it manually from a Windows host using the following commands and PowerView.
Add Certificate Enrollment Permissions to the
Domain Users
group
Disable manager approval requirement by setting the
PEND_ALL_REQUESTS
flag to0x00000009
(0x00000001 + 0x00000008
forCT_FLAG_INCLUDE_SYMMETRIC_ALGORITHMS
andCT_FLAG_PUBLISH_TO_DS
)
Disable Authorized Signature Requirement by setting the
mspki-ra-signature
attribute to0
Enabling SAN Specification making the template vulnerable to ESC1 by setting the ENROLLEE_SUPPLIES_SUBJECT flag to
1
Adding PKI Extended Key Usage EKU and
mspki-certificate-application-policy
We can also do the same thing with StandIn
, the following are the commands used to introduce a ESC1 misconfiguration into a certificate.
Adding
ENROLLEE_SUPPLIES_SUBJECT
Add Certificate Enrollment Permissions to the
Domain Users
group
Adding an EKU (in this case we'll use the Client Authentication EKU):
Last updated