Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2023-21716-POC — إثبات المفهوم لـ CVE-2023-21716 Microsoft Word Heap Corruption | Kitploit
أدوات/GitHubGitHub/ronf98/cve-2023-21716-poc
تحليل الثغرات الأمنيةالاستغلالالأوراق والأبحاثالتعلم والتعليماستغلال الملفات الثنائية
GitHubronf98/cve-2023-21716-poc

CVE-2023-21716-POC

إثبات المفهوم لـ CVE-2023-21716 Microsoft Word Heap Corruption

عرض المستودع
428منذ سنة واحدةلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

التاريخ

في فبراير 2023، أصدرت مايكروسوفت تصحيحًا لثغرة أمنية خطيرة في مايكروسوفت وورد، تم تحديدها برقم CVE-2023-21716 وبدرجة CVSS تبلغ 9.8، والتي قد تسمح للمهاجمين بتنفيذ تعليمات برمجية عن بُعد دون مصادقة. كما أثرت هذه الثغرة على جزء المعاينة في Outlook، مما يعني أنه يمكن تفعيلها بمجرد معاينة الملف. بينما أصدرت مايكروسوفت تصحيحًا وحلاً بديلاً، لم تفصح عن تفاصيل المشكلة. في 6 مارس، شارك الباحث الذي اكتشف الثغرة (جوشوا جيه. دريك - @jduck) إثبات المفهوم (PoC) على تويتر.

كيف يحدث

تنشأ CVE-2023-21716 من كيفية تعامل مايكروسوفت وورد مع ملفات تنسيق النص الغني (RTF)، وخاصة كلمة التحكم \fonttbl، التي تحدد الخطوط في المستند باستخدام تنسيق \f<رقم>. يتم تخصيص مقدار معين من المساحة داخل الكومة (Heap) لـ \fonttbl داخل wwlib.dll (وذلك لأن تخصيصات الكومة تُستخدم عادةً للبيانات الديناميكية، مثل تحليل الهياكل الكبيرة كجدول الخطوط، حيث قد يختلف الحجم حسب الإدخال). يحدث الانهيار بسبب تجاوز سعة المخزن المؤقت (buffer overflow) عندما يتجاوز عدد الخطوط الحد المسموح (ثبت من إثبات المفهوم أنه 32760). يؤدي تجاوز مساحة الكومة المخصصة إلى الكتابة فوق مؤشر تعليمات الإرجاع (RIP)، مما يتسبب في تعطل التطبيق.

الإصدارات المتأثرة

  • Microsoft Office 2019
  • Microsoft Office Online Server
  • Microsoft Office LTSC 2021
  • Microsoft Office LTSC for Mac 2021
  • Microsoft Word 2013 Service Pack 1
  • Microsoft Word 2013 RT Service Pack 1
  • Microsoft Word 2016
  • Microsoft SharePoint Server 2019
  • Microsoft SharePoint Enterprise Server 2013 Service Pack 1
  • Microsoft SharePoint Enterprise Server 2016
  • Microsoft SharePoint Foundation 2013 Service Pack 1
  • Microsoft SharePoint Server Subscription Edition Language Pack
  • Microsoft SharePoint Server Subscription Edition
  • Microsoft Office Web Apps Server 2013 Service Pack 1
  • Microsoft 365 Apps for Enterprise

المعالجة

يُنصح المستخدمون بشدة بتثبيت أحدث التصحيحات الأمنية من مايكروسوفت، حيث قاموا بحل هذه المشكلة. بالنسبة لأولئك الذين لا يستطيعون الترقية، قدمت مايكروسوفت أيضًا العديد من الحلول البديلة، والتي يمكن العثور عليها هنا: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-21716.

CVE-2023-21716-POC

خطوات إعادة الإنتاج

  1. قم بتثبيت إصدار ضعيف من مايكروسوفت أوفيس.
  2. قم بتنزيل وتشغيل النص البرمجي RTF-creator.
  3. إذا كنت لا ترغب في إعادة إنشاء الملف، يمكنك استخدام هذا الملف بدلاً من ذلك malicious.rtf الذي يحتوي على 32761 خطًا وسيؤدي إلى تجاوز سعة المخزن المؤقت لتعطل الخدمة.
  4. أرسل ملف .rtf عبر البريد الإلكتروني إلى الضحية، إذا كان لديه إصدار ضعيف من أوفيس، فسيتم تفعيل الثغرة.

المنطق الأساسي

باستخدام WinDbg، يمكننا إلقاء نظرة أقرب لفهم سبب الانهيار. إليك العملية:

  1. قم بتشغيل مايكروسوفت وورد.
  2. افتح WinDbg وأرفقه بعملية WINWORD.
  3. افتح الملف malicious.rtf باستخدام وورد.

سيتوقف WinDbg تلقائيًا عند حدوث الانهيار، مما يسمح لنا بتحليله بشكل أعمق. للبدء، يمكننا كتابة 'k' لعرض مكدس الاستدعاءات:

0:000> k
 # ChildEBP RetAddr      
