Web 應用安全之漏洞測試技術_第1頁
Web 應用安全之漏洞測試技術_第2頁
Web 應用安全之漏洞測試技術_第3頁
Web 應用安全之漏洞測試技術_第4頁
Web 應用安全之漏洞測試技術_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、隨著人們對數(shù)據(jù)驅(qū)動的網(wǎng)站的依賴性的提高,針對WEb站點的攻擊的數(shù)量也呈現(xiàn)出上升的趨勢。作為開發(fā)人員,只有先弄明白了自己的站點是如何被攻擊的,才能設法保護它們。本文將揭示一些比較常見的攻擊,同時還介紹偵察這些攻擊的安全工具。如今,Web在社交功能方面日益增長,但是它的安全性卻日益堪憂。事實上,據(jù)WASC在2009年初的估算,所有網(wǎng)站中有87%都存在安全隱患。雖 然一些公司有能力外聘安全專業(yè)人員進行滲透測試,但并非所有公司都有支付得起20,000到40,000美元的外包安全審計費用。相反,公司可以自己設法 讓開發(fā)人員獲悉這些安全威脅,充分引起他們的注意,從而在開發(fā)代碼時不會留下這樣的安全隱患。常用

2、縮寫詞HTML:超文本標記語言SQL:結構化查詢語言URL:統(tǒng)一資源定位器要想編寫出安全的代碼,您必須首先獲悉您的程序所面臨的威脅有哪些。本文考察了一些非常流行的漏洞,諸如跨站點腳本攻擊和SQL注射,同時還介紹了 可以一些安全工具。這些工具不僅可以幫我們保護自己的網(wǎng)站,還能幫我們保護數(shù)據(jù)和網(wǎng)絡。本文無法替代安全專業(yè)人員,也不會教授艱深的安全技巧。相反地,我 們主要介紹如何發(fā)現(xiàn)代碼中潛在的漏洞,以及如何修復它們。常見安全漏洞開始之前,我們需要對要查找的漏洞本身有所了解。我們先來看一下最流行的一個漏洞,即跨站點腳本攻擊(XSS)。XSS是網(wǎng)站被注入惡意腳本而導致 的,舉例來說,Mallory編寫了

3、一段腳本,它能夠?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ù)庫的依賴性日益增強所賜。SQL注入實際上非常簡單:發(fā)現(xiàn)一個連接數(shù)據(jù)庫的網(wǎng)站后,心懷叵 測的黑客可以執(zhí)行一個SQL查詢來實現(xiàn)開發(fā)人員始料未及的功能:繞過身份驗證或者操縱數(shù)據(jù)。這種類型的攻擊

4、,正是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注入進行了演示,您可以從中看到利用這種攻擊對于攻擊者而言是多么簡單。如果沒有專業(yè)的安全人員團隊,普通的Web開發(fā)者看起來很難跟這些漏洞相抗衡。幸運的是,事實并非如此。許

5、多工具可以幫助我們查找網(wǎng)站中潛在的漏 洞,如果據(jù)此采取必要的措施的話,我們就能夠有效的防御這些漏洞導致的攻擊。為了幫我們識別潛在危險,像WebScarab 和Paros 之類的工具能夠捕捉瀏覽器和服務器之間的會話,并能爬行網(wǎng)站。掌握這些信息后,您就可以檢測這些漏洞并采取防御措施了。WebScarabOWASP開發(fā)的WebScarab是分析瀏覽器請求和服務器應答的首選代理。WebScarab除了提供數(shù)據(jù)包分析功能外,還可以對站點進行 Fuzz測試,以尋找上述的漏洞。 若要使用WebScarab,首先要配置web瀏覽器的代理設置。對于Mozilla Firefox瀏覽器來說,需要執(zhí)行下列步驟:1.

6、 單擊Tools > Options > Advanced > Network。2. 單擊Settings。這時Connection Settings窗口會打開。3. 選擇Manual proxy configuration選項。4. 在HTTP Proxy和SSL Proxy這兩個字段中,輸入localhost,并將端口設置為8008。5. 確保No proxy for文本框為空,并單擊 OK按鈕。圖 1展示了Firefox的連接設置。圖 1. Firefox 的連接設置如上圖所示,選中Manual proxy configuration;HTTP Proxy為localh

7、ost,端口是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復選框,然后單擊Advanced按鈕。4. 對于HTTP和Secure字段,輸入localhost,并使用

8、8008端口。5. 應確保Exceptions字段為空,然后單擊OK按鈕。圖 2展示了Internet Explorer的代理設置。圖 2. 設置代理在上面的代理設置截圖中,HTTP被設置為localhost,使用8008端口。Secure被設置為localhost,端口為8008?,F(xiàn)在,我們已經(jīng)為掃描網(wǎng)站做好了準備。利用WebScarab掃描您的站點下面的例子使用的站點為Hacme Casino,它是由Foundstone創(chuàng)建的,故意帶有某些漏洞以便用于培訓。該站點是使用Apache Tomcat封裝的,所以如果您喜歡的話,也可以在本地運行。接下來,打開WebScarab。WebScarab

