成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

利用Firefox審計(jì)Web2.0應(yīng)用程序安全

原創(chuàng)
安全 應(yīng)用安全
本文為安全專業(yè)人員詳細(xì)介紹了利用Firefox及其插件來剖析Web2.0應(yīng)用程序的一些方法、工具和技巧。

【51CTO.com獨(dú)家特稿】我們知道,與傳統(tǒng)的Web應(yīng)用程序不同,Web 2.0應(yīng)用程序一般都是建立在Ajax和交互式的Web服務(wù)之上的,這種技術(shù)轉(zhuǎn)變給安全專業(yè)人員帶來了新的安全挑戰(zhàn)。

一、簡介

本文為安全專業(yè)人員詳細(xì)介紹了利用Firefox及其插件來剖析Web2.0應(yīng)用程序的一些方法、工具和技巧。通過閱讀本文,您可以了解:

◆Web 2.0 應(yīng)用程序體系結(jié)構(gòu)及其安全事項(xiàng)。 

◆黑客所面臨的挑戰(zhàn),如發(fā)現(xiàn)隱藏的調(diào)用、爬行問題以及Ajax邏輯的發(fā)現(xiàn)等。 

◆利用Firebug工具尋找XHR調(diào)用。 

◆利用Chickenfoot插件自動(dòng)模擬瀏覽器事件。 

◆利用Firebug調(diào)試器從安全角度對(duì)應(yīng)用程序進(jìn)行調(diào)試。 

◆安全漏洞的系統(tǒng)性檢測(cè)方法。

二、Web 2.0 應(yīng)用程序概述

近來流行的Web 2.0指的是采用了SOAP、XML-RPC和REST等XML驅(qū)動(dòng)的新一代的Web應(yīng)用程序。通過使用Ajax和富 Internet 應(yīng)用程序(Flash)組件,這些新型的Web應(yīng)用程序能夠?yàn)榻K端用戶提供更強(qiáng)大和靈活的用戶界面。

這種技術(shù)的更替對(duì)Web應(yīng)用程序的總體結(jié)構(gòu)以及客戶和服務(wù)器之間通信機(jī)制產(chǎn)生了很大的影響,同時(shí)也帶來了許多新的安全挑戰(zhàn)。比如,一些新型的蠕蟲就是利用客戶端AJAX框架來竊取機(jī)密信息的。

 

1  Web 2.0的體系結(jié)構(gòu)示意圖

如圖 1 所示,在左邊的瀏覽器進(jìn)程可以分成下列層次:

◆表示層——HTML/CSS提供了應(yīng)用程序在瀏覽器窗口中的總體外觀。 

◆邏輯處理層——運(yùn)行在瀏覽器中的JavaScript使得應(yīng)用程序可以執(zhí)行業(yè)務(wù)邏輯和通信邏輯。AJAX驅(qū)動(dòng)的組件位于最底層。 

◆傳輸層——XMLHttpRequest(XHR)。這個(gè)對(duì)象使得客戶和服務(wù)器之間可以通過HTTP(S)進(jìn)行異步通信并交換XML。

如圖 1所示,右邊的服務(wù)器端組件通常位于防火墻之后的企業(yè)基本設(shè)施之中,這些組件包括已部署的Web服務(wù)以及傳統(tǒng)的Web應(yīng)用程序資源。運(yùn)行在瀏覽器上的Ajax資源可以直接跟基于XML的Web 服務(wù)進(jìn)行通信,并且無需刷新頁面就能與其交換信息。所有這些通信,對(duì)最終用戶來說都是透明的,換言之最終用戶不會(huì)感覺到發(fā)生了任何重定向。實(shí)際上,“刷新”和“重定向”是第一代Web應(yīng)用程序邏輯不可分割的一部分。在Web 2.0框架中,通過Ajax極大地減少了對(duì)于刷新和重定向的使用。#p#

三、Web 2.0安全審計(jì)所面臨的挑戰(zhàn)

在這種異步的框架中,應(yīng)用程序沒有太多的“刷新”和“重定向”。其結(jié)果是,許多可以被攻擊者利用的服務(wù)器端資源都隱藏起來了。安全專業(yè)人員在了解Web2.0應(yīng)用程序時(shí),需要注意下列三個(gè)重要方面:  

