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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
exploit_playground — Analysis of public exploits or my 1day exploits | Kitploit
أدوات/GitHubGitHub/externalist/exploit_playground
Android SecurityiOS SecurityVulnerability AnalysisExploitationReverse EngineeringWeb SecurityLearning & EducationCurated ResourcesBinary Exploitation
GitHubexternalist/exploit_playground

exploit_playground

Analysis of public exploits or my 1day exploits

61698منذ 5 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

حول

هذا هو المكان الذي سأنشر فيه تحليلات للاستغلالات العامة (Public Exploits)، أو بعض استغلالاتي من نوع 1day.

[ تحليل الاستغلالات العامة ]

  • شخصياً، أعتقد أن أفضل طريقة لتعلّم استغلال عام هي فهمه سطراً بسطر حتى أفهم الاستغلال على أكمل وجه. سأنشر بعضاً من هذه الاستغلالات (المشروحة بتعليقات مفرطة ;) ) على أمل أن يتمكن الآخرون من التعلم منها، وكمحاولة لإعطاء شيء للمجتمع. أيضاً لأغراض التوثيق، لأن هذه الأشياء تتلاشى من ذهني مع مرور الوقت.

CVE-2016-8655

  • هذا تحليل مفصّل لـ استغلال rebel.
  • شكراً rebel على الاستغلال الرائع! :D

CVE-2016-5342

نسخة mp3

  • هذه نسخة مشروحة من استغلال freener لتصعيد الصلاحيات المحلية (LPE) على أندرويد
  • arm32
  • تجاوز سعة الكومة (Heap overflow)
  • يستبدل هذا الاستغلال مباشرة مؤشر دالة (function pointer) لكائن آخر

نسخة tty

  • هذه نسخة مشروحة من استغلال freener لتصعيد الصلاحيات المحلية (LPE) على أندرويد
  • arm32
  • تجاوز سعة الكومة (Heap overflow)
  • يستبدل هذا الاستغلال مؤشر كائن داخل كائن آخر. يستخدم هجوم ret2dir لجعل المؤشر التالف يشير إلى عنوان ثابت يمكن التنبؤ به في النواة يحمل حمولة الاستغلال. تقنية الاستغلال هذه تتجاوز PXN & PAN.

CVE-2016-2434

  • هذه نسخة مشروحة من استغلال Jianqiang Zhao لتصعيد الصلاحيات المحلية (LPE) على أندرويد
  • arm64
  • تصفير 16 بايت في عنوان عشوائي
  • يمسح هذا الاستغلال 16 بايت من كائن عام مفيد، يقع في عنوان ثابت في النواة.
  • مؤشر كائن تالف داخل الكائن العام يشير إلى حمولة الاستغلال من مساحة المستخدم (userland). هذا النوع من الهجمات لن يعمل على الأجهزة/الأنوية المزودة بـ PAN (أو محاكاة PAN).

extra_recipe

  • محاولتي لفهم أداة كسر الحماية extra_recipe
  • كنت مهتماً بشكل خاص بجزء تجاوز kpp. على الرغم من وجود شريحتين حول الموضوع تمكنت من استخلاص صورة غامضة عن التجاوز منهما، إلا أنني أردت حقاً الغوص في التفاصيل الدقيقة ورؤية ما يحدث فعلياً داخل الكود
  • أردت أيضاً فهم المكونات النهائية لكسر الحماية (تثبيت Cydia، إلخ.)

yalu102 (ViewController.m)

  • علقت على الجزء المتعلق بالخلل الفعلي، وكيفية استغلاله.
  • السبب في اطلاعي على yalu102 بدلاً من الاستغلال الأصلي هو أن تقنية port-feng-shui بدت أنظف وأكثر مباشرة في الفهم.
  • يتوقف التحليل قبل تجاوز kpp مباشرة

extra_recipe-master من xerub (jailbreak.c, unjail.m, patchfinder64.c, pte_stuff.h)

  • انتقلت إلى هنا لأنه يحتوي على معلومات أكثر قليلاً حول الإزاحات الرقمية المختلفة.
  • أيضاً، ملف patchfinder.c سليم، على عكس yalu102 الذي لا يحتوي إلا على ملف كائن (object file).
  • جزء cydia غير مكتمل نوعاً ما، لذا انتقلت إلى فرع cydia بعد kpp

extra_recipe-cydia من xerub (unjail.m)

  • محاولة فهم مكونات كسر الحماية بعد tfp0 وما بعد الاستغلال

empty_list (sploit.c)

  • تفكيك مفصّل لـ استغلال نواة empty_list من Ian Beer.
  • يستخدم تقنيات مذهلة للانطلاق من بدائيات ضعيفة جداً، لبناء AAR أقوى، وأخيراً بناء منفذ مهام (task port) متكامل. سحر المنافذ (port magic) الكامن خلف كود الاستغلال لا يُصدق. كل هذا من خلال تجاوز سعة كومة بحجم 8 بايتات NULL. مذهل تماماً.
  • دونت بعض الأفكار الساذجة لتحسين الموثوقية. آمل أن يطلق شخص ما نسخة أكثر موثوقية من الاستغلال في المستقبل. :)
  • شكراً Ian Beer على الاستغلال المذهل!