9、啟動后,我們只會看到兩個選項卡:Summary和Intercept。因為您想使用 WebScarab進行fuzzing測試,所以要通過單擊Tools > Use full-featured interface > OK來切換視圖。這時,WebScarab會提示我們重新啟動該軟件。重啟后,將看到如圖3所示的界面。(WebScarab提供了一個快捷鍵列表-令 人遺憾的是,只有兩個快捷鍵。)圖3. WebScarab界面WebScarab界面的截屏,這里顯示了多個選項卡:Spider、Extensions 、XSS /CRLF 、SessionID Analysis 、Scripted

10、、Fragments 、Fuzzer 、Compare 、Search 、Summary 、Messages 、Proxy 、Manual Request 和Web Services。其中Summary選項卡被高亮顯示。若要啟動新的會話,請單擊File > New。這時會出現(xiàn)一個方框,要求輸入會話保存地點。 選擇或者創(chuàng)建存儲目錄,然后單擊OK按鈕。當您在Hacme Casino上使用WebScarab時,需要在打開瀏覽器之前就啟動服務器。 然后,在瀏覽器的地址欄中輸入http:/localhost:3000。一旦打開瀏覽器,您就會看到WebScarab中出現(xiàn)某些活動,因為WebScara

11、b將捕獲瀏覽器和服務器之間的所有請求和響應。因為您想使用 fuzzing功能來測試安全漏洞,所以要首先察看可能存在漏洞的地點。我們將登錄作為查找潛在漏洞的第一站。若要測試登錄過程,您應當記錄瀏覽器和服務 器之間的交互信息。這里不需要成功進行登錄,所以您可以隨意輸入用戶名和口令,對本例而言,我們輸入的用戶名和口令都為casino,然后單擊login 按鈕。當然,登錄將失敗,但是我們對此并不關心。相反,我們要立馬返回到WebScarab。在Path欄中,右鍵單擊accountlogin,然后單擊Use as fuzz template,如圖4所示.圖 4. Fuzzing測試模板Fuzzing測試

12、模板的截屏顯示了一個類似電子表格的視圖,其中含有各種各樣的web鏈接數(shù)據(jù)。修改all_attack.txt文件想該文件加入兩行內(nèi)容,即'or 'x'='x和 ') or 1=1- ,這是兩行基本的SQL注入字符串,并且將在本例中用到。執(zhí)行以下步驟:1. 單擊WebScarab界面頂部的Fuzzer選項卡。2. 單擊Source。3. 導航至字典所在位置。(我使用的是all_attack.txt)4. 提供來源描述,并單擊Add按鈕。5. 單擊 Close返回Fuzzer窗口。現(xiàn)在,轉(zhuǎn)到user_login參數(shù)并單擊Fuzz Source欄下面的相應區(qū)域。

13、因為您僅僅裝入了一個(所有的攻擊)來源,所以在下拉框菜單選中它即可。對user_password參數(shù)進行同樣的操作,如圖5所示。圖 5. 選擇攻擊文件攻擊文件的截屏顯示了一個包含各種可編輯參數(shù)的表格?,F(xiàn)在,您已經(jīng)定義了攻擊源,所以單擊Start就可以開始測試了。該fuzzer將從文件中取出參數(shù),并將其插入用戶名和口令輸入字段。每當該工具 完成一次嘗試,屏幕就會有相應的輸出內(nèi)容。通常您將需要檢查結果中的每個ID,以便分析每次嘗試所發(fā)生的情況。然而,因為這里添加的字符串肯定奏效,所以 您可以看到fuzzer成功時的情形。雙擊本例中的第一個字符串,如圖6所示。圖 6. 查找安全漏洞截屏顯示了一個頁面

14、的解析信息。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)閔ttp:/localhost:3000/lobby/games,看上去用戶已經(jīng)成功登錄了。這又意味著什么呢? 它意味著你的站點是易受攻擊的。因為) OR 1=1-是一個SQL字符串,所以站點容易受到SQL注入的攻擊。使用N

15、ext按鈕滾動結果,并查找那個值。注意,這里的地址保持為http:/localhost:3000。由此結果可知,插入這種類型的字符串不會導致成功的登錄嘗試,所以站點不易受這種類型的攻擊的影響。Paros Proxy進行安全性測試的時候,另一個常用的工具是Paros Proxy。 就像WebScarab一樣,Paros也能捕獲瀏覽器和服務器之間的會話來用于分析。您還可以使用它來檢查站點中的安全漏洞。為了運行Paros,您必 須更改瀏覽器的代理設置所使用的端口號。對于WebScarab,您使用的端口號是8008;但是運行Paros之前,需要將這個端口號改為8080,否 則Paros就無法正常工作。

16、對于本文來說,我們使用WebGoat另一款來自OWASP的安全工具。就像Hacme Casino一樣,WebGoat使用Tomcat服務器作為本地主機。對于本文來說,使用Paros掃描WebGoat所找到的漏洞比Hacme Casino發(fā)現(xiàn)的安全漏洞要更多一些。使用多個掃描器凡是對自己站點進行過測試的人可能都知道,同一個站點,使用不同的掃描器會得到不同的掃描結果。這就是為什么專業(yè)滲透測試人員工作中會使用多種工具的原因。更改端口之后,打開Paros,并執(zhí)行下列步驟:1. 在WebGoat文件夾中,雙擊WebGoat.ba以啟動Tomcat。2. 打開瀏覽器,然后在地址欄輸入http:/local