1. 發(fā)現(xiàn)隱藏的調(diào)用——這里要強(qiáng)調(diào)的是瀏覽器中已加載的頁面生成的XHR驅(qū)動(dòng)的調(diào)用。它們使用JavaScript通過HTTP(S)對(duì)后端服務(wù)器進(jìn)行調(diào)用。  

2. 爬行問題——傳統(tǒng)的網(wǎng)絡(luò)爬蟲應(yīng)用程序會(huì)在兩個(gè)方面遇到問題,一是重復(fù)瀏覽器的動(dòng)作方面,二是在此過程中識(shí)別服務(wù)器端關(guān)鍵資源方面。如果資源是通過JavaScript利用一個(gè)XHR對(duì)象進(jìn)行訪問的,那么網(wǎng)絡(luò)爬蟲很可能根本就爬不到它。  

3. 邏輯發(fā)現(xiàn)——現(xiàn)在,Web應(yīng)用程序是通過JavaScript進(jìn)行加載的,所以邏輯和一個(gè)特定的事件是密不可分的。每個(gè)HTML頁面都可能從服務(wù)器裝載三個(gè)或者四個(gè)JavaScript資源。 這些文件中的每一個(gè)都有許多函數(shù),但是一個(gè)事件可能僅僅用到了其中的很小一部分來執(zhí)行其邏輯。

在審計(jì)Web應(yīng)用程序時(shí),我們需要探索并找到克服這些障礙的方法。對(duì)于本文來說,我們將使用Firefox作為我們的瀏覽器,并設(shè)法利用它的插件來應(yīng)對(duì)上述挑戰(zhàn)。

四、發(fā)現(xiàn)隱藏的調(diào)用

Web2.0應(yīng)用程序可以從服務(wù)器裝載單個(gè)頁面,也可在構(gòu)建最終頁面時(shí)又多次調(diào)用XHR對(duì)象。這些調(diào)用可以從服務(wù)器那里異步請(qǐng)求內(nèi)容或者JavaScript代碼。在這種情況下,我們面臨的挑戰(zhàn)就是確定所有的XHR調(diào)用和從服務(wù)器獲取的資源。這些信息對(duì)于發(fā)現(xiàn)所有可能的資源和相應(yīng)的安全漏洞很有幫助。下面通過一個(gè)簡單的示例進(jìn)行說明。

假設(shè)我們可以訪問一個(gè)簡單的新聞門戶站點(diǎn)來獲得當(dāng)天的商業(yè)新聞,該站點(diǎn)位于:

http://example.com/news.aspx

瀏覽器中的頁面截圖將類似于圖2所示:

 

2  一個(gè)簡單新聞門戶頁面

對(duì)于Web 2.0 應(yīng)用程序,它們是使用XHR對(duì)象對(duì)服務(wù)器進(jìn)行Ajax調(diào)用。我們可以利用一個(gè)工具來找出這些調(diào)用,這個(gè)工具就是著名的Firebug——它是Firefox瀏覽器的一個(gè)插件,可以用來發(fā)現(xiàn)XHR對(duì)象調(diào)用。

在利用此插件瀏覽一個(gè)頁面之前,要確保選中了攔截XHR調(diào)用的選項(xiàng),具體如下圖所示:

 

3  設(shè)置Firebug使其攔截XMLHttpRequest調(diào)用

啟用攔截XMLHttpRequest調(diào)用的選項(xiàng)后,我們就可以瀏覽前面的頁面了,這時(shí)就能發(fā)現(xiàn)該頁面發(fā)給服務(wù)器的所有XHR對(duì)象調(diào)用了,具體如圖4所示。

 

4  捕獲Ajax調(diào)用

上面我們可以清楚地看到瀏覽器利用XHR發(fā)送的多個(gè)請(qǐng)求。它從服務(wù)器加載了AJAX 框架Dojo,并調(diào)用了在服務(wù)器上的一個(gè)資源來取得新聞文章。

http://example.com/ getnews.aspx?date=09262006

如果我們仔細(xì)觀察此代碼的話,我們就會(huì)在JavaScript代碼中發(fā)現(xiàn)以下函數(shù):

