ACL Abuse Privilege Escalation
ACL-based privilege escalation abuses misconfigured permissions on Active Directory objects to gain control of privileged accounts or groups without exploiting any software vulnerability. Every technique here requires a confirmed writable object found during ACL Enumeration. Verify the right exists before running any modification.
GenericAll and GenericWrite — full object control
GenericAll gives complete control over an object. GenericWrite allows writing any attribute. Both are abused the same way depending on the target object type.
[+] corp.local\targetuser:NewPassword123! (Pwn3d!)
WriteOwner — take ownership then grant rights
WriteOwner lets you change the owner of an object. Once you own it, you can grant yourself GenericAll and proceed with any other technique.
WriteDACL — grant yourself DCSync rights
WriteDACL on the domain object lets you modify the domain ACL directly. Granting yourself DS-Replication rights enables DCSync — dumping all domain hashes without touching the DC.
Administrator:500:aad3b435b51404eeaad3b435b51404ee:fc525c9683e8fe067095ba2ddc971889::: krbtgt:502:aad3b435b51404eeaad3b435b51404ee:7b5b518b1c33d1b22c3d0b70e76a6f90:::
GenericWrite on computer — RBCD setup
GenericWrite on a computer object allows writing msDS-AllowedToActOnBehalfOfOtherIdentity. This sets up Resource-Based Constrained Delegation, letting you impersonate any user including Domain Admin to services on that computer.
Shadow Credentials — certificate-based takeover
If you have GenericWrite on a user or computer, you can add a shadow credential — a certificate key pair linked to the target account. Authenticating with the certificate gives you a TGT as that user without knowing their password and without changing anything visible like the password itself.
Shadow Credentials requires ADCS to be present in the environment — specifically, a DC must have a certificate with a Smart Card Logon EKU. If ADCS is not present, shadow credentials will not work. Use nxc ldap $TARGET_IP -u $USER -p $PASSWORD -M adcs to confirm ADCS is deployed before attempting this technique.
References
-
BloodyAD — GitHubgithub.com/CravateRouge/bloodyAD (opens in new tab)
add genericAll, set owner, add dcsync, add rbcd, add shadowCredentials reference
-
Impacket — GitHubgithub.com/fortra/impacket (opens in new tab)
secretsdump and getST for DCSync and S4U2Proxy
-
pywhisker — GitHubgithub.com/ShutdownRepo/pywhisker (opens in new tab)
Shadow Credentials attack from Linux
Was this helpful?
Your feedback helps improve this page.