自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Web應(yīng)用安全之漏洞測試技術(shù)

原創(chuàng)
安全 應(yīng)用安全
隨著人們對數(shù)據(jù)驅(qū)動的網(wǎng)站的依賴性的提高,針對WEB站點的攻擊的數(shù)量也呈現(xiàn)出上升的趨勢。作為開發(fā)人員,只有先弄明白了自己的站點是如何被攻擊的,才能設(shè)法保護(hù)它們。本文將揭示一些比較常見的攻擊,同時還介紹偵察這些攻擊的安全工具。

【51CTO.com獨家翻譯】隨著人們對數(shù)據(jù)驅(qū)動的網(wǎng)站的依賴性的提高,針對WEb站點的攻擊的數(shù)量也呈現(xiàn)出上升的趨勢。作為開發(fā)人員,只有先弄明白了自己的站點是如何被攻擊的,才能設(shè)法保護(hù)它們。本文將揭示一些比較常見的攻擊,同時還介紹偵察這些攻擊的安全工具。

如今,Web在社交功能方面日益增長,但是它的安全性卻日益堪憂。事實上,據(jù)WASC在2009年初的估算,所有網(wǎng)站中有87%都存在安全隱患。雖然一些公司有能力外聘安全專業(yè)人員進(jìn)行滲透測試,但并非所有公司都有支付得起20,000到40,000美元的外包安全審計費用。相反,公司可以自己設(shè)法讓開發(fā)人員獲悉這些安全威脅,充分引起他們的注意,從而在開發(fā)代碼時不會留下這樣的安全隱患。

常用縮寫詞

HTML:超文本標(biāo)記語言

SQL:結(jié)構(gòu)化查詢語言

URL:統(tǒng)一資源定位器

要想編寫出安全的代碼,您必須首先獲悉您的程序所面臨的威脅有哪些。本文考察了一些非常流行的漏洞,諸如跨站點腳本攻擊和SQL注射,同時還介紹了可以一些安全工具。這些工具不僅可以幫我們保護(hù)自己的網(wǎng)站,還能幫我們保護(hù)數(shù)據(jù)和網(wǎng)絡(luò)。本文無法替代安全專業(yè)人員,也不會教授艱深的安全技巧。相反地,我們主要介紹如何發(fā)現(xiàn)代碼中潛在的漏洞,以及如何修復(fù)它們。

常見安全漏洞

開始之前,我們需要對要查找的漏洞本身有所了解。我們先來看一下最流行的一個漏洞,即跨站點腳本攻擊(XSS)。XSS是網(wǎng)站被注入惡意腳本而導(dǎo)致的,舉例來說,Mallory編寫了一段腳本,它能夠?qū)⒂脩艮D(zhuǎn)至一個受信任的網(wǎng)站上,而該站點則是由Alice創(chuàng)建的。 Mallory把這個腳本插入一個流行的論壇上后,Bob在論壇中看到并點擊了這個鏈接,并在Alice的站點上創(chuàng)建了一個帳號。 這時,這個腳本利用Alice的網(wǎng)站上的一個XSS漏洞將Bob的cookie發(fā)送給了Mallory,這樣一來,Mallory就可以冒充Bob并竊取其信息了。

SQL注入是第二大流行的安全漏洞,這主要是拜網(wǎng)站對數(shù)據(jù)庫的依賴性日益增強(qiáng)所賜。SQL注入實際上非常簡單:發(fā)現(xiàn)一個連接數(shù)據(jù)庫的網(wǎng)站后,心懷叵測的黑客可以執(zhí)行一個SQL查詢來實現(xiàn)開發(fā)人員始料未及的功能:繞過身份驗證或者操縱數(shù)據(jù)。這種類型的攻擊,正是Albert Gonzalez竊取13000萬信用卡號的作案手法。在發(fā)動SQL注入攻擊過程中,Mallory發(fā)現(xiàn)了Alice用于銷售電子產(chǎn)品的網(wǎng)站。這次,Mallory并沒有像平常那樣輸入用戶名和密碼,而是在用戶名字段中輸入了‘) OR 1=1- 。雖然她它的輸入中包含了連字符(-),但是其它部分就無所謂了,因為1=1總是成立,所以她將成功登錄?,F(xiàn)在,她可以操縱數(shù)據(jù)庫以竊取Bob的客戶信息。這個例子以最簡單的方式對SQL注入進(jìn)行了演示,您可以從中看到利用這種攻擊對于攻擊者而言是多么簡單。

