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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2021-21017 — إثبات مفهوم لاستغلال CVE-2021-21017، وهو خلل في الخلط بين الأنواع في Adobe Reader يؤدي إلى قراءة خارج الحدود وتجاوز في سعة الكومة، مع تحليل تقني وإرشادات للكشف. | Kitploit
أدوات/GitHubGitHub/tzwlhack/cve-2021-21017
تحليل الذاكرة الجنائيتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبتحليل الملفات الثنائية
GitHubtzwlhack/cve-2021-21017

CVE-2021-21017

إثبات مفهوم لاستغلال CVE-2021-21017، وهو خلل في الخلط بين الأنواع في Adobe Reader يؤدي إلى قراءة خارج الحدود وتجاوز في سعة الكومة، مع تحليل تقني وإرشادات للكشف.

عرض المستودع
5منذ 4 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2021-21017

ليست ثغرة أخرى من ثغرات Byte Order Mark في Adobe Reader :)

root@kitploit:~
# IA32 plugin, ver. 2020.013.20074.
char * __cdecl FUN_2581894c(char *base_url,LPCSTR rel_url)
{
  ............................................................
  ............................................................
  if ((base_url != (char *)0x0) && (rel_url != (LPCSTR)0x0)) {
    if ((*base_url == -2) && (base_url[1] == -1)) {
      iVar6 = bytes_len(base_url);
      pcVar7 = base_url + iVar6;
      pcVar8 = rel_url + 2;
      do {
        do {
          cVar3 = *pcVar8;
          pcVar1 = pcVar8 + 2;
          *pcVar7 = cVar3;
          pcVar2 = pcVar7 + 2;
          cVar4 = pcVar8[1];
          pcVar7[1] = cVar4;
          pcVar7 = pcVar2;
          pcVar8 = pcVar1;
        } while (cVar3 != '\0');
      } while (cVar4 != '\0');
    }
    else {
      lstrcatA(base_url,rel_url);
    }
    return base_url;
  }
  .............................................................
  .............................................................
}

عند بناء عنوان URL مطلق من عنوان نسبي إلى baseURL الخاص بمستند PDF لاستخدامه في واجهات برمجة التطبيقات مثل: app.launchURL أو document.submitForm أو app.media.createPlayer، إذا كان baseURL يبدو كسلسلة UTF-16BE، فسيتم التعامل مع العنوان النسبي أيضاً كسلسلة UTF-16BE عند إجراء عملية الدمج، على الرغم من أنه في الواقع سلسلة ANSI.

قد يؤدي هذا إلى قراءة خارج الحدود (Out-of-bounds read) من ناحية. ومن ناحية أخرى، عند تخصيص ذاكرة لاستيعاب المخزن المؤقت الوجهة، يتم "قياس" العنوان النسبي كسلسلة ANSI. وهذا بالطبع غير كافٍ إذا حدثت قراءة خارج الحدود. (سلسلة + فاصل NULL يملأان كتلة heap كاملة).

ماذا يعني هذا؟

خلط الأنواع => قراءة خارج الحدود => تجاوز سعة الكومة => FULL BUKAKE!

PoC مرفق

سيؤدي هذا في أغلب الأحيان إلى انهيار (crash) وأحياناً إلى الكتابة فوق byteLength لكائن ArrayBuffer بقيمة 0xFF.

إذا كانت لديك أسئلة، فلا تتردد في التواصل معي على تويتر: https://twitter.com/Zeusb0x

الاكتشاف

سيحتوي كتالوج مستند PDF على إدخال URI يحمل مرجعاً غير مباشر إلى كائن قاموس. وسيحتوي هذا بدوره على إدخال Base، وهو baseURL الفعلي. وسيكون موجوداً على الأرجح بترميز سداسي عشري وسيبدأ بالأحرف \xFE\xFF. (انظر PoC). لحسن الحظ، هذه هي الطريقة الوحيدة لتغيير baseURL الخاص بمستند في سياق عادي غير مميز. محاولة القيام بذلك من JavaScript ستؤدي إلى استثناء أمني.

تنزيل الأداة