瀏覽器安全與MSAA

       對於互聯網應用而言,安全是一個不可忽視的問題。特別是電子商務類應用,更是重中之重。由於目前國內電子商務發展越來越迅猛,很多***開始把注意力轉到它上面來。這些***往往有一個很重要的特點就是具有明顯的經濟利益性目的。
 
        根據分析和研究表明,這類***通常並沒有使用很高深的技術手段,主要原因就是瀏覽器自身的脆弱性。從OS角度來說,瀏覽器是一個很普通的應用程序,沒有任何保護措施。***可以很方便的通過某些方式來篡改瀏覽器數據。

        比較常見的一種就是利用MSAA技術來直接修改瀏覽器頁面,這種修改只發生在內存中,這就是說即使我們查看當前頁面源碼,也不會發現任何異常。而實際上頁面已經被修改了。值得關注的是,目前大部分安全防護軟件都不會監視這塊的應用。
MSAA是基於COM的技術,一般的調用模式首先是向瀏覽器窗口發送WM_HTML_GETOBJECT消息,然後通過MSAA的特有API即ObjectFromLresult()來取得對應頁面的IHTMLDocument2接口。爲了方便,一般順便也一起獲取IWebBrowser接口。剩下的工作就比較簡單(但是很繁雜),查詢MSDN文檔來獲取這兩個接口所支持的操作即可。

下面演示一個DEMO,這個DEMO會將當前瀏覽器窗口中的百度首頁的Logo換成Tomcat,如下圖:

完整代碼就不貼出了,關鍵性代碼如下(C代碼):
  CComBSTR domain(100);
  CComPtr<IHTMLElement> htmBody;
  CComPtr<IDispatch> bodyChildren;
  CComPtr<IHTMLElementCollection> imgColl;
  CComQIPtr<IHTMLWindow2> htmWin;
  CComVariant v;

  dom->get_domain(&domain);
  if(domain == L"www.baidu.com") {
    MessageBox(NULL, L"target detected~\n now have a look...", L"msg", 0);
    dom->get_body(&htmBody);
    //Execute js
    CComBSTR jsToExecute =    
      L"document.getElementById('lg').innerHTML=\
        '<img src=\"http://tomcat.apache.org/images/tomcat.gif\"\
        width=\"270\" height=\"129\" usemap=\"#mp\"/>';";
    dom->get_parentWindow(&htmWin);
    hr = htmWin->execScript(jsToExecute, L"javascript", &v);
  }
其中,dom是一個已經獲取的  IHTMLDocument2接口。
 
請勿將以上代碼用於非法用途。這段代碼的execScript方法調用後可能返回非S_OK的奇怪結果,原因是ATL相關類庫的問題。

通過這個DEMO可以看到,從某種程度上說互聯網應用的安全是一個比較嚴峻的問題。我們無法改變瀏覽器脆弱的事實,能改變的是用戶的安全防護意識。如何培養起這個意識,是每個互聯網從業者都應該思考的問題。

0

收藏

kevx

58篇文章,26W+人氣,0粉絲

Ctrl+Enter 發佈

發佈

取消

0

分享
kevx
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章