summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2021-09-13 20:34:54 +1200
committerJule Anger <janger@samba.org>2021-11-09 19:45:32 +0000
commit2bdff65b333365740e5e9c8c2b2fc176323f5108 (patch)
tree1b17c52ba033c2d52fd09a331ae9ac1c21060b4e /source4
parentf478aecc45efb56868bc7cec216f33e5db7ccf18 (diff)
downloadsamba-2bdff65b333365740e5e9c8c2b2fc176323f5108.tar.gz
CVE-2020-25722 selftest: Extend priv_attrs test - work around UF_NORMAL_ACCOUNT rules on Windows 2019 (requires |UF_PASSWD_NOTREQD or a password) - extend to also cover the sensitive UF_TRUSTED_FOR_DELEGATION
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14703 BUG: https://bugzilla.samba.org/show_bug.cgi?id=14778 BUG: https://bugzilla.samba.org/show_bug.cgi?id=14775 Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Diffstat (limited to 'source4')
-rw-r--r--source4/dsdb/tests/python/priv_attrs.py40
1 files changed, 25 insertions, 15 deletions
diff --git a/source4/dsdb/tests/python/priv_attrs.py b/source4/dsdb/tests/python/priv_attrs.py
index ec2b13045e5..aa35dcc1317 100644
--- a/source4/dsdb/tests/python/priv_attrs.py
+++ b/source4/dsdb/tests/python/priv_attrs.py
@@ -99,30 +99,47 @@ attrs = {"sidHistory":
{"value": ndr_pack(security.dom_sid(security.SID_BUILTIN_ADMINISTRATORS)),
"priv-error": ldb.ERR_INSUFFICIENT_ACCESS_RIGHTS,
"unpriv-error": ldb.ERR_INSUFFICIENT_ACCESS_RIGHTS},
- "msDS-AllowedToDelegateTo":
+
+ "msDS-AllowedToDelegateTo":
{"value": f"host/{host}",
"unpriv-error": ldb.ERR_INSUFFICIENT_ACCESS_RIGHTS},
- "userAccountControl-a2d-user":
+
+ "userAccountControl-a2d-user":
{"attr": "userAccountControl",
- "value": str(UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION|UF_NORMAL_ACCOUNT),
- "priv-error": ldb.ERR_UNWILLING_TO_PERFORM,
- "unpriv-add-error": ldb.ERR_UNWILLING_TO_PERFORM,
+ "value": str(UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION|UF_NORMAL_ACCOUNT|UF_PASSWD_NOTREQD),
"unpriv-error": ldb.ERR_INSUFFICIENT_ACCESS_RIGHTS},
- "userAccountControl-a2d-computer":
+
+ "userAccountControl-a2d-computer":
{"attr": "userAccountControl",
"value": str(UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION|UF_WORKSTATION_TRUST_ACCOUNT),
"unpriv-error": ldb.ERR_INSUFFICIENT_ACCESS_RIGHTS,
"only-1": "computer"},
- "userAccountControl-DC":
+
+ # This flag makes many legitimate authenticated clients
+ # send a forwardable ticket-granting-ticket to the server
+ "userAccountControl-t4d-user":
+ {"attr": "userAccountControl",
+ "value": str(UF_TRUSTED_FOR_DELEGATION|UF_NORMAL_ACCOUNT|UF_PASSWD_NOTREQD),
+ "unpriv-error": ldb.ERR_INSUFFICIENT_ACCESS_RIGHTS},
+
+ "userAccountControl-t4d-computer":
+ {"attr": "userAccountControl",
+ "value": str(UF_TRUSTED_FOR_DELEGATION|UF_WORKSTATION_TRUST_ACCOUNT),
+ "unpriv-error": ldb.ERR_INSUFFICIENT_ACCESS_RIGHTS,
+ "only-1": "computer"},
+
+ "userAccountControl-DC":
{"attr": "userAccountControl",
"value": str(UF_SERVER_TRUST_ACCOUNT),
"unpriv-error": ldb.ERR_INSUFFICIENT_ACCESS_RIGHTS,
"only-2": "computer"},
- "userAccountControl-RODC":
+
+ "userAccountControl-RODC":
{"attr": "userAccountControl",
"value": str(UF_PARTIAL_SECRETS_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT),
"unpriv-error": ldb.ERR_INSUFFICIENT_ACCESS_RIGHTS,
"only-1": "computer"},
+
"msDS-SecondaryKrbTgtNumber":
{"value": "65536",
"unpriv-error": ldb.ERR_INSUFFICIENT_ACCESS_RIGHTS},
@@ -369,13 +386,6 @@ class PrivAttrsTests(samba.tests.TestCase):
self.fail(f"{test_name}: Unexpectedly able to set {attr} on {m.dn}")
except LdbError as e5:
(enum, estr) = e5.args
- if attr == "userAccountControl" and sd == "default":
- # We get a different error if we try and swap between
- # being a computer back to being a user when created with "Create child" permissions
- if (int(attrs[test_name]["value"]) & UF_NORMAL_ACCOUNT) \
- and objectclass == "computer" and permission == "CC":
- self.assertGotLdbError(ldb.ERR_UNWILLING_TO_PERFORM, enum)
- return
self.assertGotLdbError(attrs[test_name]["unpriv-error"], enum)