如果沒有專業(yè)的安全人員團(tuán)隊,普通的Web開發(fā)者看起來很難跟這些漏洞相抗衡。幸運的是,事實并非如此。許多工具可以幫助我們查找網(wǎng)站中潛在的漏洞,如果據(jù)此采取必要的措施的話,我們就能夠有效的防御這些漏洞導(dǎo)致的攻擊。為了幫我們識別潛在危險,像WebScarab 和Paros 之類的工具能夠捕捉瀏覽器和服務(wù)器之間的會話,并能爬行網(wǎng)站。掌握這些信息后,您就可以檢測這些漏洞并采取防御措施了。

WebScarab

OWASP開發(fā)的WebScarab是分析瀏覽器請求和服務(wù)器應(yīng)答的首選代理。WebScarab除了提供數(shù)據(jù)包分析功能外,還可以對站點進(jìn)行Fuzz測試,以尋找上述的漏洞。 若要使用WebScarab,首先要配置web瀏覽器的代理設(shè)置。對于Mozilla Firefox瀏覽器來說,需要執(zhí)行下列步驟:

1. 單擊Tools > Options > Advanced > Network。

2. 單擊Settings。

這時Connection Settings窗口會打開。

3. 選擇Manual proxy configuration選項。

4. 在HTTP Proxy和SSL Proxy這兩個字段中,輸入localhost,并將端口設(shè)置為8008。

5. 確保No proxy for文本框為空,并單擊 OK按鈕。

圖 1展示了Firefox的連接設(shè)置。

 圖 1. Firefox 的連接設(shè)置

#p#

如上圖所示,選中Manual proxy configuration;HTTP Proxy為localhost,端口是8008。 SSL Proxy為localhost,端口是8008;選中SOCKS v5 。
對于Windows® Internet Explorer®來說,需要采取下列步驟:

1. 單擊Tools > Internet Options > Connections。

2. 單擊LAN Settings,Proxy Settings窗口將被打開。

3. 在Proxy Servers 之下,選擇Use a proxy server for your LAN復(fù)選框,然后單擊Advanced按鈕。

4. 對于HTTP和Secure字段,輸入localhost,并使用8008端口。

5. 應(yīng)確保Exceptions字段為空,然后單擊OK按鈕。

圖 2展示了Internet Explorer的代理設(shè)置。

 圖 2. 設(shè)置代理

在上面的代理設(shè)置截圖中,HTTP被設(shè)置為localhost,使用8008端口。Secure被設(shè)置為localhost,端口為8008。
現(xiàn)在,我們已經(jīng)為掃描網(wǎng)站做好了準(zhǔn)備。

利用WebScarab掃描您的站點

下面的例子使用的站點為Hacme Casino,它是由Foundstone創(chuàng)建的,故意帶有某些漏洞以便用于培訓(xùn)。該站點是使用Apache Tomcat封裝的,所以如果您喜歡的話,也可以在本地運行。

接下來,打開WebScarab。WebScarab啟動后,我們只會看到兩個選項卡:Summary和Intercept。因為您想使用WebScarab進(jìn)行fuzzing測試,所以要通過單擊Tools > Use full-featured interface > OK來切換視圖。這時,WebScarab會提示我們重新啟動該軟件。重啟后,將看到如圖3所示的界面。(WebScarab提供了一個快捷鍵列表--令人遺憾的是,只有兩個快捷鍵。)

 圖3. WebScarab界面

