Skip to content

Commit d61b8f7

Browse files
q-rolandJonasBKrvazarkar
authored
Additional Organizational Units ACLs (#118)
* Adding Organizational Units GenericWrite and ManageGPLink permissions * Renaming ManageGPLink permission to WriteGPLink * fix: gPLink guid * feat: add GenericWrite and WriteGPLink for Domain --------- Co-authored-by: Jonas Bülow Knudsen <12843299+JonasBK@users.noreply.github.com> Co-authored-by: Rohan Vazarkar <rvazarkar@users.noreply.github.com>
1 parent ea6b097 commit d61b8f7

3 files changed

Lines changed: 15 additions & 2 deletions

File tree

src/CommonLib/EdgeNames.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public static class EdgeNames
2121
public const string AddKeyCredentialLink = "AddKeyCredentialLink";
2222
public const string SQLAdmin = "SQLAdmin";
2323
public const string WriteAccountRestrictions = "WriteAccountRestrictions";
24+
public const string WriteGPLink = "WriteGPLink";
2425

2526
//CertAbuse edges
2627
public const string WritePKIEnrollmentFlag = "WritePKIEnrollmentFlag";

src/CommonLib/Processors/ACEGuids.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ public class ACEGuids
1212
public const string WriteSPN = "f3a64788-5306-11d1-a9c5-0000f80367c1";
1313
public const string AddKeyPrincipal = "5b47d60f-6090-40b2-9f37-2a4de88f3063";
1414
public const string UserAccountRestrictions = "4c164200-20c0-11d0-a768-00aa006e0529";
15+
public const string WriteGPLink = "f30e3bbe-9ff0-11d1-b603-0000f80367c1";
16+
1517

1618
//Cert abuse ACEs
1719
public const string PKINameFlag = "ea1dddc4-60ff-416e-8cc0-17cee534bce7";
1820
public const string PKIEnrollmentFlag = "d15ef7d8-f226-46db-ae79-b34e560bd12c";
1921
public const string Enroll = "0e10c968-78fb-11d2-90d4-00c04f79dc55";
2022
public const string AutoEnroll = "a05b8cc2-17bc-4802-a710-e7c15ab866a2"; //TODO: Add this if it becomes abusable
2123
}
22-
}
24+
}

src/CommonLib/Processors/ACLProcessor.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,8 @@ public IEnumerable<ACE> ProcessACL(byte[] ntSecurityDescriptor, string objectDom
380380
or Label.Group
381381
or Label.Computer
382382
or Label.GPO
383+
or Label.OU
384+
or Label.Domain
383385
or Label.CertTemplate
384386
or Label.RootCA
385387
or Label.EnterpriseCA
@@ -419,6 +421,14 @@ or Label.NTAuthStore
419421
IsInherited = inherited,
420422
RightName = EdgeNames.WriteAccountRestrictions
421423
};
424+
else if (objectType is Label.OU or Label.Domain && aceType == ACEGuids.WriteGPLink)
425+
yield return new ACE
426+
{
427+
PrincipalType = resolvedPrincipal.ObjectType,
428+
PrincipalSID = resolvedPrincipal.ObjectIdentifier,
429+
IsInherited = inherited,
430+
RightName = EdgeNames.WriteGPLink
431+
};
422432
else if (objectType == Label.Group && aceType == ACEGuids.WriteMember)
423433
yield return new ACE
424434
{
@@ -593,4 +603,4 @@ public IEnumerable<ACE> ProcessGMSAReaders(byte[] groupMSAMembership, string obj
593603
}
594604
}
595605
}
596-
}
606+
}

0 commit comments

Comments
 (0)