CVE-2018-4233

  • هذه نسخة مشروحة من استغلال iOS Webkit من @niklas_b.
  • شكر كبير إلى kudima(@begger_dd) على الشرح الواضح والموجز جداً، والمشروح بتعليقات شاملة! :)
  • يشرح المقال خلل الخلط بين الأنواع (type confusion) في JIT، وبعض القيود على تحويلات boxing/unboxing (التي قد تسبب عدم موثوقية)، وشرحاً مفصلاً لكيفية بناء بدائيات AAR/AAW المبكرة/المتأخرة. كما يقدم نظرة ثاقبة على التغييرات في تقنيات الاستغلال بعد الجولة الأخيرة من التخفيفات (index masking، تسميم التخزين الخلفي لـ ArrayBuffer، بعض التغييرات على آلية W^X JIT، تغييرات في بنية JSObject، إلخ)

jsc_ConcatMemcpy_infoleak

  • هذه نسخة مشروحة من استغلال WebKit لتسريب المعلومات (infoleak) من kudima (تم إصلاحه في 2018.8.27).
  • ينبع هذا من إصلاح غير مكتمل لأحد الأخطاء التي أبلغ عنها lokihardt. التصحيح من تقرير lokihardt أصلح بدائية الخلط بين الأنواع Double -> Object، لكنه لم يصلحها في الاتجاه المعاكس؛ Object -> Double.
  • يرش كومة webkit بالفراشات (butterflies) التي تحتوي على كائن واحد وعلامة (marker)، ثم يطلق لاحقاً خلل concat ويملأ جزءاً كبيراً من عدة مصفوفات double ببيانات كومة غير مهيأة. يتنقل عبر مصفوفات double غير المهيأة التي أنتجها خلل concat حتى يعثر على عنوان الكائن الذي تم رشه سابقاً، ويسربه.
  • شكراً مرة أخرى kudima(@begger_dd) على الاستغلال والشرح الجميل! :)

jsc_prop_enum_uaf

  • هذه مساهمة أخرى من kudima. إنها نسخة مشروحة من استغلال تنفيذ التعليمات البرمجية عن بُعد في WebKit من kudima (تم إصلاحه في هذا الالتزام). تم إصلاحه في iOS 12.1، ويعمل حتى iOS 12.0.1.
  • المشكلة هي أنه أثناء تنفيذ كود في حلقات forin المترجمة بواسطة baseline JIT، يمكنك إدخال كود يحرر كائن StructureID الداعم لكائن JSOBject ويُشغّل جامع القمامة، لكن جامع القمامة لا يضع علامة على العضو "JSPropertyNameEnumerator->m_cachedStructureID"، فيتم تحرير كائن StructureID الذي يشير إليه "JSPropertyNameEnumerator->m_cachedStructureID" أثناء مرحلة الكنس (sweep phase)، مما يؤدي إلى مؤشر معلق (dangling pointer).
  • بعد تحرير كائن StructureID بواسطة GC، يمكنك إدخال كود ينشئ كائن StructureID جديداً، يأخذ فتحة "كائن StructureID" المحررة سابقاً.
  • بتحرير StructureID الخاص بالكائن A، ثم جعل الكائن B ينشئ StructureID جديداً يحل محله، يصبح من الممكن خلق حالة خلط بين الأنواع (type confusion) لأن "JSPropertyNameEnumerator->m_cachedInlineCapacity" مضبوط على حجم الخصائص الداخلية (inline properties) للكائن A، بينما يشير "JSPropertyNameEnumerator->m_cachedStructureID" إلى كائن Structure ID الجديد الذي يمثل الكائن B. وهذا يجعل الفحص في 'op_get_direct_pname' ينجح، ويسمح للكائن B بالوصول إلى خصائص داخلية خارج حدوده.
  • يمكن إساءة استخدام هذا لبناء بدائيات أقوى مثل AAR/AAW، ومن ثم استخدامها لتنفيذ تعليمات برمجية عشوائية.
  • شكراً kudima(@begger_dd) على الاستغلال الرائع والشرح المفصل جداً! :)

[ استغلالات 1Day ]

CVE-2017-2547

  • في أحد الأيام، اطلعت على استغلال singi بعد تقديمه في Zer0con 2018، وقررت تحسينه.
  • هذه نسخة مستقلة من الاستغلال، قبل أن أدمجه في pwnjs.
  • تشمل التحسينات:
    • زيادة الموثوقية (يعمل بشكل مثالي بعد جلسات تصفح مكثفة بذاكرة ملوثة)
    • إزالة جميع الإزاحات الثابتة في الكود (hardcoded offsets) لضمان التوافق مع إصدارات المتصفحات المختلفة
    • استخدام تقنية استغلال مختلفة (تقنية misalign القياسية)
    • دمجته في النهاية في إطار عمل pwnjs عبر إنشاء prototype لـ webkit
    • جعل الكود أكثر قابلية للقراءة بكثير، وإضافة الكثير من التعليقات
  • شكر خاص
    • qwertyoruiop & Samuel Grob على مقال phrack المذهل والاستغلالات العامة
    • Brian Pak & Andrew Wesie على إطار عمل pwnjs الرائع!
تنزيل الأداة