17、host/WebGoat/attack。3. 在用戶名和口令中輸入guest。4. 單擊Start WebGoat。現(xiàn)在,返回到Paros,并開始掃描WebGoat站點。當然,您也可以通過在地址欄輸入相應的地址來測試您自己的網(wǎng)站。在Paros中,展開Sites文件夾,您就會在文件樹中看到http:/localhost。 繼續(xù)展開這個文件夾以調(diào)出WebGoat。高亮顯示W(wǎng)ebGoat,然后單擊Analyse Scan。這樣就會馬上開始掃描這個站點。對于大型站點來說,所需時間會較長,但是掃描這個站點僅需幾秒就夠了。一旦啟動掃描,底部窗格會自動變?yōu)?Alerts選項卡。如圖7所示。當掃描完成時,在通

18、知您報告所在位置的彈出窗口中單擊OK按鈕。圖 7. 查看警告信息警告屏幕展示了一個典型的IDE風格的分割式窗口,在左上部的窗格中帶有一個站點樹,同時提供在右上方窗格中所選條目的詳細信息,另外,在底部窗格中還提供了一個警告樹。為了更詳細地展示警告細節(jié),您可以展開它。您還可以查看報告提供的更多信息。然而,您應當首先保存掃描結果,方法是單擊File > Save As,選擇文件名和存放位置,最后單擊Save即可。要想查看一個報告,單擊Report > Last Scan Report,在彈出窗口中單擊OK按鈕,這時一個新的瀏覽器選項卡會打開掃描結果,如圖8所示。這份報告為檢測到的每個安全

19、漏洞都提供了相應的信息,包括指向處理該特定攻擊的OWASP頁面鏈接。圖 8. Paros的報告這個Paros報告的截屏顯示了一個警告總表,并為每個警告提供了詳細信息。測試中的誤報雖然使用掃描器是查找網(wǎng)站潛在的安全漏洞的一個好方法,但是最優(yōu)秀的安全公司總是通過手工方式對這些潛在的安全漏洞進行排查,之所以這樣做是為了防 止誤報。這時,需要對報告有潛在的漏洞利用的網(wǎng)站的各處進行測試,即向站點本身插入SQL代碼或者腳本來觀察它的反應,然后使用各種攻擊程序?qū)φ军c進行測 試。大型公司經(jīng)常雇用精通此類測試的專業(yè)程序設計員,但是作為開發(fā)人員,您可以自己進行一些這樣的測試。這不僅能夠提高當前站點的安全性,而且對

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

21、password=password)通過登錄框注入的代碼轉(zhuǎn)變?yōu)橛行У牟樵儯篠ELECT * FROM users WHERE (username=) OR 1=1AND password=)這個查詢返回的結果是允許站點的第一個用戶成功的登錄,而不幸的是這個用戶恰恰就是Andy。當然,這個例子僅僅是針對SQL注入的,即使如此,如果某些人在攻擊網(wǎng)站方面非常老道,那么他或她實際上就能夠利用這個安全漏洞來創(chuàng)建用戶、修改口令甚至從網(wǎng)站上提取敏感數(shù)據(jù)。保護站點免受這些攻擊時,還需采取以下步驟:使用參數(shù)化查詢或者存儲過程而不是使用字符串拼接來訪問數(shù)據(jù)庫。參數(shù)化查詢要求您定義所有的SQL代碼,然后傳入每個參數(shù)

22、來進行查詢。這使得數(shù)據(jù)庫 能夠區(qū)分代碼和數(shù)據(jù),所以用戶提供的輸入內(nèi)容的類型就不會引起問題。這一點上存儲過程類似于參數(shù)化查詢,它也要求您首先定義SQL代碼,然后傳入?yún)?shù)。區(qū) 別是,用于存儲過程的SQL代碼是在數(shù)據(jù)庫本身內(nèi)定義和存放的,然后供應用程序調(diào)用。 通過白名單方式對用戶輸入進行消毒處理。如果要求使用名稱,那么只允許使用字母a-z和A-Z。對于電話號碼,只允許使用字符0-9。您可以利用你的數(shù)據(jù)庫支持的相應驗證技術來達此目的。通過數(shù)據(jù)庫設置字符轉(zhuǎn)義方案,對用戶提供的輸入進行轉(zhuǎn)義處理。對特殊字符進行轉(zhuǎn)義就是告訴數(shù)據(jù)庫,查詢中的這些字符是數(shù)據(jù),而非代碼。如果對用戶提供的所有的輸入都進行正確的轉(zhuǎn)義處

23、理的話,就不會受到帶有SQL代碼的用戶輸入的威脅了。不要給攻擊者任何幫助。應確保錯誤信息不會提供可以用來攻擊站點的任何有用信息。與XSS有關的誤報為了演示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后來顯示有關結果,如圖9所示.圖9. XSS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論