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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2021-40444 — مولّد مستندات DOCX ضارة يستغل CVE-2021-40444 (ثغرة RCE في Microsoft Office Word) مع تحميل جانبي لـ DLL قائم على CAB وسلاسل هجوم RAR/WSF بدون CAB لاختبار الاختراق. | Kitploit
أدوات/GitHubGitHub/tiagob0b/cve-2021-40444
توليد الحمولةالاستغلالاستغلال تطبيقات الويباختبار الاختراقتوليد شيفرة القشرةاستغلال الملفات الثنائية
GitHubtiagob0b/cve-2021-40444

CVE-2021-40444

مولّد مستندات DOCX ضارة يستغل CVE-2021-40444 (ثغرة RCE في Microsoft Office Word) مع تحميل جانبي لـ DLL قائم على CAB وسلاسل هجوم RAR/WSF بدون CAB لاختبار الاختراق.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2021-40444 مسلح بالكامل

مولّد docx خبيث لاستغلال CVE-2021-40444 (تنفيذ تعليمات برمجية عن بعد في Microsoft Office Word)، يعمل مع ملفات DLL عشوائية.

خلفية

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

حتى الآن، المصادر القيمة الوحيدة التي رأيتها لإنشاء مولّد يعمل بكامل طاقته هي:

  • مدونة من Ret2Pwn
  • تغريدة من j00sean

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

سلسلة الاستغلال

  1. فتح ملف docx
  2. يشير الرابط المخزّن في document.xml.rels إلى HTML ضار
  3. يتم تشغيل معاينة Internet Explorer لفتح رابط HTML
  4. يحتوي JScript داخل HTML على كائن يشير إلى ملف CAB، وإطار iframe يشير إلى ملف INF، مع بادئة التوجيه ".cpl:"
  5. يتم فتح ملف CAB، ويُخزَّن ملف INF في دليل %TEMP%\Low
  6. بسبب ثغرة اجتياز المسار (ZipSlip) في ملف CAB، يمكن تخزين ملف INF في %TEMP%
  7. ثم، يُفتح ملف INF باستخدام التوجيه ".cpl:"، مما يتسبب في التحميل الجانبي لملف INF عبر rundll32 (إذا كان هذا ملف DLL)

المتطلبات التي غالبًا ما يتم تجاهلها

هناك الكثير من المتطلبات التي يتم تجاهلها لنجاح هذا الاستغلال، مما تسبب في فشل إثباتات مفهوم جيدة، مثل ، في العمل بشكل صحيح.

هذا الإثبات من lockedbyte

ربما لم يقم أحد بنشرها صراحةً لتجنب استغلال الثغرة بشكل أكبر. لكن الآن تم تصحيحها، لذا لا ينبغي أن يسبب نشر التفاصيل الكثير من المتاعب.

ملف HTML

وفقًا لهذه التغريدة من Will Dormann، يجب أن يكون حجم HTML على الأقل 4096 بايت من أجل تشغيل "المعاينة" داخل MS Word.

ملف CAB

يحتاج ملف CAB إلى تصحيح بايت لتجنب أخطاء الاستخراج وتحقيق ZipSlip:

  • يجب أن يصبح filename.inf ../filename.inf
  • filename.inf يجب أن يكون بالضبط <12-حرف>.inf ليس صحيحًا تمامًا، المهم هو تعديل coffCabStart
  • CFFOLDER.typeCompress يجب أن يكون 0 (غير مضغوط)
  • CFFOLDER.coffCabStart يجب زيادته بمقدار 3 (بسبب إضافة '../')
  • CFFOLDER.cCfData يجب أن يكون 2
  • CFFILE.cbFile يجب أن يكون أكبر من CFHEADER.cbCabinet بالكامل
  • CFDATA.csum يجب إعادة حسابه (أو تصفيره) [اختياري]