00 012f5134 77a5feb5     ntdll!RtlReportCriticalFailure+0x4b       
01 012f5170 77a5dda9     ntdll!RtlpReportHeapFailure+0x2f
02 012f5170 77a66220     ntdll!RtlpHpHeapHandleError+0x89
03 012f5188 77a5dab7     ntdll!RtlpLogHeapFailure+0x43
04 012f51ec 779b400d     ntdll!RtlpAnalyzeHeapFailure+0x281
05 012f5348 779f806d     ntdll!RtlpFreeHeap+0x24d
06 012f53a4 779b3d66     ntdll!RtlpFreeHeapInternal+0x783
07 012f53c4 6ea4aa24     ntdll!RtlFreeHeap+0x46                       //ترتبط الوظائف المعروضة تحت ntdll بمعالجة أخطاء تلف الكومة
08 012f53d8 6ea4a9cb     mso20win32client!Ordinal1068+0xab
09 012f53e8 6ea4a995     mso20win32client!Ordinal1068+0x52
0a 012f53f4 6cccda52     mso20win32client!Ordinal1068+0x1c
0b 012f5410 03657fea     mso!Ordinal1387+0x24
0c 012f5424 03990115     wwlib!PTLS7::FsUpdateFinitePage+0x7e26f      //wwlib مسؤولة عن معالجة جدول الخطوط
0d 012f5670 034ea593     wwlib!PTLS7::LsDestroyContext+0x245f90
0e 012f6f5c 033a68ef     wwlib!PTLS7::FsUpdateBottomlessPage+0x17494
0f 012f7484 035054ed     wwlib!PTLS7::LsAssert+0x2bd1c
10 012f888c 03503d3b     wwlib!PTLS7::FsUpdateBottomlessPage+0x323ee
11 012f8910 0400be52     wwlib!PTLS7::FsUpdateBottomlessPage+0x30c3c
12 012f9e9c 0390013a     wwlib!wdGetApplicationObject+0xdf8a0
13 012faf48 03ebf20e     wwlib!PTLS7::LsDestroyContext+0x1b5fb5
14 012faf90 0410ab2a     wwlib!DllCanUnloadNow+0xcc314
15 012fcfe0 03752fb4     wwlib!wdGetApplicationObject+0x1de578
16 012ff538 03385b93     wwlib!PTLS7::LsDestroyContext+0x8e2f
17 012ff578 75e6173b     wwlib!PTLS7::LsAssert+0xafc0
18 012ff5a4 75e57eaa     USER32!_InternalCallWinProc+0x2b
19 012ff68c 75e57eaa     USER32!UserCallWinProcCheckWow+0x33a
1a 012ff6c4 75e57666     USER32!CallWindowProcAorW+0x7f
1b 012ff6dc 7500ae9d     USER32!CallWindowProcW+0x1b
.....
.....

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

للتعمق أكثر، يمكننا وضع نقطة توقف (breakpoint) في الجزء الأخير من مكتبة wwlib لمعرفة كيفية تحميل خطوطنا داخل الذاكرة، وفهم ما الذي أثار المشكلة:

bc * //delete all other breakpoints

bp wwlib!PTLS7::FsUpdateFinitePage+0x7e26f //create the breakpoint

الآن نحصل على انتهاك الوصول:

(ba4.1a14): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=004f1ce4 ebx=00000001 ecx=000004e4 edx=ffff7ffc esi=13474fe8 edi=00008002
eip=02b300d5 esp=004f1c3c ebp=004f1c48 iopl=0         nv up ei pl nz na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00210206
wwlib!PTLS7::FsUpdateFinitePage+0x7635a:
02b300d5 66894c5604      mov     word ptr [esi+edx*2+4],cx ds:002b:13464fe4=????  //يحدث التوقف هنا

نظرًا لأننا أوقفنا البرنامج في وقت مبكر، عند النقطة التي تحاول فيها wwlib.dll أولاً الوصول إلى ذاكرة غير صالحة أو تعديلها (في FsUpdateFinitePage)، فإن ذلك يسمح لنا برؤية انتهاك الوصول الأولي (الذي يسبب تلف الذاكرة)، مما يمنحنا فرصة لفحص ما حدث بشكل خاطئ قبل أن تكتشف ntdll.dll خطأ تلف الكومة.

لنكون أكثر دقة، توقف البرنامج بسبب انتهاك الوصول (الرمز c0000005) عند التعليمات mov word ptr [esi+edx2+4],cx داخل الدالة wwlib!PTLS7::FsUpdateFinitePage+0x7635a. يشير هذا الخطأ إلى أن وورد حاول الوصول إلى موقع ذاكرة غير صالح، وتحديدًا عند محاولة تخزين قيمة (cx) في الذاكرة في الموقع esi+edx2+4.

إذا نظرنا أكثر إلى السجل ESI، يمكننا رؤية أنه يحمل بيانات الخط: صورة صورة كل قيمة 16 بت (بايتان) بتنسيق little-endian تمثل إدخال خط في التنسيق \fA;

آخر قيمة ممثلة داخل ESI هي f8 7f والتي تتوافق مع {\f32760A;} قبل الوصول إلى النهاية (الممثلة بـ 29-00) صورة

الآن بعد تحميل جدول الخطوط في موقع الذاكرة المشار إليه بواسطة سجل ESI، ومع معالجة عدد كبير جدًا من الخطوط، من المحتمل أن يتجاوز موقع الذاكرة المحسوب (esi + edx*2 + 4) الذاكرة المخصصة لجدول الخطوط. ينتج عن هذا كتابة خارج النطاق (out-of-bounds write)، مما يسبب خطأ انتهاك الوصول. يتم اكتشاف انتهاك الوصول بواسطة ntdll.dll، التي تدير إدارة الذاكرة والإبلاغ عن الأخطاء. نتيجة لذلك، تقوم ntdll.dll باستدعاء وظائف تكتشف تلف الكومة، مما يؤدي في النهاية إلى تعطل التطبيق.

تنزيل الأداة