Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CRIME-poc — :hocho: إثبات المفهوم (PoC) لهجوم CRIME : هجوم أوراكل الضغط على CVE-2012-4929 :hocho: | Kitploit
أدوات/GitHubGitHub/mpgn/crime-poc
تحليل الثغرات الأمنيةالاستغلالأمن الويبالتشفيرالأوراق والأبحاثالتعلم والتعليم
GitHubmpgn/crime-poc

CRIME-poc

🔪 إثبات المفهوم (PoC) لهجوم CRIME : هجوم أوراكل الضغط على CVE-2012-4929 🔪

عرض المستودع
31102منذ 7 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CRIME-poc

هجوم CRIME: هو هجوم أوراكل ضغط CVE-2012-4929 اكتشفه جوليانو ريتزو وتاي دونغ؛

في هجوم أوراكل الضغط، يمكن أن يؤدي استخدام ضغط البيانات التكيفي على مزيج من النص الصريح المختار والنص الصريح غير المعروف إلى تغييرات حساسة للمحتوى في طول النص المضغوط يمكن اكتشافها حتى وإن كان محتوى النص المضغوط نفسه مشفرًا بعد ذلك. يمكن استخدام هذا في هجمات البروتوكول لاكتشاف متى يكون النص الصريح المعروف المحقون مشابهًا جزئيًا حتى للمحتوى غير المعروف لجزء سري من الرسالة، مما يقلل بشكل كبير من تعقيد البحث عن تطابق للنص السري. هجوم CRIME وهجوم BREACH مثالان على هجمات البروتوكول التي تستخدم هذه الظاهرة.

يتيح لك هجوم CRIME استرداد البيانات المشفرة التي يرسلها العميل إلى الخادم باستخدام طول البيانات المشفرة. وهو لا يتيح لك استرداد المفتاح الخاص المستخدم لتشفير الرسالة أو طلب HTTP.

جدول المحتويات

  1. الشرح
    1. شيفرة التدفق RC4
    2. وضع تشفير CBC
  2. الاستغلال

الشرح

تشرح العديد من المقالات كيفية عمل هجوم CRIME، لكن هذه أفضل التفسيرات التي وجدتها على الإنترنت:

  1. هذه الإجابة: Crime كيف نهزم خليفة Beast
  2. استطلاع هجمات SSL من NCC Group

هذا الهجوم ليس معقدًا حقًا، فالجزء المثير للاهتمام حقًا هو التنفيذ الذي يختلف قليلًا عن «النظرية».

لنلقِ نظرة على الطريقة الساذجة كما هي موصوفة في المقال، إنها طريقة جيدة لفهم كيفية عمله:

يمكن للمهاجم التحكم في الطلب الذي يرسله العميل (باستخدام جافا سكريبت مثلًا). الهدف هو استرداد ملف تعريف الارتباط السري. يرسل المهاجم طلبات متعددة مثل هذه ويتحقق من طول البيانات المشفرة:

الطلبالطول
GET /cookie= DATA cookie=quokkalight80
GET /cookie=a DATA cookie=quokkalight81
GET /cookie=b DATA cookie=quokkalight81
GET /cookie=. DATA cookie=quokkalight81
GET /cookie=q DATA cookie=quokkalight80

بما أن cookie=q يطابق cookie=quokkalight من ملف تعريف الارتباط السري، فسيكون طول البيانات المشفرة هو نفسه، ويعلم المهاجم أنه وجد بايتًا.

لكن هذه الطريقة تفشل أحيانًا ولا يمكن الوثوق بها، لذا سنستخدم طريقة أخرى بدلًا من ذلك. أولًا نرسل طلبًا يحتوي على الحرف الذي نريد العثور عليه متبوعًا بعدة أحرف لا يمكن العثور عليها في الطلب الأولي مثل بعض الأحرف الخاصة: chr(i) + "#:/[@/&". ثم نرسل طلبًا ثانيًا لكننا نعكس الحمولة هكذا: "#:/[@/&" + chr(i) ونقارن بين الطولين. إذا كان len(enc(req1)) < len(enc(req2)) فقد وجدنا بايتًا. تسمى هذه الطريقة: two_tries وهي أكثر موثوقية بكثير:

الطلب لاسترداد البايت qالطول
GET /cookie=a~#:/[@/& DATA cookie=quokkalight81
GET /cookie=~#:/[@/&a DATA cookie=quokkalight81
GET /cookie=b~#:/[@/& DATA cookie=quokkalight81
GET /cookie=~#:/[@/&b DATA cookie=quokkalight81
GET /cookie=q~#:/[@/& DATA cookie=quokkalight80
GET /cookie=~#:/[@/&q DATA cookie=quokkalight81

وجد المهاجم بايتًا!

