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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2021-40444 — CVE-2021-40444 - استغلال RCE كامل التسليح لـ Microsoft Office Word | Kitploit
أدوات/GitHubGitHub/klezvirus/cve-2021-40444
توليد الحمولةتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبتحليل البرمجيات الخبيثةالقيادة والسيطرةالتعلم والتعليم
GitHubklezvirus/cve-2021-40444

CVE-2021-40444

CVE-2021-40444 - استغلال RCE كامل التسليح لـ Microsoft Office Word

عرض المستودع
83216422منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

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

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

تحديث 31/05/2022 - CVE-2022-30190 - Follina

الآن أصبح المُولّد قادرًا على إنشاء المستند المطلوب لاستغلال هجوم "Follina" أيضًا (الاستفادة من ms-msdt).

خلفية

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

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

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

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

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

  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%
  • ثم، يتم فتح ملف INF بالتوجيه ".cpl:"، مما يتسبب في التحميل الجانبي لملف INF عبر rundll32 (إذا كان هذا ملف DLL)
  • المتطلبات المُغفلة

    هناك العديد من المتطلبات المُغفلة لهذا الاستغلال لكي يعمل، مما تسبب حتى في فشل PoCs جيدة، مثل هذا PoC من 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 على أنها أكبر من ملف الكابينة نفسه، فسيصل المستخرج إلى نهاية الملف قبل قراءة جميع البايتات المحددة في 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 الذي يتم تحميله عبر مخطط .cpl URI. لاستغلال ذلك، يحتاج المهاجم إلى إنشاء DLL مصمم خصيصًا. إذا كنت تريد اختباره، جرب سكربت evildll-gen الخاص بي.

    JScript، VBScript، Java، MSIexec، ...

    كما أشار Max Maluin، من الممكن التفاعل مع عدة أنواع ملفات بإساءة استخدام IE و مخطط URI المرتبط بامتداد الملف. بينما قد تكون هذه طريقة جيدة لاستغلال IE، إلا أن لها قيودًا.

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

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

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

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

    هجوم خالٍ من الكابينة باستخدام ملف RAR هجين

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

    يرجى ملاحظة أنه باستخدام هذه التقنية، تختلف سلسلة الهجوم قليلاً. يتطلب هذا الهجوم من المستخدم تنزيل ملف 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، مسبوقًا بمخطط ".wsf:" URI
    6. نظرًا لأن RAR تم تصميمه ليكون في الوقت نفسه ملف RAR صالح وسكربت WSF صالح، يتم تنفيذ السكربت

    ما هي PoCs للاستغلال التي ينفذها الأداة

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

    الهجومقوالب 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
    هجوم Follinacabless-msdt-*WORDDOCX/RTFMSDT + PSنعم3

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

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

    3لا يعمل حقًا على جميع إصدارات Windows/MS Word

    محلل ملفات 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 
    
    • إنشاء استغلال CABless باستخدام MS-MSDT (هجوم Follina)، في مستندات DOCX و RTF
    root@kitploit:~
    python generator.py -u http://127.0.0.1 -P test\calc.ps1 --no-cab --host --convert
    

    الاعتمادات

    • RET2_pwn للمدونة المذهلة
    • j00sean للتلميحات الجيدة
    • lockedbyte لأول PoC لائق
    • Max_Mal للتلميح حول مخططات URI البديلة
    • wdormann للتلميح حول قيود حجم ملف HTML
    • Edu_Braun_0day للنسخة الرائعة الخالية من CAB
    • Kevin Beaumont للبحث حول CVE-2022-30190 (Follina)
    تنزيل الأداة