WebScarab界面的截屏,這里顯示了多個選項卡:Spider、Extensions 、XSS /CRLF 、SessionID Analysis 、Scripted 、Fragments 、Fuzzer 、Compare 、Search 、Summary 、Messages 、Proxy 、Manual Request 和Web Services。其中Summary選項卡被高亮顯示。

若要啟動新的會話,請單擊File > New。這時會出現(xiàn)一個方框,要求輸入會話保存地點。 選擇或者創(chuàng)建存儲目錄,然后單擊OK按鈕。當(dāng)您在Hacme Casino上使用WebScarab時,需要在打開瀏覽器之前就啟動服務(wù)器。 然后,在瀏覽器的地址欄中輸入http://localhost:3000。

#p#

一旦打開瀏覽器,您就會看到WebScarab中出現(xiàn)某些活動,因為WebScarab將捕獲瀏覽器和服務(wù)器之間的所有請求和響應(yīng)。因為您想使用fuzzing功能來測試安全漏洞,所以要首先察看可能存在漏洞的地點。我們將登錄作為查找潛在漏洞的第一站。若要測試登錄過程,您應(yīng)當(dāng)記錄瀏覽器和服務(wù)器之間的交互信息。這里不需要成功進(jìn)行登錄,所以您可以隨意輸入用戶名和口令,對本例而言,我們輸入的用戶名和口令都為casino,然后單擊login按鈕。

當(dāng)然,登錄將失敗,但是我們對此并不關(guān)心。相反,我們要立馬返回到WebScarab。在Path欄中,右鍵單擊account\login,然后單擊Use as fuzz template,如圖4所示.

 圖 4. Fuzzing測試模板

Fuzzing測試模板的截屏顯示了一個類似電子表格的視圖,其中含有各種各樣的web鏈接數(shù)據(jù)。

修改all_attack.txt文件
想該文件加入兩行內(nèi)容,即'or 'x'='x和 ') or 1=1-- ,這是兩行基本的SQL注入字符串,并且將在本例中用到。

執(zhí)行以下步驟:

1. 單擊WebScarab界面頂部的Fuzzer選項卡。

2. 單擊Source。

3. 導(dǎo)航至字典所在位置。(我使用的是all_attack.txt)

4. 提供來源描述,并單擊Add按鈕。

5. 單擊 Close返回Fuzzer窗口。
現(xiàn)在,轉(zhuǎn)到user_login參數(shù)并單擊Fuzz Source欄下面的相應(yīng)區(qū)域。因為您僅僅裝入了一個(所有的攻擊)來源,所以在下拉框菜單選中它即可。對user_password參數(shù)進(jìn)行同樣的操作,如圖5所示。

 圖 5. 選擇攻擊文件

攻擊文件的截屏顯示了一個包含各種可編輯參數(shù)的表格。

現(xiàn)在,您已經(jīng)定義了攻擊源,所以單擊Start就可以開始測試了。該fuzzer將從文件中取出參數(shù),并將其插入用戶名和口令輸入字段。每當(dāng)該工具完成一次嘗試,屏幕就會有相應(yīng)的輸出內(nèi)容。通常您將需要檢查結(jié)果中的每個ID,以便分析每次嘗試所發(fā)生的情況。然而,因為這里添加的字符串肯定奏效,所以您可以看到fuzzer成功時的情形。

雙擊本例中的第一個字符串,如圖6所示。

 圖 6. 查找安全漏洞

#p#

截屏顯示了一個頁面的解析信息。URL Encoded下面用橢圓括住的數(shù)據(jù)是用于user_login和user_password的變量。 Parsed下面用圓圈包圍的數(shù)據(jù)是用于地址和站點cookie的。