أسباب هذه القيود كثيرة، ولم أمضِ وقتًا كافيًا لفهمها جميعًا بعمق، لكن دعنا نرى الأهم:

  • TypeCompress: إذا كان CAB مضغوطًا، فستفشل خدعة فتحه داخل ملف كائن لتشغيل كتابة INF خطأ، تمكنت من تحقيق نفس النتيجة مع عينة مضغوطة بـ MSZIP
  • CoffCabStart: يعطي CoffCabStart الموضع المطلق لأول بنية CFDATA، وبما أننا أضفنا '../'، نحتاج إلى زيادته بمقدار 3 للإشارة إلى الملف (هذا تخمين إلى حد كبير)
  • cCfData: نظرًا لوجود ملف واحد فقط، يجب أن يكون لدينا CFDATA واحد فقط، لست متأكدًا لماذا يجب ضبطه على 2 في الواقع، يمكننا تركه كـ 1
  • cbFile: المثير للاهتمام، إذا انتهى استخراج CAB دون أي خطأ، فسيتم وضع علامة على ملف INF للحذف بواسطة WORD، مما يفسد الاستغلال. الطريقة الوحيدة لمنع ذلك هي جعل WORD يعتقد أن الاستخراج فشل. إذا تم تعريف قيمة cbFile على أنها أكبر من ملف الخزانة نفسه، فسيصل المستخرج إلى نهاية الملف (EOF) قبل قراءة جميع البايتات المحددة في cbFile، مما يؤدي إلى رفع خطأ استخراج.
  • [اختياري] يبدو أن هذه القيمة لا يتم التحقق منها بواسطة MS Word. على أي حال، للحصول على CAB صحيح، يجب إعادة حساب قيمة csum. لحسن الحظ، كما لاحظ j00sean ووفقًا لوثائق MS، يمكن أن تكون هذه القيمة 0

ملاحظة 1: يكتشف Defender الآن ما إذا كان ملف CAB يحتوي على PE باستخدام قيمة _IMAGE_DOS_HEADER.e_magic كتوقيع، مما قد يمنع تضمين ملفات PE في CAB. هل يمكن تجاوز هذا التوقيع؟ لست متأكدًا، ولكن كما لاحظنا سابقًا، هذه ثغرة تم تصحيحها، لذا لا أخطط لاستثمار المزيد من الوقت في هذا الأمر. الأمر متروك للقارئ الفضولي لتطوير هذا أكثر.

ملاحظة 2: يحجب تصحيح Microsoft مخططات URI التعسفية، على ما يبدو باستخدام نهج القائمة السوداء (هذا مجرد افتراض)

هجوم DLL

سلسلة الهجوم الرئيسية المرتبطة بـ CVE-2021-40444 هي هجوم DLL الذي يتم تحميله عبر مخطط URI .cpl. لاستغلال ذلك، يحتاج المهاجم إلى إنشاء DLL مصمم خصيصًا. إذا كنت تريد اختباره، جرب نص evildll-gen الخاص بي.

JScript، VBScript، Javaw، MSIexec، ...

كما لاحظ Max Maluin، من الممكن التفاعل مع عدة أنواع ملفات باستخدام Internet Explorer وامتداد الملف المرتبط بـ URI. على الرغم من أن هذه قد تكون طريقة جيدة لاستغلال IE، إلا أن لها حدودًا.

في الواقع، تجدر الإشارة إلى أن الطريقة المستخدمة في الاستغلال لتنزيل الملفات تعتمد على تحديثات تحكم ActiveX، ولا يمكن استخدامها لتنزيل ملفات عشوائية. وفقًا لوثائق Microsoft، يمكن أن يشير وسم codebase إلى عدد قليل من أنواع الملفات فقط: OCX وINF وCAB.

حتى لو تمكنا من تنزيل ملف OCX أو INF مباشرة، لا يزال لا يمكننا التأكد من تنزيل الملف في الموقع الصحيح داخل النظام. باستخدام استغلال CAB، يمكن نقل ملف .inf إلى مسار معروف باستخدام اجتياز المسار، ولكن في أي حالة أخرى سيتم تخزين الملف في دليل عشوائي، مما يجعل من المستحيل تقريبًا الإشارة إليه.

حتى الآن، لم أجد طريقة لربط التنزيل والتنفيذ بدون ملف CAB.

ملاحظة: عند الحديث عن IE وحده، يمكن أن يكون التهريب عبر HTML (HTML smuggling) سيناريو محتملاً لاستغلال الثغرة.

هجوم بدون ملف CAB باستخدام ملف RAR هجين

تم الكشف عن هذه التقنية لأول مرة بواسطة Eduardo Braun على تويتر وشرحها بالتفصيل في هذه الورقة.

يرجى ملاحظة أن سلسلة الهجوم باستخدام هذه التقنية مختلفة قليلاً. يتطلب هذا الهجوم من المستخدم تنزيل ملف RAR مصمم خصيصًا، يتم الحصول عليه عن طريق ربط نص WSF صالح وملف RAR صالح. بمجرد فتحه، سيحتوي RAR على DOCX مع رابط إلى HTML، والذي بدوره سيحاول تحميل ملف RAR كنص WSF.

