劉鴿
摘 要:隨著互聯(lián)網(wǎng)的普及與互聯(lián)網(wǎng)技術(shù)的成熟,以電子商務(wù)、社交網(wǎng)絡(luò)為代表的Web應(yīng)用成為互聯(lián)網(wǎng)行業(yè)的核心應(yīng)用。這類應(yīng)用的分布式部署、多客戶并發(fā)訪問(wèn)、處理相對(duì)集中在服務(wù)器端的特點(diǎn)使其測(cè)試不同于一般應(yīng)用程序的測(cè)試。該文介紹了Web應(yīng)用程序壓力測(cè)試的相關(guān)概念、測(cè)試流程及同時(shí)對(duì)壓力測(cè)試工具對(duì)比分析,為測(cè)試人員選取適當(dāng)?shù)墓ぞ咛峁﹨⒖肌?/p>
關(guān)鍵詞:Web測(cè)試 安全測(cè)試 安全測(cè)試工具
中圖分類號(hào):TP31 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2015)04(b)-0022-02
隨著Web2.0、社交網(wǎng)絡(luò)、網(wǎng)絡(luò)支付等等一系列新型的互聯(lián)網(wǎng)產(chǎn)品的誕生,基于Web環(huán)境的應(yīng)用越來(lái)越廣泛,越來(lái)越多的重要數(shù)據(jù)都存儲(chǔ)在Web應(yīng)用上,Web業(yè)務(wù)的迅速發(fā)展也引起黑客們的強(qiáng)烈關(guān)注。黑客利用SQL注入、跨站式腳本攻擊、跨站點(diǎn)偽造請(qǐng)求等方式,得到Web服務(wù)器的控制權(quán)限,輕則篡改網(wǎng)頁(yè)內(nèi)容,重則竊取重要內(nèi)部數(shù)據(jù),更為嚴(yán)重的則是在網(wǎng)頁(yè)中植入惡意代碼,使得網(wǎng)站訪問(wèn)者受到侵害。因此對(duì)于Web應(yīng)用程序測(cè)試來(lái)說(shuō),使用Web安全測(cè)試工具,進(jìn)行安全測(cè)試可以最大限度的發(fā)現(xiàn)安全漏洞、消除安全隱患。
1 基本概念
1.1 安全性測(cè)試
所謂安全性測(cè)試是有關(guān)驗(yàn)證應(yīng)用程序的安全服務(wù)和識(shí)別潛在安全性缺陷的過(guò)程。安全性測(cè)試并不最終證明應(yīng)用程序是安全的,而是要提供證據(jù)表明,在面對(duì)敵意和惡意輸入的時(shí)候,應(yīng)用仍然能夠充分地滿足既定需求。
1.2 Web安全性測(cè)試
Web安全測(cè)試就是使用多種工具,來(lái)模擬和激發(fā)Web應(yīng)用活動(dòng)。完整的Web安全性測(cè)試可以從部署結(jié)構(gòu)、輸入驗(yàn)證、身份驗(yàn)證、配置管理、敏感數(shù)據(jù)保護(hù)、會(huì)話管理、參數(shù)操作、異常管理、審核和日志記錄等幾個(gè)方面入手。
2 安全隱患
2.1 SQL注入攻擊
所謂SQL注入攻擊指的是通過(guò)構(gòu)建特殊的輸入作為參數(shù)傳入Web應(yīng)用程序,而這些輸入大都是SQL語(yǔ)法里的一些組合,通過(guò)執(zhí)行SQL語(yǔ)句進(jìn)而執(zhí)行攻擊者所要的操作,其主要原因是程序沒(méi)有細(xì)致地過(guò)濾用戶輸入的數(shù)據(jù),致使非法數(shù)據(jù)侵入系統(tǒng)。
2.2 跨站式腳本攻擊
跨站腳本攻擊(Cross Site Scripting)是一種經(jīng)常出現(xiàn)在web應(yīng)用中的計(jì)算機(jī)安全漏洞,它允許惡意Web用戶將代碼植入到提供給其他用戶使用的頁(yè)面中。XSS攻擊分成兩類,一類是來(lái)自內(nèi)部的攻擊,主要指的是利用程序自身的漏洞,構(gòu)造跨站語(yǔ)句,另一類則是來(lái)自外部的攻擊,主要指的自己構(gòu)造XSS跨站漏洞網(wǎng)頁(yè)或者尋找非目標(biāo)機(jī)以外的有跨站漏洞的網(wǎng)頁(yè)。
2.3 跨站點(diǎn)請(qǐng)求偽造
跨站請(qǐng)求偽造(Cross-site request forgery),是一種依賴web瀏覽器的、對(duì)網(wǎng)站的惡意利用,通過(guò)強(qiáng)迫訪問(wèn)主體的采用瀏覽器的方式向已登陸的Web應(yīng)用系統(tǒng)發(fā)送一條偽造的HTTP請(qǐng)求,包括受害者會(huì)話信息、身份信息等內(nèi)容,從而導(dǎo)致相關(guān)的應(yīng)用程序認(rèn)定該請(qǐng)求是受害者本人所發(fā)出的合理請(qǐng)求。
2.4 無(wú)效的認(rèn)證及會(huì)話管理
對(duì)應(yīng)用程序的訪問(wèn)者的認(rèn)證及會(huì)話管理,在執(zhí)行過(guò)程中常常發(fā)生各種問(wèn)題。導(dǎo)致攻擊者通過(guò)數(shù)據(jù)包抓取、重放攻擊等手段,獲取到密碼、密鑰、會(huì)話授權(quán),從而盜取用戶身份。
2.5 不安全對(duì)象的直接引用
當(dāng)某種內(nèi)部私有對(duì)象的引用被公開時(shí),例如一個(gè)文檔、目錄服務(wù)結(jié)構(gòu)等關(guān)鍵信息時(shí),可能發(fā)生這種情況。由于缺乏對(duì)訪問(wèn)者的身份檢查、訪問(wèn)控制檢查或其它安全保護(hù)措施,攻擊者們能夠利用這些引用信息對(duì)那些未獲授權(quán)的數(shù)據(jù)進(jìn)行訪問(wèn)。
2.6 安全配置錯(cuò)誤
好的安全保障體系需要一套經(jīng)過(guò)精心定義及部署的設(shè)置方案,其對(duì)象包括應(yīng)用程序、系統(tǒng)框架、應(yīng)用程序服務(wù)、頁(yè)面服務(wù)、數(shù)據(jù)庫(kù)服務(wù)以及運(yùn)行平臺(tái)等。上述這些設(shè)定應(yīng)該被精確地定義、執(zhí)行和保存,然而事實(shí)上大多數(shù)情況下,用戶會(huì)直接使用安全保障系統(tǒng)的默認(rèn)設(shè)置,而其中有許多項(xiàng)目并未被正確配置,包括全部軟件的及時(shí)更新以及應(yīng)用程序所要調(diào)用的全部代碼庫(kù)。
2.7 敏感數(shù)據(jù)明文傳遞
許多Web應(yīng)用程序,在信息傳輸、存儲(chǔ)時(shí),并未采用加密或散列方法來(lái)保護(hù)這些敏感內(nèi)容,例如用戶口令、證件號(hào)碼、信用卡信息等。攻擊者們可以竊取或修改這些數(shù)據(jù),從而冒用受害者身份、進(jìn)行信用卡詐騙或其它犯罪行為。
2.8 URL偽造
許多Web應(yīng)用程序在跳轉(zhuǎn)到那些受控訪問(wèn)資源之前,都會(huì)檢查訪問(wèn)者的URL。應(yīng)用程序應(yīng)該在每次接收到頁(yè)面訪問(wèn)請(qǐng)求時(shí),都進(jìn)行一次這樣的檢查,否則攻擊者們將可以通過(guò)偽造URL的方式隨意訪問(wèn)這類隱藏頁(yè)面。
2.9 傳輸層數(shù)據(jù)完整性保護(hù)
應(yīng)用程序常常無(wú)法實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)通信內(nèi)容完整性的驗(yàn)證、加密、保護(hù)等功能。當(dāng)這種情況發(fā)生時(shí),應(yīng)用程序有時(shí)會(huì)選擇支持那些低強(qiáng)度的加密算法、使用過(guò)期的或者無(wú)效的驗(yàn)證信息,或者是無(wú)法正確應(yīng)用這些安全保障功能。
2.10 未經(jīng)驗(yàn)證的轉(zhuǎn)發(fā)與重定向
頁(yè)面應(yīng)用程序經(jīng)常將使用者的訪問(wèn)請(qǐng)求重新指向或轉(zhuǎn)發(fā)至其它網(wǎng)頁(yè)和網(wǎng)站上,并使用不受信任的數(shù)據(jù)來(lái)定位目標(biāo)頁(yè)面。如果沒(méi)有正確的驗(yàn)證機(jī)制在此過(guò)程中加以制約,攻擊者完全可以將受害者的訪問(wèn)請(qǐng)求重新指向到釣魚類或其它惡意軟件網(wǎng)站上,或者將訪問(wèn)轉(zhuǎn)發(fā)至未經(jīng)授權(quán)的頁(yè)面。
3 常用測(cè)試工具
3.1 SQL Inject Me
SQL Inject Me是檢測(cè)SQL注入攻擊的一種常用工具,它是火狐瀏覽器的附加組件,通過(guò)它可以檢測(cè)全部架構(gòu)或選中的參數(shù)所能受到的各種攻擊方式,或者是檢測(cè)該工具中預(yù)設(shè)的九種常見(jiàn)攻擊類型。當(dāng)在工具中選定攻擊方式后,再執(zhí)行SQL Inject Me,則該工具的運(yùn)行狀況,包括通過(guò)在選項(xiàng)中添加或刪除字符串的方式進(jìn)行攻擊。
3.2 ZAP
Zed攻擊代理(簡(jiǎn)稱ZAP),通常用來(lái)檢測(cè)跨站式腳本攻擊,它是一款“易于使用的,幫助用戶從網(wǎng)頁(yè)應(yīng)用程序中尋找漏洞的綜合類滲透測(cè)試工具”。ZAP包含了攔截代理、自動(dòng)處理、被動(dòng)處理、暴力破解以及端口掃描等功能,同時(shí)包含了蜘蛛搜索功能。
3.3 HackBar
HackBar是火狐瀏覽器插件,可以模擬若密鑰保護(hù)及散列保護(hù)。主要用來(lái)檢測(cè)不具備SSL/TLS的保護(hù)的訪問(wèn)會(huì)話。如果應(yīng)用系統(tǒng)對(duì)會(huì)話ID,采用MD5碼或是SHA1散列形式的密碼所保護(hù),可以采用HackBar方式進(jìn)行模擬,檢測(cè)是否通過(guò)中間人攻擊或是通過(guò)XSS漏洞獲取到會(huì)話ID。HackBar在對(duì)Base64,各種URL以及HEX的編碼及解碼方面也非常實(shí)用。
3.4 Burp
Burp是一款Web應(yīng)用程序安全漏洞分析工具,可以對(duì)路徑及目錄瀏覽過(guò)程進(jìn)行監(jiān)測(cè)。Burp同樣可以作為一款代理軟件來(lái)使用;跟ZAP類似,只要在FoxyProxy上進(jìn)行相應(yīng)設(shè)置即可。啟動(dòng)Burp,然后將你的瀏覽器指向要訪問(wèn)的目標(biāo)地址。通過(guò)WebGoat,我們能夠檢測(cè)到是否有規(guī)避路徑的資源被非授權(quán)訪問(wèn)。
3.5 Tamper Data
Tamper Data是檢測(cè)CSRF攻擊的一種常用工具,它是火狐瀏覽器的附加組件。在檢測(cè)GalleryApp時(shí),可使用Tamper Data來(lái)測(cè)定該GalleryApp是否在將所有參數(shù)提交給后臺(tái)腳本時(shí)會(huì)容易受到CSRF攻擊。
3.6 Watobo
Watobo可以使專業(yè)的安全人員能夠以高效且半自動(dòng)化的方式對(duì)應(yīng)用程序配置的安全性進(jìn)行評(píng)估。Watobo是以代理工具的角度運(yùn)行的,并且需要調(diào)用Ruby中的部分內(nèi)容,需要在測(cè)試環(huán)境中安裝Ruby解釋程序。將FoxyProxy進(jìn)行設(shè)置,以使其將網(wǎng)絡(luò)數(shù)據(jù)流通過(guò)8081端口導(dǎo)入Watobo,并完成最終分析。
3.7 Nikto/Wikto
Wikto是具備Windows圖形用戶界面的Nikto程序。通過(guò)Nikto或是Wikto能夠檢測(cè)Web應(yīng)用程序?qū)υL問(wèn)者的URL進(jìn)行查詢之后才向那些被保護(hù)的鏈接及按鈕提交請(qǐng)求當(dāng)然不錯(cuò),但如果應(yīng)用程序并沒(méi)有在每次接到類似的訪問(wèn)請(qǐng)求時(shí)都進(jìn)行監(jiān)控,那么攻擊者們將能夠獲取到這些應(yīng)用程序所調(diào)用的隱藏頁(yè)面。
3.8 Calomel
Calomel是對(duì)SSL連接及安全等級(jí)等信息進(jìn)行驗(yàn)證的工具,它是火狐瀏覽器的附加組件。Calomel能夠檢測(cè)SSL的加密強(qiáng)度,并通過(guò)顏色來(lái)進(jìn)行標(biāo)識(shí);并能夠?qū)SL證書的真?zhèn)?、狀態(tài)、內(nèi)容、自簽名等細(xì)節(jié)進(jìn)行查詢。
3.9 Watcher
Watcher是Chris Weber開發(fā)的 Fiddler 附加組件,只支持IE內(nèi)核瀏覽器測(cè)試,它在被動(dòng)分析方面優(yōu)勢(shì)明顯。使用Watcher同時(shí)還需要運(yùn)行Fiddler,Watcher將會(huì)以被動(dòng)狀態(tài)提供對(duì)網(wǎng)絡(luò)數(shù)據(jù)流的監(jiān)視及報(bào)警功能。
3.10 其他綜合測(cè)試工具
(1)N-Stalker。
N-Stalker Web漏洞掃描器是N-Stalker公司研發(fā)的一個(gè)頂級(jí)的安全評(píng)估工具。通過(guò)與知名的N-Stealth HTTP Security Scanner及其35 000個(gè)web攻擊簽名數(shù)據(jù)庫(kù)合并,以及正在申請(qǐng)專利的Web應(yīng)用程序安全評(píng)估技術(shù)組件,N-Stalker Web漏洞掃描器能為你的Web應(yīng)用程序徹底消除大量普遍的安全隱患,包括跨站點(diǎn)的腳本和SQL injection,緩沖溢出,篡改參數(shù)攻擊等等。
(2)Netsparker。
Netsparker是一款優(yōu)秀的SQL注入安全掃描器。Netsparker與其他綜合性的Web應(yīng)用安全掃描工具相比的一個(gè)特點(diǎn)是它能夠更好的檢測(cè)SQL Injection和Cross-site Scripting類型的安全漏洞。Netsparker能夠顯示漏洞判定的準(zhǔn)確度、支持Ajax/Javascript、采用啟發(fā)式的檢測(cè)模式、支持報(bào)錯(cuò)注入布爾注入、支持反射型、存儲(chǔ)型跨站腳本漏洞檢測(cè)。
(3)Websecurify。
Websecurify是一款開源的跨平臺(tái)網(wǎng)站安全檢查工具,是一個(gè)強(qiáng)大的Web應(yīng)用程序安全測(cè)試環(huán)境,由底層向上提供了自動(dòng)和手動(dòng)的脆弱性測(cè)試技術(shù)的最佳組合,能夠精確的檢測(cè)Web應(yīng)用程序安全問(wèn)題。
(4)Skipfish。
Skipfish是由google出品的一款自動(dòng)化的網(wǎng)絡(luò)安全掃描工具,該工具可以安裝在linux、freebsd、MacOS X系統(tǒng)和windows(cygwin)。Skipfish與Nikto和Nessus等其他開源掃描工具有相似的功能,但Skipfish還具備一些獨(dú)特的優(yōu)點(diǎn)。Skipfish通過(guò)HTTP協(xié)議處理且占用較低的CPU資源,因此它的運(yùn)行速度比較快。Skipfish每秒鐘可以輕松處理2000個(gè)請(qǐng)求。
4 結(jié)語(yǔ)
Web應(yīng)用所執(zhí)行的測(cè)試中,安全測(cè)試可能是最重要的,但它卻常常是最容易被忽略的。一般來(lái)說(shuō),一個(gè)Web應(yīng)用包括Web服務(wù)器運(yùn)行的操作系統(tǒng)、Web服務(wù)器、Web應(yīng)用邏輯、數(shù)據(jù)庫(kù)幾個(gè)部分,其中任何一個(gè)部分出現(xiàn)安全漏洞,都會(huì)導(dǎo)致整個(gè)系統(tǒng)的安全性問(wèn)題。
對(duì)操作系統(tǒng)來(lái)說(shuō):最關(guān)鍵的操作系統(tǒng)的漏洞,例如Unix上的緩沖區(qū)溢出漏洞、Windows上的RPC漏洞、緩沖區(qū)溢出漏洞、安全機(jī)制漏洞等等;對(duì)Web服務(wù)器來(lái)說(shuō):WEB服務(wù)器從早期僅提供對(duì)靜態(tài)HTML和圖片進(jìn)行訪問(wèn)發(fā)展到現(xiàn)在對(duì)動(dòng)態(tài)請(qǐng)求的支持,早已是非常龐大的系統(tǒng),即使發(fā)展多年的Apache也難逃經(jīng)常被發(fā)現(xiàn)安全漏洞的缺陷,更不要說(shuō)千瘡百孔的IIS了;對(duì)應(yīng)用邏輯來(lái)說(shuō):根據(jù)其實(shí)現(xiàn)的語(yǔ)言不同、機(jī)制不同、由于編碼、框架本身的漏洞或是業(yè)務(wù)設(shè)計(jì)時(shí)的不完善,都可能導(dǎo)致安全上的問(wèn)題;對(duì)數(shù)據(jù)庫(kù)來(lái)說(shuō):數(shù)據(jù)庫(kù)注入攻擊一直是數(shù)據(jù)庫(kù)廠商和網(wǎng)站開發(fā)者的噩夢(mèng)。
除此之外,安全問(wèn)題還存在于管理等各個(gè)方面,不完善的管理制度、缺乏安全意識(shí)的員工都會(huì)是內(nèi)部的突破口,同樣,一些開發(fā)工具生成的備份文件和注釋也會(huì)成為Cracker發(fā)送攻擊的參考資料。
對(duì)Web的安全性測(cè)試是一個(gè)很大的題目,首先取決于要達(dá)到怎樣的安全程度。不要期望網(wǎng)站可以達(dá)到100%的安全,即使是美國(guó)國(guó)防部,也不能保證自己的網(wǎng)站100%安全。
對(duì)于如何保證Web應(yīng)用程序的安全,首先要了解必要的安全知識(shí),從安全風(fēng)險(xiǎn)分析入手,選擇相應(yīng)的安全檢測(cè)工具,查找安全隱患,彌補(bǔ)安全漏洞,最終達(dá)到進(jìn)一步加強(qiáng)系統(tǒng)安全的目標(biāo)。
參考文獻(xiàn)
[1] 霍普,等著.傅鑫,等譯.Web安全測(cè)試[M].北京:清華大學(xué)出版社,2010.
[2] PC Jorgensen著.韓柯,等譯.軟件測(cè)試[M].北京:機(jī)械工業(yè)出版社,2002.
[3] Ron Patton著.周予濱,姚靜,等譯.軟件測(cè)試[M].北京:機(jī)械工業(yè)出版社,2002.
[4] 秦明,薛勝軍.威脅建模技術(shù)在Web應(yīng)用程序中的應(yīng)用[J].電腦知識(shí)與技術(shù):學(xué)術(shù)交流,2007(1).
[5] 吳海燕,苗春雨,劉啟新,等.Web應(yīng)用系統(tǒng)安全評(píng)測(cè)研究[J].計(jì)算機(jī)安全,2008(4).
[6] 霍漢強(qiáng).Web應(yīng)用系統(tǒng)安全問(wèn)題的探究[J].大眾科技,2008(3).
[7] 白雪.試論Web應(yīng)用系統(tǒng)的安全性測(cè)試技術(shù)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2013(9).