需要注意的是,上面圈起來的是用于user_login和user_password的變量值,即‘) OR 1=1--。接下來需要注意的是,地址已經(jīng)從http://localhost:3000(主頁)變?yōu)?A href="http://localhost:3000/lobby/games">http://localhost:3000/lobby/games,看上去用戶已經(jīng)成功登錄了。這又意味著什么呢? 它意味著你的站點是易受攻擊的。因為‘) OR 1=1--是一個SQL字符串,所以站點容易受到SQL注入的攻擊。使用Next按鈕滾動結(jié)果,并查找那個值。注意,這里的地址保持為http://localhost:3000。由此結(jié)果可知,插入這種類型的字符串不會導(dǎo)致成功的登錄嘗試,所以站點不易受這種類型的攻擊的影響。

Paros Proxy

進(jìn)行安全性測試的時候,另一個常用的工具是Paros Proxy。 就像WebScarab一樣,Paros也能捕獲瀏覽器和服務(wù)器之間的會話來用于分析。您還可以使用它來檢查站點中的安全漏洞。為了運行Paros,您必須更改瀏覽器的代理設(shè)置所使用的端口號。對于WebScarab,您使用的端口號是8008;但是運行Paros之前,需要將這個端口號改為8080,否則Paros就無法正常工作。對于本文來說,我們使用WebGoat——另一款來自O(shè)WASP的安全工具。就像Hacme Casino一樣,WebGoat使用Tomcat服務(wù)器作為本地主機(jī)。對于本文來說,使用Paros掃描WebGoat所找到的漏洞比Hacme Casino發(fā)現(xiàn)的安全漏洞要更多一些。

使用多個掃描器

凡是對自己站點進(jìn)行過測試的人可能都知道,同一個站點,使用不同的掃描器會得到不同的掃描結(jié)果。這就是為什么專業(yè)滲透測試人員工作中會使用多種工具的原因。
更改端口之后,打開Paros,并執(zhí)行下列步驟:

1. 在WebGoat文件夾中,雙擊WebGoat.ba以啟動Tomcat。

2. 打開瀏覽器,然后在地址欄輸入http://localhost/WebGoat/attack

3. 在用戶名和口令中輸入guest。

4. 單擊Start WebGoat。

現(xiàn)在,返回到Paros,并開始掃描WebGoat站點。當(dāng)然,您也可以通過在地址欄輸入相應(yīng)的地址來測試您自己的網(wǎng)站。

在Paros中,展開Sites文件夾,您就會在文件樹中看到http://localhost。繼續(xù)展開這個文件夾以調(diào)出WebGoat。高亮顯示W(wǎng)ebGoat,然后單擊Analyse Scan。這樣就會馬上開始掃描這個站點。對于大型站點來說,所需時間會較長,但是掃描這個站點僅需幾秒就夠了。一旦啟動掃描,底部窗格會自動變?yōu)锳lerts選項卡。如圖7所示。當(dāng)掃描完成時,在通知您報告所在位置的彈出窗口中單擊OK按鈕。

 圖 7. 查看警告信息

#p#

警告屏幕展示了一個典型的IDE風(fēng)格的分割式窗口,在左上部的窗格中帶有一個站點樹,同時提供在右上方窗格中所選條目的詳細(xì)信息,另外,在底部窗格中還提供了一個警告樹。

為了更詳細(xì)地展示警告細(xì)節(jié),您可以展開它。您還可以查看報告提供的更多信息。然而,您應(yīng)當(dāng)首先保存掃描結(jié)果,方法是單擊File > Save As,選擇文件名和存放位置,最后單擊Save即可。

要想查看一個報告,單擊Report > Last Scan Report,在彈出窗口中單擊OK按鈕,這時一個新的瀏覽器選項卡會打開掃描結(jié)果,如圖8所示。這份報告為檢測到的每個安全漏洞都提供了相應(yīng)的信息,包括指向處理該特定攻擊的OWASP頁面鏈接。

 圖 8. Paros的報告

這個Paros報告的截屏顯示了一個警告總表,并為每個警告提供了詳細(xì)信息。

測試中的誤報