function getNews()
{
 var http; http = new XMLHttpRequest(); http.open("GET", "
getnews.aspx?date=09262006", true); http.onreadystatechange = function() 
{  if (http.readyState == 4) {      
var response = http.responseText;       
document.getElementById('result').innerHTML = response;          
}   } http.send(null);

}

上面的代碼對(duì)后端Web服務(wù)器進(jìn)行了一個(gè)異步調(diào)用,并請(qǐng)求資源 getnews.aspx?Date=09262006。這個(gè)頁面的內(nèi)容被放置在生產(chǎn)的HTML頁面中標(biāo)識(shí)符為“result”的位置上。這明顯是利用XHR對(duì)象進(jìn)行的Ajax調(diào)用。

通過這種形式的分析,我們能找出有弱點(diǎn)的內(nèi)部URL、查詢和POST請(qǐng)求。比如,對(duì)于上面的例子,參數(shù)“date”就容易受到SQL注入攻擊。 #p#

五、爬行問題和瀏覽器模擬問題

當(dāng)進(jìn)行Web應(yīng)用程序?qū)徲?jì)的時(shí)候,經(jīng)常要用到一個(gè)重要偵察工具,即web爬蟲。web爬蟲抓取所有頁面并收集所有的HREF(鏈接)。但是如果這些HREF指向一個(gè)利用XHR對(duì)象進(jìn)行Ajax調(diào)用的JavaScript函數(shù)的話,情況會(huì)怎樣?很糟糕,Web爬蟲可能遺漏這些信息。

在許多情形下,模擬這個(gè)環(huán)境將變得非常困難。比如,下面是一組簡單的鏈接:

go1
go2
go3

單擊鏈接go1的時(shí)候,就會(huì)執(zhí)行g(shù)etMe()函數(shù),這個(gè)函數(shù)的代碼如下所示。 需要注意的是,這個(gè)函數(shù)也可以放在一個(gè)單獨(dú)的文件中。

function getMe()
var http; 
http = new XMLHttpRequest(); 
http.open("GET", "hi.html", true); 
http.onreadystatechange = function() 
{     
if (http.readyState == 4) {      
var response = http.responseText;       
document.getElementById('result').innerHTML = response;     
}     
} http.send(null);
}

上述代碼對(duì)在服務(wù)器上的資源hi.html進(jìn)行了一個(gè)簡單的Ajax調(diào)用。

那么,我們能夠自動(dòng)模擬這個(gè)單擊嗎?答案是肯定的。一個(gè)方法就是使用Firefox插件Chickenfoot,這個(gè)插件提供了基于JavaScript的應(yīng)用程序接口,從而為瀏覽器提供了一個(gè)可編程接口。

通過此Chickenfoot插件,您可以編寫簡單的JavaScript代碼來自動(dòng)發(fā)出瀏覽器動(dòng)作。使用該方法,就可以輕松完成爬行web頁面之類的簡單任務(wù)的自動(dòng)化。舉例來說,以下簡單腳本將利用onclick事件來“單擊”所有的錨。與傳統(tǒng)的web爬蟲相比,這個(gè)插件的優(yōu)點(diǎn)是所有這些onclick事件都是由后端基于XHR的Ajax調(diào)用發(fā)出的;而這些Ajax調(diào)用是會(huì)被網(wǎng)絡(luò)爬蟲所遺漏的,因?yàn)榫W(wǎng)絡(luò)爬蟲會(huì)試圖解析JavaScript并且收集可能的鏈接,卻無法替換實(shí)際的onclick事件。

l=find('link')
for(i=0;i
a = document.links[i];
test = a.onclick;
if(!(test== null)){ var e = document.createEvent('MouseEvents'); 
e.initMouseEvent('click',true,true,document.defaultView,1,0,0,0,    
0,false,false,false,false,0,null); a.dispatchEvent(e);  }
}

您可以將這個(gè)腳本裝載到Chickenfoot控制臺(tái)中,并運(yùn)行它,如圖5所示。

 

5  利用Chickenfoot模擬Ajax調(diào)用onClick

