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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/mracumen/cve-2021-40444
توليد الحمولةالاستغلالاستغلال تطبيقات الويبتحليل البرمجيات الخبيثةتحليل الملفات الثنائيةتوليد شيفرة القشرة
GitHubmracumen/cve-2021-40444

CVE-2021-40444

مايكروسوفت-أوفيس-وورد-MSHTML-ثغرة-تنفيذ-التعليمات-البرمجية-عن-بعد

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

الأكثر شعبية

عرض الكل →

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

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

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

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

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

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

خلفية

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

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

  • مدونة بواسطة 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-char>.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، من الممكن التفاعل مع عدة أنواع ملفات عن طريق إساءة استخدام IE وURI المرتبط بامتداد الملف. على الرغم من أن هذه قد تكون طريقة جيدة لاستغلال IE، إلا أن لها قيودًا.

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

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

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

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

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

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

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

للتلخيص:

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

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

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

الهجومقوالب HTMLالهدفطريقة التسليمطريقة التنفيذيعمل
النسخة الأصلية من الهجومcab-orig-*WORDDOCXCAB + DLLنعم
هجوم j00sean الخاص بـ IE فقطcab-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 من الاستغلال
تنزيل الأداة