雖然使用掃描器是查找網(wǎng)站潛在的安全漏洞的一個好方法,但是最優(yōu)秀的安全公司總是通過手工方式對這些潛在的安全漏洞進(jìn)行排查,之所以這樣做是為了防止誤報。這時,需要對報告有潛在的漏洞利用的網(wǎng)站的各處進(jìn)行測試,即向站點本身插入SQL代碼或者腳本來觀察它的反應(yīng),然后使用各種攻擊程序?qū)φ军c進(jìn)行測試。大型公司經(jīng)常雇用精通此類測試的專業(yè)程序設(shè)計員,但是作為開發(fā)人員,您可以自己進(jìn)行一些這樣的測試。這不僅能夠提高當(dāng)前站點的安全性,而且對將來開發(fā)站點時也很有幫助。

與SQL注入有關(guān)的誤報

我們來看看使用Hacme Casino站點時,WebScarab發(fā)現(xiàn)的安全漏洞:在登錄時出現(xiàn)SQL注入漏洞。運行Hacme Casino,在站點的登錄輸入?yún)^(qū)輸入WebScarab得手的SQL代碼,即‘) OR 1=1--。當(dāng)您單擊Login時,帳戶Andy_Aces被打開,因為1=1總為真,這是SQL注入最常見的手法。就Andy而論,他的運氣真是不怎么樣,因為它是這個數(shù)據(jù)庫中的第一個帳戶。
它是如何得手的? 在后端,這個數(shù)據(jù)庫運行了一個如下所示的查詢:

SELECT * FROM users WHERE (username=username AND password=password)

通過登錄框注入的代碼轉(zhuǎn)變?yōu)橛行У牟樵儯?/P>

SELECT * FROM users WHERE (username=’’) OR 1=1—AND password=’’)

這個查詢返回的結(jié)果是允許站點的第一個用戶成功的登錄,而不幸的是這個用戶恰恰就是Andy。

當(dāng)然,這個例子僅僅是針對SQL注入的,即使如此,如果某些人在攻擊網(wǎng)站方面非常老道,那么他或她實際上就能夠利用這個安全漏洞來創(chuàng)建用戶、修改口令甚至從網(wǎng)站上提取敏感數(shù)據(jù)。保護(hù)站點免受這些攻擊時,還需采取以下步驟:

使用參數(shù)化查詢或者存儲過程而不是使用字符串拼接來訪問數(shù)據(jù)庫。參數(shù)化查詢要求您定義所有的SQL代碼,然后傳入每個參數(shù)來進(jìn)行查詢。這使得數(shù)據(jù)庫能夠區(qū)分代碼和數(shù)據(jù),所以用戶提供的輸入內(nèi)容的類型就不會引起問題。這一點上存儲過程類似于參數(shù)化查詢,它也要求您首先定義SQL代碼,然后傳入?yún)?shù)。區(qū)別是,用于存儲過程的SQL代碼是在數(shù)據(jù)庫本身內(nèi)定義和存放的,然后供應(yīng)用程序調(diào)用。

通過白名單方式對用戶輸入進(jìn)行消毒處理。如果要求使用名稱,那么只允許使用字母a-z和A-Z。對于電話號碼,只允許使用字符0-9。您可以利用你的數(shù)據(jù)庫支持的相應(yīng)驗證技術(shù)來達(dá)此目的。

通過數(shù)據(jù)庫設(shè)置字符轉(zhuǎn)義方案,對用戶提供的輸入進(jìn)行轉(zhuǎn)義處理。對特殊字符進(jìn)行轉(zhuǎn)義就是告訴數(shù)據(jù)庫,查詢中的這些字符是數(shù)據(jù),而非代碼。如果對用戶提供的所有的輸入都進(jìn)行正確的轉(zhuǎn)義處理的話,就不會受到帶有SQL代碼的用戶輸入的威脅了。

不要給攻擊者任何幫助。應(yīng)確保錯誤信息不會提供可以用來攻擊站點的任何有用信息。

與XSS有關(guān)的誤報

