
مكتبة لكشف الأسرار المعروفة عبر العديد من أطر العمل الويب.

مكتبة بايثون خالصة لتحديد استخدام أسرار تشفيرية معروفة أو ضعيفة جدًا عبر مجموعة متنوعة من المنصات. صُمم المشروع ليكون مستودعًا لمختلف "الأسرار المعروفة" (على سبيل المثال، مفاتيح آلة ASP.NET الموجودة في الأمثلة في الدروس التعليمية)، ولتوفير طبقة تجريد مستقلة عن اللغة لتحديد استخدامها.
معرفة متى تم استخدام "سر سيئ" هي عادةً مسألة فحص بعض المنتجات التشفيرية التي استُخدم فيها السر: على سبيل المثال، ملف تعريف ارتباط موقّع بخوارزمية تجزئة مفتاحية. قد تتعقد الأمور عند الخوض في غرائب التنفيذ الفردية التي توفرها كل منصة، وهو ما تهدف هذه المكتبة إلى تخفيفه.
اطّلع على منشور المدونة الكامل على مدونة Black Lantern Security!
مستوحاة من Blacklist3r، مع الرغبة في التوسع في المنصات المدعومة وإزالة الاعتماد على اللغة ونظام التشغيل.
تحلل الوحدات السلبية المنتجات التشفيرية (ملفات تعريف الارتباط، الرموز، الروابط الموقّعة، إلخ) التي تمتلكها بالفعل. تعمل دون اتصال بالإنترنت من خلال محاولة فك تشفير أو التحقق من المنتج مقابل قاعدة بيانات من الأسرار المعروفة.
| الاسم | الوصف |
|---|---|
| ASPNET_Viewstate | يتحقق من viewstate/generator مقابل قائمة مفاتيح آلة معروفة. |
| ASPNET_Resource | يتحقق من روابط WebResource.axd و ScriptResource.axd المشفرة مقابل قائمة مفاتيح آلة معروفة. مفيد عندما لا يكون __VIEWSTATE موجودًا في الصفحة. |
| Telerik_HashKey | يتحقق من الإصدارات المصححة (2017+) من Telerik UI بحثًا عن Telerik.Upload.ConfigurationHashKey معروف |
| Telerik_EncryptionKey | يتحقق من الإصدارات المصححة (2017+) من Telerik UI بحثًا عن Telerik.Web.UI.DialogParametersEncryptionKey معروف |
| Flask_SignedCookies | يتحقق من كلمة مرور توقيع ملفات تعريف ارتباط Flask الضعيفة. غلاف لـ flask-unsign |
| Peoplesoft_PSToken | يمكنه التحقق من peoplesoft PS_TOKEN بحثًا عن كلمة مرور توقيع سيئة/ضعيفة |
| Django_SignedCookies | يتحقق من ملفات تعريف ارتباط جلسة django (عند وضع signed_cookie) بحثًا عن django secret_key معروف |
| Rails_SecretKeyBase | يتحقق من ملفات تعريف ارتباط جلسة Ruby on Rails الموقّعة أو المشفرة (من إصدارات رئيسية متعددة) بحثًا عن secret_key_base معروف |
| Generic_JWT | يتحقق من JWTs بحثًا عن أسرار HMAC معروفة أو مفاتيح RSA الخاصة |
| Jsf_viewstate | يتحقق من كل من تطبيقات Mojarra و Myfaces لـ Java Server Faces (JSF) بحثًا عن استخدام مفاتيح سرية معروفة أو ضعيفة |
| Symfony_SignedURL | يتحقق من روابط symfony "_fragment" بحثًا عن مفتاح HMAC معروف. يعمل على الرابط الكامل، بما في ذلك التجزئة |
| Express_SignedCookies_ES | يتحقق من وسيط express.js express-session لملفات تعريف الارتباط الموقّعة وملفات تعريف ارتباط الجلسة بحثًا عن 'session secret' معروف |
| Express_SignedCookies_CS | يتحقق من وسيط express.js cookie-session لملفات تعريف الارتباط الموقّعة وملفات تعريف ارتباط الجلسة بحثًا عن سر معروف |
| Laravel_SignedCookies | يتحقق من ملفات تعريف ارتباط 'laravel_session' بحثًا عن 'APP_KEY' معروف لـ laravel |
| ASPNET_Compressedviewstate | يتحقق من Viewstate مخصص مضغوط كان شائعًا في السابق مقتطف كود عرضة لـ RCE |
| Rack2_SignedCookies | يتحقق من ملفات تعريف ارتباط Rack 2.x الموقّعة بحثًا عن مفاتيح سرية معروفة |
| Yii2_SignedCookies | يتحقق من ملفات تعريف ارتباط إطار عمل Yii2 الموقّعة بحثًا عن مفاتيح التحقق من ملفات تعريف الارتباط المعروفة |
| Shiro_RememberMe | يتحقق من ملفات تعريف ارتباط rememberMe الخاصة بـ Apache Shiro بحثًا عن مفاتيح تشفير AES معروفة |
| LTPA_Token | يتحقق من ملفات تعريف ارتباط LtpaToken و LtpaToken2 الخاصة بـ IBM WebSphere بحثًا عن مفاتيح تشفير LTPA معروفة |
| NextAuth | يتحقق من ملفات تعريف ارتباط جلسة JWE الخاصة بـ NextAuth.js / Auth.js بحثًا عن NEXTAUTH_SECRET / AUTH_SECRET معروف أو ضعيف |
تتجاوز الوحدات النشطة الكشف السلبي بخطوة. تستخدم التصفية المسبقة القائمة على YARA لبصم الهدف المباشر (بناءً على رؤوس استجابة HTTP، وملفات تعريف الارتباط، ومحتوى النص)، ثم تزوّر منتجات تشفيرية بمفاتيح معروفة وترسلها إلى الهدف لتأكيد ما إذا كان المفتاح مقبولًا. هذا يجعلها مفيدة في الحالات التي لا تمتلك فيها بالفعل رمزًا لتحليله ولكنك تشك في أن الهدف قد يستخدم أسرارًا افتراضية أو معروفة جيدًا.
الوحدات النشطة ممكّنة افتراضيًا في وضع URL (--url). استخدم --passive-only لتعطيلها.
| الاسم | الوصف |
|---|---|
| Shiro_RememberMe_Key | يزوّر ملفات تعريف ارتباط rememberMe الخاصة بـ Apache Shiro بمفاتيح AES معروفة ويختبر ما إذا كان الهدف يقبلها (إلغاء تسلسل RCE) |
| GlobalProtect_DefaultMasterKey | يختبر بوابات PAN-OS GlobalProtect بحثًا عن استخدام مفتاح التشفير الرئيسي الافتراضي |
| LTPA_Token_Key | يزوّر ملفات تعريف ارتباط LtpaToken2 الخاصة بـ IBM WebSphere بمفاتيح LTPA معروفة ويختبر ما إذا كان الهدف يمنح المصادقة (تجاوز المصادقة) |
لدينا حزمة pypi، لذا يمكنك فقط تنفيذ pip install badsecrets للاستفادة من المكتبة.
أفضل طريقة لاستخدام Badsecrets هي ببساطة تشغيل badsecrets بعد تنفيذ pip install:
pip install badsecrets
badsecrets eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
في الخلفية، يستخدم مثال cli.py. يمكن أيضًا الوصول إلى واجهة سطر الأوامر يدويًا دون تثبيت pip:
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
python ./badsecrets/examples/cli.py eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
لاستخدام الأمثلة، بعد تنفيذ pip install، ما عليك سوى تنفيذ git clone للمستودع ثم cd إلى دليل badsecrets:
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
تفترض الأوامر في قسم المثال أدناه أنك في هذا الدليل.
إذا كنت تستخدم وحدة BBOT الخاصة بـ Badsecrets، فلست بحاجة إلى فعل أي شيء آخر - ستقوم BBOT بتثبيت الحزمة نيابةً عنك.
يتضمن Bad secrets واجهة سطر أوامر نموذجية للراحة عند التحقق اليدوي من الأسرار. كما ذُكر أعلاه، يمكن الوصول إليها أيضًا بمجرد تنفيذ badsecrets، بعد نجاح تثبيت pip.
usage: badsecrets [-h] [-nc] [-j] [-u URL] [-nh] [-c FILE_OR_MODULE:KEYS]
[-p PROXY] [-a USER_AGENT] [-H HEADER] [-d] [-t TIMEOUT]
[-P] [-l]
[product ...]
Check cryptographic products against badsecrets library
positional arguments:
product Cryptographic product to check for known secrets