للتلخيص:

  1. يتم تنزيل ملف RAR مصمم خصيصًا (على الأرجح مجلد التنزيلات)
  2. يتم استخراج DOCX وفتحه
  3. يشير الرابط المخزّن في document.xml.rels إلى HTML ضار
  4. يتم تشغيل معاينة Internet Explorer لفتح رابط HTML
  5. يحتوي JScript داخل HTML على script/iframe يشير إلى ملف RAR، مع بادئة مخطط URI ".wsf:"
  6. نظرًا لأن RAR تم تصميمه ليكون في نفس الوقت ملف RAR صالحًا ونص WSF صالحًا، يتم تنفيذ النص

ما هي إثباتات المفهوم للاستغلال التي تنفذها الأداة

يمكن لأداة المولّد حاليًا إعادة إنتاج الهجمات التالية:

الهجومقوالب HTMLالهدفطريقة التسليمطريقة التنفيذهل يعمل
النسخة الأصلية من الهجومcab-orig-*WORDDOCXCAB + DLLنعم
هجوم j00sean المقتصر على IEcab-orig-j00sanIEHTMLCAB + DLLنعم
نسختي بدون DLLcab-uri-*WORDDOCXCAB + JS/VBSلا1
هجوم Eduardo B. "CABless" باستخدام RARcabless-rar-*WORDRARWSFنعم
هجوم j00sean المُعدّل + التهريب عبر HTMLcabless-smuggling-*IEHTMLJS/VBSنعم2

1لا يتم تحميل CAB بشكل صحيح في بعض البيئات

2يحتاج المستخدم إلى النقر على "حفظ" لتنزيل الملف في IE

محلل ملف CAB

يمكن استخدام أداة cab_parser.py لعرض رؤوس ملف الاستغلال، لكن لا تعتبرها محللًا كاملاً. إنها عارض سريع وقذر لرؤوس CAB قمت بتطويره لفهم ما يحدث.

التثبيت

تم تصميم المولّد للعمل على Windows، حيث يستخدم أداة makecab. قبل الاستخدام، تأكد من تثبيت التبعيات المطلوبة:

  • مع Virtualenv
root@kitploit:~
git clone https://github.com/klezVirus/CVE-2021-40444
cd CVE-2021-40444
pip install virtualenv
python -m virtualenv venv
venv\Scripts\activate.bat 
pip install -r requirements
  • بدون Virtualenv
root@kitploit:~
git clone https://github.com/klezVirus/CVE-2021-40444
cd CVE-2021-40444
pip install -r requirements

الاستخدام

استخدام المولّد سهل، وعلى الرغم من اختباره مع عدد من الحمولات المختلفة وإصدارات Windows، إلا أنه ليس مضمونًا. أواجه سلوكيات مختلفة عبر إصدارات Windows المختلفة. بمجرد أن أحصل على تفاصيل أكثر للمشاركة، سأنشرها هنا.

root@kitploit:~
usage: generator.py [-h] -P PAYLOAD -u URL [-o OUTPUT] [--host] [-c COPY_TO] [-nc] [-t]

[%] CVE-2021-40444 - MS Office Word RCE Exploit [%]

optional arguments:
  -h, --help            show this help message and exit
  -P PAYLOAD, --payload PAYLOAD
                        DLL payload to use for the exploit
  -u URL, --url URL     Server URL for malicious references (CAB->INF)
  -o OUTPUT, --output OUTPUT
                        Output files basename (no extension)
  --host                If set, will host the payload after creation
  -c COPY_TO, --copy-to COPY_TO
                        Copy payload to an alternate path
  -nc, --no-cab         Use the CAB-less version of the exploit
  -t, --test            Open IExplorer to test the final HTML file

مثال

  • إنشاء الاستغلال الأصلي واختباره محليًا
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.dll --host 

ملاحظة: يتم اختيار المنفذ من URL، ويتم إنشاء الاستغلال بناءً على امتداد ملف الحمولة

  • إنشاء استغلال CABless مع RAR واختباره محليًا عبر IE
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\job-jscript.wsf --no-cab --host -t 
  • إنشاء استغلال CABless (مقتصر على IE) مع التهريب عبر HTML واختباره محليًا عبر IE
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.js --no-cab --host -t 

الشكر والتقدير

  • RET2_pwn للمدونة الرائعة
  • j00sean للنصائح الجيدة
  • lockedbyte لأول إثبات مفهوم لائق
  • Max_Mal للإشارة إلى مخططات URI البديلة
  • wdormann للإشارة إلى قيود حجم ملف HTML
  • Edu_Braun_0day للنسخة الرائعة بدون CAB
تنزيل الأداة