為了演示XSS攻擊,我們重新回到WebGoat。單擊Cross Site Scripting > LAB: Cross Site Scripting > Stage 1: Stored XSS啟動我們的站點。登陸到演示站點Goat Hills Financial,這里使用的用戶名為Larry Stooge,口令為Larry?,F(xiàn)在,攻擊者將需要查找可以輸入惡意腳本的地方。Search Staff功能具有一個文本框,人們可以在此輸入一個名稱,單擊Search后來顯示有關(guān)結(jié)果,如圖9所示.

 圖9. XSS入口點

Goat Hills Financial Human Resources處的XSS入口點的截屏,它為我們顯示了一個文本字段,我們可以在此輸入用戶名稱并通過FindProfile按鈕來查找用戶。

在Name框中,輸入alert("You got me with XSS");。 這個腳本只是一個警告框,如圖10所示,但是您可以設(shè)想如果這個腳本將用戶重定向到一個偽造的、要求訪問者輸入其社會保險號、家庭地址、銀行信息等的虛假人力資源站點時后果會有多么嚴(yán)重。實際上,只要修改與OK按鈕有關(guān)的動作就能做到這一點。對于真正有創(chuàng)造性的惡意黑客來說,只要用戶信任他們,那么就基本上沒有什么做不到的。

 圖 10. 一次成功的xss攻擊

上面是一個帶有警示信息的警告框。

為了防止xss攻擊,需要對所有的用戶輸入進(jìn)行嚴(yán)格的過濾處理。如果輸入隨后被用作操作系統(tǒng)命令、腳本和數(shù)據(jù)庫查詢的參數(shù),那么更要嚴(yán)格檢查。為了對用戶輸入進(jìn)行清洗,可以在將其插入HTML元素和HTML普通屬性之前,對不可信的數(shù)據(jù)進(jìn)行轉(zhuǎn)義處理。OWASP建議對所有ASCII值小于256的字符都進(jìn)行換碼。JavaScript 數(shù)據(jù)值、HTML風(fēng)格的屬性值和HTML值屬性也可進(jìn)行轉(zhuǎn)義。當(dāng)然,對輸入數(shù)據(jù)進(jìn)行轉(zhuǎn)義之前,請確保已經(jīng)對網(wǎng)站的所有輸入進(jìn)行了驗證。如果所需期望的是特定的輸入值、數(shù)字、字母、電子郵件地址等等,那么就只允許這種類型的數(shù)據(jù)并且拒絕任何其他類型的數(shù)據(jù)。

結(jié)束語

本文中,我們考察了許多針對網(wǎng)站的常見攻擊,重要的是,通過閱讀本文您會對這些攻擊的工作原理有一個深入的理解。如果知道了攻擊者正尋找哪些安全漏洞,以及這些漏洞的預(yù)防措施,那么您就能防止攻擊者攻陷網(wǎng)站。通過掌握在本文中介紹的攻擊與防御原理,能夠為將來構(gòu)建安全Web站點和應(yīng)用打下一個良好的基礎(chǔ)。

【編輯推薦】

  1. 簡單三步幫助企業(yè)解決Web業(yè)務(wù)安全防護(hù)問題
  2. Web準(zhǔn)入認(rèn)證—破除802.1x部署之爭
  3. Web應(yīng)用安全技巧
責(zé)任編輯:趙寧寧 來源: 51CTO.com
相關(guān)推薦

2010-01-11 21:19:57

2010-08-30 13:07:31

2011-03-11 16:43:51

2018-12-03 10:13:23

應(yīng)用安全Web防御

2013-01-28 16:44:50

2022-12-08 10:33:48

2009-07-29 17:19:14

2010-09-14 10:19:39

2009-02-12 09:55:28

2010-08-30 09:50:34

2021-05-13 20:38:30

2010-05-06 10:08:21

2020-10-29 15:26:03

Web安全文件解析漏洞網(wǎng)絡(luò)安全

2020-12-01 15:35:06

Web安全明文密碼漏洞

2016-08-31 09:19:57

2011-08-02 15:19:28

2009-08-17 16:00:14

2009-08-17 14:47:31

2012-08-02 17:42:15

2014-06-05 09:58:21

點贊
收藏

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