這樣,我們就可以創(chuàng)建JavaScript并從Firefox瀏覽器內(nèi)部來審計(jì)基于AJAX的應(yīng)用程序的安全性了。對(duì)于Chickenfoot插件,還有其它幾個(gè)API調(diào)用,其中一個(gè)比較有用的就是構(gòu)建爬蟲例程的fetch命令。#p#

六、邏輯發(fā)現(xiàn)與應(yīng)用程序解析

為了剖析客戶端基于AJAX的應(yīng)用程序,需要仔細(xì)遍歷每一事件以確定其處理邏輯。確定整個(gè)邏輯的一種方法就是逐行閱讀所有代碼。但是通常每個(gè)事件調(diào)用僅涉及文件中的少數(shù)幾個(gè)函數(shù)。因此,我們需要一種技術(shù)來步入調(diào)試運(yùn)行在瀏覽器中的有關(guān)代碼。

這時(shí),有些強(qiáng)大的JavaScript調(diào)試器可以達(dá)到這一目的,F(xiàn)irebug便是其中之一。另一個(gè)調(diào)試器是venkman。在下面的例子中,我們將使用Firebug。

這里給出一個(gè)處理登錄過程的簡單的示例:login.html頁面將從最終用戶那里接收用戶名和口令,如圖6所示。使用Firebug的檢查功能可以確定此表單的屬性。

 

6  借助 Firebug審查表單屬性

檢查表單屬性之后,就會(huì)看到一個(gè)對(duì)auth函數(shù)的調(diào)用。我們現(xiàn)在可以通過Firebug的調(diào)試器功能把內(nèi)部邏輯跟特定的事件隔離開來了,如圖7所示。

 

7  使用Firebug進(jìn)行調(diào)試

這個(gè)頁面的所有JavaScript依賴項(xiàng)都可以查看到。然后,調(diào)用ajaxlib.js和validation.js腳本。這兩個(gè)腳本可能具有若干函數(shù),我們可以通過登錄過程用到的一些函數(shù)來進(jìn)行推測(cè)。 我們可以使用斷點(diǎn)來步入調(diào)試整個(gè)應(yīng)用程序。設(shè)置一個(gè)斷點(diǎn)后,我們可以輸入證書信息,單擊“Submit”按鈕,并控制執(zhí)行過程。在我們的例子中,在函數(shù)auth內(nèi)設(shè)置了一個(gè)斷點(diǎn),如圖8所示。

 

8  利用斷點(diǎn)控制執(zhí)行過程

現(xiàn)在,我們就可以通過單擊“step in”按鈕來進(jìn)行步入調(diào)試了,如圖8所示。JavaScript的控制權(quán)轉(zhuǎn)移至另一個(gè)位于validation.js文件中的函數(shù)userval,如圖9所示。

 

9  移動(dòng)到 vali頁面dation.js腳本

上圖顯示了用于驗(yàn)證用戶名字段的正則表達(dá)式模式。一旦完成此驗(yàn)證任務(wù),控制權(quán)會(huì)傳遞給另一個(gè)函數(shù)callGetMethod,如圖10所示。

 

10  進(jìn)行Ajax調(diào)用

最后,運(yùn)行序列結(jié)束時(shí),我們能監(jiān)視到XHR對(duì)象對(duì)后端Web服務(wù)的調(diào)用,如圖11所示。

 
11  Firebug控制臺(tái)中的Web服務(wù)調(diào)用

這樣我們就確定出用于此后端Web服務(wù)的資源位置,如下所示:

http://example.com/2/auth/ws/login.asmx/getSecurityToken?username=amish&password=amish

很明顯,上面的資源是一些運(yùn)行在.NET framework之下的Web服務(wù)。經(jīng)過上面一番剖析之后,我們發(fā)現(xiàn)了一個(gè)可以輕松地繞過的用戶驗(yàn)證例程。對(duì)于此Web應(yīng)用程序來說,這是一個(gè)潛在的安全威脅。

經(jīng)過以上測(cè)試可以發(fā)現(xiàn),利用一個(gè)WSDL文件并對(duì)此服務(wù)進(jìn)行蠻力攻擊就可以訪問該web服務(wù)及其終端。此外,我們還可以利用wsChess之類的工具來發(fā)動(dòng)各種形式的注射式攻擊(SQL或者XPATH注射)。