root@kitploit:~
if len(enc(request1)) < len(enc(request2)):
    print("found byte")

طريقة two_tries التي نفذتها تعاودية بالكامل، لكن لماذا؟ في بعض الأحيان، يمكن العثور على أكثر من بايت واحد لأن الضغط يطابق أنماطًا متعددة.

لنأخذ السر: cookie=quokkalight، إذا شغّلنا الخوارزمية two_tries فسنجد النتيجة التالية:

root@kitploit:~
result 1: cookie=quokie=quokie=quokie=quokie=quokie=
result 2: cookie=quokkalight

تحتاج الخوارزمية إلى سلوك جميع المسارات في الشجرة للعثور على جميع الحلول الممكنة. يمكننا رؤية جميع النتائج كشجرة يمكن تمثيلها على النحو التالي:

img

إثبات المفهوم

شيفرة التدفق RC4

يمكن العثور على إثبات المفهوم لهجوم CRIME ضد وضع شيفرة التدفق في الملف: CRIME-RC4-poc.py. هذا تنفيذ بلغة بايثون للشرح السابق.

root@kitploit:~
python3 CRIME-RC4-poc.py

عرض توضيحي كامل والنتيجة:

asciicast

وضع تشفير CBC

عند استخدام وضع تشفير CBC مع AES أو DES، لا يكون الهجوم بنفس بساطة هجوم RC4. نظرًا لأن كل شيء مقسم إلى كتل، يصبح الهجوم أكثر تعقيدًا قليلًا (ليس كثيرًا).

cbc

على سبيل المثال، لنفترض أننا نستخدم AES مع وضع تشفير CBC، فسيتم تقسيم الكتلة إلى طول 16 وسيُضاف حشو إلى النهاية إذا كان len(data)%16 != 0. في وضع CBC، من المهم ملاحظة أن الحمولة payload=rand ستنتج طولًا قدره 16 وليس 12، لأنه سيُضاف حشو في نهاية البيانات قبل التشفير. لذا لا يمكن أن يعمل هجومنا السابق.

مثال:

الكتلة 1الكتلة 2الكتلة 3الطول
GET /cookie= DATA cookie=quokkalight + PAD(11)48
GET /cookie=a DATA cookie=quokkalight + PAD(10)48
GET /cookie=b DATA cookie=quokkalight + PAD(10)48
GET /cookie=. DATA cookie=quokkalight + PAD(10)48
GET /cookie=q DATA cookie=quokkalight + PAD(11)48

في هذا المثال، سيكون الطول هو نفسه دائمًا، لأنه إذا أضفنا أو أزلنا بايتًا، سيبقى الطول كما هو، فقط الحشو سيتغير. يرى المهاجم البيانات المشفرة فقط، ولا توجد لديه طريقة لمعرفة الحشو من البيانات المشفرة.

الحل: العب مع مواصفات وضع CBC، بحيث يصبح طول الحشو 1 عن طريق إضافة قيمة عشوائية في متغير GARB (في معامل GET، حيث يتحكم المهاجم في بيانات GET وPOST).

الكتلة 1الكتلة 2الكتلة 3الكتلة 4الطول
GET /GARBcookie= DATA cookie=quokkalight + PAD(1)48
GET /GARBcookie=a DATA cookie=quokkalightPAD(16)64
GET /GARBcookie=b DATA cookie=quokkalightPAD(16)64
GET /GARBcookie=. DATA cookie=quokkalightPAD(16)64
GET /GARBcookie=q DATA cookie=quokkalight + PAD(1)48

إذا تطابق البايت مع نمط، فسيكون الطول هو نفسه، وإذا لم يتطابق، سيكون الطول مختلفًا.

بعد ذلك، علينا فقط استخدام الطريقة نفسها الموضحة في جزء RC4، ولكن نضيف خطوة واحدة قبلها.

  1. نستدعي الدالة adjust_padding() حتى نحصل على حشو بطول 1
  2. نستدعي الدالة two_tries_recursive() ويمكننا العثور على FLAG السري!
root@kitploit:~
python3 CRIME-cbc-poc.py

asciicast

الاستغلال

قريبًا جدًا...

root@kitploit:~
                \     /
                 \ _ /
              ----/_\----
  x--------------( . )--------------x
       x|x   | |_|\_/|_| |   x|x
        x    x           x    x     

المراجع

https://www.nccgroup.trust/globalassets/our-research/us/whitepapers/ssl_attacks_survey.pdf https://github.com/cloudflare/cf-nocompress https://www.ekoparty.org/archive/2012/CRIME_ekoparty2012.pdf https://security.stackexchange.com/questions/19911/crime-how-to-beat-the-beast-successor/19914#19914

تنزيل الأداة