對(duì)本例而言,此應(yīng)用程序容易受到XPath注射的攻擊,不過針對(duì)這種攻擊的討論超出了本文的范圍。以上可以看出,這種逐步的方法有助于識(shí)別一些客戶端攻擊,例如XSS、DOM操縱攻擊、客戶端安全措施旁路、執(zhí)行惡意Ajax代碼,等等。

七、結(jié)束語

面向服務(wù)的體系結(jié)構(gòu)(SOA)、Ajax、富 Internet 應(yīng)用程序(RIA)和Web 服務(wù)已經(jīng)成為了新一代Web應(yīng)用程序的關(guān)鍵部件。為了跟上這些技術(shù)的步伐并應(yīng)對(duì)下一代應(yīng)用程序安全性挑戰(zhàn),我們需要設(shè)計(jì)和開發(fā)不同的方法和工具。審計(jì)應(yīng)用程序的有效方法之一就是有效地利用瀏覽器。

在本文中,我們介紹了三種針對(duì)Web2.0應(yīng)用程序的審計(jì)方法,通過這些方法,我們可以尋找并隔離一些有關(guān)Ajax的安全漏洞。瀏覽器自動(dòng)腳本不僅可以加速我們的分析過程,而且還能幫助我們發(fā)現(xiàn)有弱點(diǎn)的服務(wù)器端資源。

下一代應(yīng)用程序廣泛使用了JavaScript。得心應(yīng)手的調(diào)試工具是我們的穿著明亮盔甲的騎士。當(dāng)您打算使用Firefox對(duì)Web 2.0進(jìn)行安全審計(jì)時(shí),本文中介紹的技術(shù)將是一個(gè)不錯(cuò)的起點(diǎn)。

【51CTO.COM 獨(dú)家特稿,轉(zhuǎn)載請(qǐng)注明出處及作者!】 

責(zé)任編輯:許鳳麗 來源: 51CTO.com
相關(guān)推薦

2010-03-09 13:27:23

Web 2.0應(yīng)用程序

2010-09-17 14:50:06

2009-02-27 17:00:25

2009-07-29 17:42:47

ibmdwWeb2.0

2009-08-27 11:53:45

ibmdw云計(jì)算

2013-11-19 15:35:01

2012-03-20 10:28:43

2011-02-13 14:36:35

2013-02-18 16:12:55

2013-09-03 15:45:50

2014-02-19 15:38:42

2023-08-01 08:00:00

SQLWeb應(yīng)用安全

2011-05-18 15:02:52

2009-03-24 10:14:15

2011-02-15 11:46:41

2012-06-07 09:15:14

ibmdw

2014-01-06 14:47:41

2018-04-11 10:59:53

2009-07-20 16:03:14

ASP.NET 2.0

2019-09-03 18:38:39

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲在线一区 | 亚洲第一福利视频 | 伊人二区 | 日韩av美女电影 | 久久婷婷国产麻豆91 | 色综合视频 | 国产1区2区在线观看 | 亚洲精品一区在线观看 | 成人在线一区二区三区 | 成人在线免费观看av | 久久精品av麻豆的观看方式 | 日韩av一区二区在线观看 | 一区二区三区精品视频 | 日韩久久久久久久 | 久国产视频 | 亚洲日韩中文字幕一区 | 日韩福利在线观看 | 日韩亚洲欧美综合 | 久久国产欧美日韩精品 | 九九国产| 人人人人爽 | 九九热在线免费观看 | 91国产精品在线 | 美女黄色在线观看 | 一区二区三区影院 | 亚洲欧美一区二区三区国产精品 | 亚洲欧美成人在线 | 青娱乐av| 日韩视频国产 | 亚洲国产高清高潮精品美女 | 国产色片 | 亚洲午夜精品一区二区三区他趣 | www亚洲精品 | 在线观看av中文字幕 | 99热在这里只有精品 | 精品久久久久久久久亚洲 | 欧美一级www片免费观看 | 国产福利久久 | 黄色免费av | 九九热最新地址 | 亚洲精品高清视频在线观看 |