網絡專業(yè)畢業(yè)論文_第1頁
已閱讀1頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)設計(論文)</b></p><p>  題目名稱:基于模糊測試的漏洞發(fā)現</p><p>  ——跨站腳本模糊測試</p><p>  院系名稱:計算機學院</p><p>  班 級:網絡072班</p><p>  基于模糊測試的漏洞發(fā)現</p&

2、gt;<p>  ——跨站腳本模糊測試</p><p>  Vulnerability Discovery based on fuzz testing</p><p>  ——XSS fuzz testing</p><p><b>  中文摘要</b></p><p>  跨站腳本漏洞是Web應用程序中最

3、常見的一種漏洞,廣泛存在于Web應用程序和服務器中,很多計算機病毒、蠕蟲等都是利用了跨站腳本,其危害性甚大。怎樣發(fā)掘Web應用程序中跨站腳本漏洞,成了Web應用程序開發(fā)人員關注的重要問題。本文以Web應用程序跨站腳本為研究對象,研究Web應用程序跨站腳本漏洞模糊測試技術。論文包括以下研究工作。 </p><p>  首先,分析跨站腳本漏洞成因,重點研究了HTML,JavaScript。觸發(fā)跨站腳本的原因分為以下兩

4、種:通過閉合標簽觸發(fā)跨站腳本,通過標簽屬性傳遞值觸發(fā)跨站腳本??缯灸_本分為兩種類型:反射型跨站腳本和持久型跨站腳本。然后,使用源代碼分析方法發(fā)掘跨站腳本。在分析跨站腳本成因時,提出了利用源代碼挖掘跨站腳本的方法。用這種方法挖掘跨站腳本是最基礎的一種挖掘方法,用分析源代碼的方法尋找到若干跨站腳本漏洞。再者,重點分析了模糊測試原理,提出了模糊測試功能需求分析和框架設計,研究了實現模糊測試技術的核心算法。研究了模糊測試技術挖掘跨站腳本漏洞的方

5、法技巧,總結了關鍵步驟,使用模糊器挖掘若干未知漏洞。最后應用模糊測試技術,發(fā)掘未知跨站腳本漏洞,并做收集記錄添加在附錄C中。</p><p>  本文研究意義為:能迅速挖掘跨站腳本漏洞,能有效測試Web應用程序中的跨站腳本。這為繼續(xù)研究模糊測試Web應用程序提供了基礎,為構建Web應用程序模糊測試系統(tǒng)探索了思路。</p><p>  關鍵詞: Web應用程序; 跨站腳本; 模糊測試技術

6、; 模糊器; WebFuzz</p><p><b>  Abstract</b></p><p>  Cross-site scripting vulnerability is the most common web applications and servers vulnerability, which widely exists in the interne

7、t. Many computer viruses and worms are based on cross-site scripts. And the cross-site scripts’ harm is very serious. So how to explore cross-site scripting vulnerabilities has been the web application developers’ import

8、ant concern. The main work what I have done in this paper is the following research:</p><p>  First, what I have done is analyzing the causes of cross-site scripting vulnerability. For this, I mainly focus o

9、n the HTML, JavaScript knowledge. And as a result, I divide the reasons into the following two situations: triggered by closing tags, or triggered by passing tags’ property value. And also I find that cross-site scriptin

10、g vulnerability can be divided into two types: Reflected XSS and Stored XSS. Second, what I have done is using the source code analysis method to explore cross-site sc</p><p>  The significance of this resea

11、rch is that we can explore cross-site scripting and test web application fast and efficiently. It provides a foundation for building web applications, for constantly researching fuzz testing technology. </p><p

12、>  Key words: web application; cross-site scripting vulnerability; Fuzzing testing technology; Fuzzer; WebFuzz</p><p><b>  目 錄</b></p><p><b>  中文摘要II</b>&

13、lt;/p><p>  AbstractIV</p><p><b>  目 錄V</b></p><p><b>  第1章 前言1</b></p><p>  1.1 研究背景1</p><p>  1.2 研究內容2</p><p>

14、  1.2.1 Web應用程序漏洞2</p><p>  1.2.2 模糊測試技術3</p><p>  1.2.3 研究現狀、存在問題及應用領域3</p><p>  1.3 研究任務4</p><p>  1.4 論文結構5</p><p>  第2章 跨站腳本分析6</p><p&

15、gt;  2.1 跨站腳本概述6</p><p>  2.2 跨站腳本成因6</p><p>  2.2.1 超文本標記語言6</p><p>  2.2.2 JavaScript8</p><p>  2.2.3 跨站腳本產生的原因9</p><p>  2.3跨站腳本的分類12</p>&

16、lt;p>  2.3.1 Non-persistent(非持久型)12</p><p>  2.3.2 Persistent(持久型)12</p><p>  2.4跨站攻擊與跨站腳本的危害13</p><p>  2.4.1 跨站攻擊13</p><p>  2.4.2 跨站腳本的利用模式13</p><

17、p>  2.5本章小結14</p><p>  第3章 Web模糊測試技術15</p><p>  3.1 HTTP狀態(tài)碼和信息頭15</p><p>  3.2 模糊測試原理15</p><p>  3.3 模糊器功能需求分析16</p><p>  3.3.1 請求17</p>&l

18、t;p>  3.3.2 模糊變量18</p><p>  3.3.3 響應18</p><p>  3.4 模糊器框架設計18</p><p>  3.5 模糊器設計核心函數19</p><p>  3.5.1 生成請求19</p><p>  3.5.2 sendRequest類20</p&g

19、t;<p>  3.5.3 接收響應21</p><p>  3.6 本章總結22</p><p>  第4章 跨站腳本漏洞挖掘23</p><p>  4.1 源代碼分析方法挖掘XSS23</p><p>  4.1.1 正常狀態(tài)記錄23</p><p>  4.1.2 返回信息源代碼分析2

20、4</p><p>  4.2 模糊測試方法挖掘XSS25</p><p>  4.2.1 正常狀態(tài)記錄26</p><p>  4.2.2 使用Fiddler工具26</p><p>  4.2.3 Ping目標主機IP地址28</p><p>  4.2.4 在模糊器中輸入信息29</p>

21、<p>  4.2.5 開始測試31</p><p>  4.2.6 驗證準確性32</p><p>  4.3 兩種測試方法的比較33</p><p>  4.4 本章總結33</p><p>  第5章 結 論34</p><p>  5.1 模糊測試技術總結34</p><

22、;p>  5.2 模糊測試發(fā)展前景35</p><p><b>  參考文獻36</b></p><p><b>  致 謝37</b></p><p><b>  附 錄38</b></p><p>  附錄A 圖目錄38</p><p&g

23、t;  附錄B 主要源程序39</p><p>  附錄C 跨站腳本記錄50</p><p><b>  第1章 前言</b></p><p>  隨著計算機通信技術的飛速發(fā)展,Web應用程序得到了越來越多的應用。Web應用程序的安全性成為了一個復雜性的課題。怎么進行Web應用程序安全測試,怎么進行Web應用程序漏洞挖掘,已經成為Web應用

24、程序開發(fā)者和Web應用程序安全維護者關心的重要議題。本篇論文將用最新的Web應用程序漏洞發(fā)掘技術——模糊測試技術,對Web應用程序中跨站腳本漏洞進行挖掘。</p><p><b>  1.1 研究背景</b></p><p>  2010年8月中國互聯(lián)網絡中心CNNIC發(fā)布中國互聯(lián)網發(fā)展現狀報告。報告顯示,中國網民規(guī)模持續(xù)增長,互聯(lián)網應用深度不斷提升,商務類應用成為新

25、的增長點。其中網上支付、網絡購物、網上銀行增長最為強勁。企業(yè)借助互聯(lián)網進行商務活動的價值日益凸顯,企業(yè)利用互聯(lián)網的積極性不斷提高,企業(yè)在互聯(lián)網上的投入也不斷提高,包括建站、交易平臺入駐、網絡營銷等。</p><p>  由此可見,網絡已經成為發(fā)布信息,獲得信息,資源下載,網絡應用,電子消費,電子政務等等的重要平臺,而建立在龐大、集成的網絡基礎上的多平臺、網絡化、充分集成的Web應用程序已成為上述業(yè)務最流行的處理模

26、式。但與此同時,承載著重要而豐富功能與用途的Web應用和服務器也成為惡意用戶與黑客等攻擊者的主要目標。因此,如何確保Web應用程序的安全已成為企業(yè),政府,特別是金融系統(tǒng)、電子政務和電子購物系統(tǒng)所面臨的主要挑戰(zhàn)。</p><p>  為了防止政府系統(tǒng)、企業(yè)用戶、廣大個人用戶成為Web應用程序安全性問題的受害者,應該關注Web應用程序和服務器的安全性問題。作為普通用戶不應該利用Web應用程序和服務器的安全性問題危害公

27、眾利益,作為技術人員應該維護Web應用程序和服務器的安全性,作為開發(fā)人員應該將Web應用程序和服務器的安全性放到重要位置。這對計算機通信技術的發(fā)展來說是很重要的。</p><p>  對Web應用程序和服務器的安全性的關注,其中最重要的一個方面是對其進行安全性測試,發(fā)掘其中存在的安全漏洞。可以采取很多不同的方法進行安全性測試,從大的方面來說可以分為白盒測試和黑盒測試兩個方面,Web應用程序模糊測試技術是黑盒測試的

28、一種,是自動化的黑盒測試技術。它是通過提供非預期的輸入并監(jiān)視異常結果來發(fā)現Web應用程序故障的方法。</p><p><b>  1.2 研究內容</b></p><p>  本小節(jié)將講述Web應用程序和Web應用程序漏洞的有關知識,然后介紹什么是Web應用程序和服務器模糊測試技術,并介紹Web應用程序和服務器模糊測試技術的研究現狀、存在的問題和應用領域。</p

29、><p>  1.2.1 Web應用程序漏洞</p><p>  Web應用程序(Web Application)是指用戶界面駐留在Web瀏覽器中的任何應用程序,包括內容管理系統(tǒng)(CMS)、wiki百科、門戶網站、電子公告板、論壇等。它基于Web運行,是瀏覽器-服務器架構的典型產物。Web應用程序漏洞特指由于開發(fā)者編碼不慎、沒有對用戶的輸入進行充分驗證和過濾而引入的漏洞,它主要包括跨站腳本(X

30、SS)、SQL 注入、遠程文件包含(RFI)、跨站請求偽造(CSRF)、目錄遍歷等。</p><p>  致力于提高Web應用程序安全性的開放社群OWASP(Open Web Application Security Project,開放Web應用程序安全項目)在2010年4月19日公布的OWASP十大互聯(lián)網應用程序風險(OWASP Top 10 for 2010)依次是:</p><p>

31、;  A1: Injection注入攻擊</p><p>  A2: Cross-Site Scripting (XSS)跨站腳本</p><p>  A3: Broken Authentication and Session Management失效的身份認證和會話管理</p><p>  A4: Insecure Direct Object References

32、不安全的直接對象引用</p><p>  A5: Cross-Site Request Forgery (CSRF)跨站請求偽造</p><p>  A6: Security Misconfiguration安全配置錯誤</p><p>  A7: Insecure Cryptographic Storage不安全的加密存儲</p><p>

33、  A8: Failure to Restrict URL Access沒有限制URL訪問</p><p>  A9: Insufficient Transport Layer Protection傳輸層保護不足</p><p>  A10: Unvalidated Redirects and Forwards未驗證的重定向和轉發(fā)</p><p>  十大風險的名稱

34、有的來自于攻擊的類型,有的來自于漏洞,而有的來自于所造成的影響。攻擊者可以通過應用程序中許多不同的路徑方法去危害你的業(yè)務或者企業(yè)組織。每種路徑方法都代表了一種風險。不同的路徑方法,所利用的Web應用程序安全漏洞就有可能不同。</p><p>  如下圖1-1就是利用不同Web應用程序安全漏洞產生風險的過程圖:</p><p>  圖1- 1 利用不同Web應用程序安全漏洞產生風險過程圖&l

35、t;/p><p>  1.2.2 模糊測試技術</p><p>  模糊測試技術,又被稱為Fuzzing,它是通過提供非預期的輸入并監(jiān)視異常結果來發(fā)現Web應用程序故障的方法。是一種廣為使用的自動化的漏洞挖掘技術,它是一種特殊的動態(tài)測試方法。模糊測試技術可以被定義為通過提供非預期的輸入并監(jiān)視異常結果來發(fā)現軟件故障的方法。模糊測試技術是近幾年興起的漏洞挖掘技術。最初用來測試操作系統(tǒng)及其上應用軟件

36、的健壯性,后來被應用于漏洞挖掘中。Fuzzing技術是一種高度自動化的,高效的漏洞挖掘技術。</p><p>  Web應用程序自動化的模糊測試是模糊測試技術的延伸,是一種特殊形式的網絡協(xié)議模糊測試,特別關注于遵循HTTP規(guī)范的包。是一種黑盒測試,在很大程度上是一種強制性的技術,把能夠想到的所有的東西都拋給被測目標,然后監(jiān)視結果。結合Web應用程序安全性測試的特點以及自動化的模糊測試的特點,會看到自動化的模糊測試

37、技術在發(fā)掘Web應用程序上的方便性和有效性。事實證明自動化的模糊測試技術能夠發(fā)掘Web應用程序中隱藏的用其他方法難以發(fā)掘的漏洞。</p><p>  1.2.3 研究現狀、存在問題及應用領域</p><p>  研究現狀:到目前為止,Web應用程序的模糊測試技術取得了一定的進展,但是這項技術仍然在初級階段,大部分工具仍然是相對較小的項目,由幾個人組成的小組甚至一名程序員來維護,未來的模糊測

38、試將會有許多革新和發(fā)展,模糊測試還會發(fā)展到新的階段。這些年,模糊測試已經開始從學術研究向商業(yè)應用方向發(fā)展,有越來越多的開發(fā)人員開始接受模糊測試技術。使用模糊測試技術,研究人員已經開發(fā)了不少的應用于Web應用程序漏洞的挖掘的模糊器,例如有SPIKE代理,WebScarab,SPI模糊器,Codenomicon HTTP測試工具,beSTORMOLU等等,這些都是優(yōu)秀的基于模糊測試技術的具有發(fā)掘Web應用程序和服務器漏洞功能的模糊器。<

39、;/p><p>  存在的問題:但是這些工具大多是商業(yè)應用的測試工具,而本課文題在研究使用模糊測試技術發(fā)掘Web應用程序和服務器漏洞時,所涉及的模糊器WebFuzz是一款免費開源的專門針對Web應用程序和服務器漏洞挖掘的工具。這款工具具有良好的可擴展性,它提供了一個可以而且應當被進一步創(chuàng)建的架構。其相關資料和源代碼可以在網站www.fuzzing.org中獲得。</p><p>  應用領域:

40、Web應用程序和服務器的模糊測試器WebFuzz可應用于網站開發(fā)的安全測試和Web應用程序和服務器開發(fā)的安全測試。它用于發(fā)掘Web應用程序和服務器中的目錄遍歷漏洞,緩沖區(qū)溢出漏洞,SQL注入漏洞,XSS腳本漏洞等。</p><p><b>  1.3 研究任務</b></p><p>  本文的研究任務主要包括:Web應用程序跨站腳本分析、Web應用程序漏洞挖掘模糊測

41、試技術研究、跨站腳本重現研究、跨站腳本探索挖掘研究四個部分。</p><p>  研究任務表如下表1-1所示:</p><p><b>  表1-1研究任務表</b></p><p>  研究的技術路線如下圖1-2:</p><p>  圖1- 2 擬采用的研究技術路線</p><p>  跨站腳

42、本分析:首先學習跨站腳本定義,明確跨站腳本分類,分析跨站腳本觸發(fā)原理。進而研究跨站腳本攻擊向量的構造方法,以及變換形式。并在此基礎上進一步理解和總結跨站腳本成因。</p><p>  Web模糊測試技術分析:首先學習模糊測試技術的基本原理知識,在此基礎上研究本文提出的Web應用程序模糊器——WebFuzzer。分析本模糊器的工作原理,掌握本模糊器的使用方法。</p><p>  跨站腳本重

43、現研究:不斷總結發(fā)掘跨站腳本的方法,更深理解其觸發(fā)原理。不斷掌握模糊器WebFuzzer的使用,構建發(fā)掘Web應用程序跨站腳本的發(fā)掘環(huán)境,并會利用WebFuzzer重現已知的漏洞。</p><p>  跨站腳本探索研究:不斷總結Web應用程序跨站腳本的形成原理,掌握Web應用程序模糊器WebFuzzer發(fā)掘跨站腳洞的工作原理,總結和其他發(fā)掘工具相比時的優(yōu)勢。利用WebFuzzer探索發(fā)掘未知的跨站腳本。總結探索發(fā)

44、現跨站腳本的過程,用合理的方法收集已發(fā)現的跨站腳本。</p><p><b>  1.4 論文結構</b></p><p>  本次論文的文章架構如下:第1章,前言部分,總體上介紹研究任務,說明項目內容,介紹相關背景等;第2章,跨站腳本分析部分,本章深入分析跨站腳本成因及其他與跨站腳本有關的知識;第3章,Web模糊測試技術,本章深入探討Web模糊測試技術的原理,提出功

45、能需求分析、和框架設計,深入分析模糊器設計的核心函數算法;第4章,利用學到的知識對跨站腳本挖掘,這里用了源代碼分析的方法和模糊測試的方法;第5章對全文進行總結。</p><p>  第2章 跨站腳本分析</p><p>  來自OWASP的2010年Web應用程序面臨的十大安全風險報告顯示:跨站腳排名第二。而在以往的報告中,跨站腳本則一直穩(wěn)居第一。由此可見跨站腳本在Web應用程序中是很常見

46、而且是危害很大的一類漏洞,本章重點介紹這一類Web應用程序漏洞。從跨站腳本概述到成因,全面介紹跨站腳本。</p><p>  2.1 跨站腳本概述</p><p>  XSS的全稱是Cross Site Scripting,意思是跨站腳本.這第一個單詞是Cross,但因為CSS是層疊樣式表的縮寫(Cascading Style Sheets)的縮寫,同時Cross發(fā)音和X相似,所以為了避免

47、混淆用X來代替縮寫成XSS。</p><p>  跨站點腳本(XSS)是一個典型的Web應用程序計算機安全漏洞。允許攻擊者繞過客戶端的安全機制,可以使惡意攻擊者將客戶端腳本注入到其他用戶瀏覽的網頁里。截止到2007年,賽門鐵克公司所記錄的安全記錄中有80%為跨站腳本,它的影響范圍可以從一個小小的滋擾到一個重大的安全風險。OWASP公布的2004年和2007年十大網絡安全漏洞中,跨站腳本都高居首位,最新公布的201

48、0年十大安全風險也為第二位,跨站腳本一直以來都是最常見的安全漏洞。</p><p>  2.2 跨站腳本成因</p><p>  2.2.1 超文本標記語言</p><p>  a.超文本標記語言概述</p><p>  要了解XSS的觸發(fā)原理就先得從HTML(超文本標記語言)開始。HTML(超文本標記語言)是描述網頁的一種語言。不是一種編程

49、語言,而是一種標記語言,是由一套標記標簽組成的,HTML使用標記標簽來描述網頁。HTML文檔包含HTML標簽和純文本,是網頁的文字形式。HTML文檔由HTML元素定義, HTML元素是指從開始標簽到結束標簽的所有代碼。HTML元素以開始標簽開始以結束標簽終止,元素內容是開始標簽和結束標簽之間的內容。</p><p>  b.超文本標記語言標簽</p><p>  HTML標簽標記HTML文

50、檔和HTML元素,瀏覽器通過這些標簽來識別文檔和元素的顯示格式。由開始標簽和結束標簽組成,開始標簽是被尖括號包圍的元素名,結束標簽是被尖括號包圍的斜杠和元素名。某寫HTML元素沒有結束標簽。下面簡單介紹一下常用的HTML標簽。</p><p>  HTML文檔標簽:HTML文檔是從<html>標簽開始的,結束標簽為</html>。<html> 與 </html> 之

51、間的文本描述網頁。</p><p>  HTML文檔頭標簽:HTML文檔頭標簽<head>用于定義文檔的頭部。文檔的頭部描述了文檔的各種屬性和信息,包括文檔的標題、在 Web 中的位置以及和其他文檔的關系等。絕大多數文檔頭部包含的數據都不會真正作為內容顯示給讀者。</p><p>  HTML標題標簽:HTML標題標簽<title> 元素可定義文檔的標題。瀏覽器會以

52、特殊的方式來使用標題,并且通常把它放置在瀏覽器窗口的標題欄或狀態(tài)欄上。同樣,當把文檔加入用戶的鏈接列表或者收藏夾或書簽列表時,標題將成為該文檔鏈接的默認名稱。</p><p>  HTML的主體標簽:HTML文檔的主體是由<body>標簽進行定義的,和結束標簽分別為<body></body>。<body> 與 </body> 之間的文本是可見的頁面內容。

53、</p><p>  網頁中文章標題標簽:網頁中文章的標題是用標簽<h1> - <h6>定義的。<h1> 定義最大的標題。<h6> 定義最小的標題。</p><p>  c.超文本標記語言屬性</p><p>  同時,HTML 標簽可以擁有屬性。屬性提供了有關 HTML 元素的更多的信息。屬性總是以名稱/值對的形式出

54、現。比如name="value"屬性總是在HTML元素的開始標簽中定義。下面三個是標簽屬性舉例。</p><p>  鏈接標簽的屬性href指定鏈接地址:</p><p>  <a href="http://www.w3school.com.cn">This is a link</a></p><p>

55、  標題標簽中的屬性align指定標題的對齊方式。</p><p>  主體標簽中的屬性bgcolor指定文檔的背景顏色。</p><p>  定義屬性時要注意:始終為屬性值加引號,屬性值應該始終被包括在引號內。雙引號是最常用的,不過使用單引號也沒有問題。在某些個別的情況下,比如屬性值本身就含有雙引號,那么您必須使用單引號。</p><p>  d.超文本標記語言事

56、件</p><p>  HTML 事件可以觸發(fā)瀏覽器中的行為,比方說當用戶點擊某個 HTML 元素時啟動一段 JavaScript。在現代瀏覽器中都內置有大量的事件處理器。這些處理器會監(jiān)視特定的條件或用戶行為,例如鼠標單擊或瀏覽器窗口中完成加載某個圖像。通過使用客戶端的 JavaScript,可以將某些特定的事件處理器作為屬性添加給特定的標簽,并可以在事件發(fā)生時執(zhí)行一個或多個 JavaScript 命令或函數。事

57、件處理器的值是一個或一系列以分號隔開的 Javascript 表達式、方法和函數調用,并用引號引起來。當事件發(fā)生時,瀏覽器會執(zhí)行這些代碼。例如,當您把鼠標移動到一個超鏈接時,會啟動一個JavaScript 函數。支持 JavaScript 的瀏覽器支持 <a> 標簽中的一個特殊的 "mouse over"事件處理器 - 被稱為 onmouseover 來完成這項工作:<a href="/i

58、ndex.html" onmouseover="alert('Welcome');return false"></a>。</p><p>  2.2.2 JavaScript</p><p>  a.JavaScript概述</p><p>  JavaScript是一種基于對象和事件驅動并具有相對安全

59、性的客戶端腳本語言。同時也是一種廣泛用于客戶端Web開發(fā)的腳本語言,常用來給HTML網頁添加動態(tài)功能,比如響應用戶的各種操作。JavaScript 由數行可執(zhí)行計算機代碼組成。JavaScript 通常被直接嵌入 HTML 頁面。JavaScript 是一種解釋性語言,這就是說,代碼執(zhí)行不進行預編譯。</p><p>  b.JavaScript功能</p><p>  JavaScrip

60、t 為 HTML 設計師提供了一種編程工具。JavaScript 是一種只擁有極其簡單的語法的腳本語言,可以將短小的代碼片斷放入HTML 頁面當中。JavaScript 可以將動態(tài)的文本放入 HTML 頁面,可以將 JavaScript 設置為當某事件發(fā)生時才會被執(zhí)行,例如頁面載入完成或者當用戶點擊某個 HTML 元素時。JavaScript 可以讀寫 HTML 元素。JavaScript 可以讀取及改變 HTML 元素的內容。Java

61、Script 可被用來驗證數據,在數據被提交到服務器之前,JavaScript 可被用來驗證這些數據。JavaScript 可被用來檢測訪問者的瀏覽器,JavaScript 可被用來檢測訪問者的瀏覽器,并根據所檢測到的瀏覽器,為這個瀏覽器載入相應的頁面。JavaScript 可被用來創(chuàng)建 cookies,JavaScript 可被用來存儲和取回位于訪問者的計算機中的信息。</p><p>  c.JavaScri

62、pt標簽</p><p>  HTML的<script>標簽用于把Javascript插入到HTML頁面當中。如果需要把一段 JavaScript 插入 HTML 頁面,需要使用 <script> 標簽(同時使用 type 屬性來定義腳本語言)。這樣,<script type="text/javascript"> 和 </script> 就可以告

63、訴瀏覽器 JavaScript 從何處開始,到何處結束。</p><p>  d.JavaScript放置位置</p><p>  JavaScript放置的位置。你可以在文檔中放置任何數量的腳本,因此你既可以把腳本放置到 body,又可以放置到 head 部分。當頁面載入時,會執(zhí)行位于body部分的JavaScript;當被調用時,位于head部分的JavaScript才會被執(zhí)行,也就是

64、將腳本內容或者成為函數寫到head部分,在載入頁面的時候會先將腳本內容載入,然后再在后面的執(zhí)行過程中調用腳本內容,Body部分的腳本內容會在載入頁面的時候就執(zhí)行;還有一種是訪問外部腳本,可以把 .js 文件放到網站目錄中通常存放腳本的子目錄中,這樣更容易管理和維護。</p><p>  e.JavaScript語句</p><p>  JavaScript語句。JavaScript 語句是

65、發(fā)給瀏覽器的命令。這些命令的作用是告訴瀏覽器要做的事情。下面主要列舉幾種常用語句:</p><p>  聲明(創(chuàng)建)JavaScript變量:在 JavaScript 中創(chuàng)建變量經常被稱為“聲明”變量。可以通過 var 語句來聲明 JavaScript 變量。</p><p>  JavaScript消息框:可以在 JavaScript 中創(chuàng)建三種消息框:警告框、確認框、提示框。</

66、p><p>  警告框:警告框經常用于確保用戶可以得到某些信息。當警告框出現后,用戶需要點擊確定按鈕才能繼續(xù)進行操作。語法格式為:alert("文本")。</p><p>  確認框:確認框用于使用戶可以驗證或者接受某些信息。當確認框出現后,用戶需要點擊確定或者取消按鈕才能繼續(xù)進行操作。如果用戶點擊確認,那么返回值為 true。如果用戶點擊取消,那么返回值為 false。

67、語法格式為:confirm("文本")。</p><p>  提示框:提示框經常用于提示用戶在進入頁面前輸入某個值。當提示框出現后,用戶需要輸入某個值,然后點擊確認或取消按鈕才能繼續(xù)操縱。如果用戶點擊確認,那么返回值為輸入的值。如果用戶點擊取消,那么返回值為 null。語法格式為:prompt("文本","默認值")。</p><p&

68、gt;  f.JavaScript事件</p><p>  JavaScript中的事件。JavaScript 使有能力創(chuàng)建動態(tài)頁面。事件是可以被 JavaScript 偵測到的行為。網頁中的每個元素都可以產生某些可以觸發(fā) JavaScript 函數的事件。比方說,可以在用戶點擊某按鈕時產生一個 onClick 事件來觸發(fā)某個函數。事件在 HTML 頁面中定義。列舉一些JavaScript事件如下:鼠標點擊;頁面

69、或圖像載入;鼠標懸浮于頁面的某個熱點之上;在表單中選取輸入框;確認表單;鍵盤按鍵等。</p><p>  2.2.3 跨站腳本產生的原因</p><p>  跨站腳本產生的原因,是Web應用程序過度信賴用戶的輸入,CGI程序沒有對用戶提交的變量中的HTML代碼進行過濾和轉換。CGI輸入有兩種形式,顯示輸入和隱式輸入。其中顯示輸入明確要求用戶輸入數據,而隱式輸入則本來并不要求用戶輸入數據,但

70、是用戶卻可以通過輸入數據來進行干涉。顯示輸入又可以分為兩種,輸入完成立刻輸出結果;輸入完成先存儲在文本文件或數據庫中,然后再輸出結果,后者可能會讓網站面目全非。從引起跨站腳本的觸發(fā)原因分為以下兩種。</p><p><b>  a.閉合標簽</b></p><p>  瀏覽的網頁全部都是基于超文本標記語言HTML創(chuàng)建的HTML文檔。XSS的原理也就是往HTML文檔中注

71、入腳本,HTML指定了腳本標記<script></script>。在沒有過濾字符的情況下,只需要保持完整無錯的腳本標記即可觸發(fā)XSS,假如在某個資料表單提交內容,表單提交內容就是某個標記屬性所賦的值,可以構造閉合標記來構造完整無錯的腳本標記。例如HTML文檔中的一個超鏈接:</p><p>  <A HREF="http://safe.it168.com">

72、IT168安全頻道</A></p><p>  就可以構造閉合標記:</p><p>  "><script>alert('XSS');</script><"</p><p>  結果形成了<A HREF=""><script>alert(

73、'XSS');</script>。這樣就產生了跨站腳本。</p><p>  綜上所述,測試閉和表單賦值所在的標記,形成完整無錯的腳本標記可觸發(fā)XSS。</p><p><b>  標簽屬性賦值</b></p><p>  有些時候是沒有腳本標記的,這時可以利用其他標記,假如要在網頁里顯示一張圖片,那么就要使用一個&

74、lt;img>標記,示例如下:</p><p>  <img src="http://www.***.com/xss.gif"></p><p>  img標記并不是真正地把圖片給加入到Html文檔把兩者合二為一,而是通過src屬性賦值。那么瀏覽器的任務就是解釋這個img標記,訪問src屬性所賦的值中的URL地址并輸出圖片。瀏覽器不會檢測src屬性所賦

75、的值,這時可以利用JavaScript腳本語言的一個URL偽協(xié)議,觸發(fā)跨站腳本。URL偽協(xié)議說明符為”javascript:”,這種協(xié)議說明符加上任意的javascript代碼,當瀏覽器裝載這樣的URL時,便會執(zhí)行其中的代碼。于是就得出了一個經典的XSS示例:</p><p>  <img src="javascript:alert('XSS');"></p&

76、gt;<p>  構造過程如下:首先尋找到沒有驗證和過濾客戶端輸入的輸入圖片處,然后用記事本寫下如下代碼:<img src="javascript:alert('XSS');">,然后修改創(chuàng)建的文件的格式為可以上傳的圖片的格式,這樣便有可能觸發(fā)跨站腳本,如下圖2-1:</p><p>  圖2- 1跨站腳本觸發(fā)圖</p><p>

77、;  當然并不是所有標記的屬性都能用,標記的屬性在訪問文件才觸發(fā)的XSS,離開標記的屬性還有事件能幫助觸發(fā)XSS。只有達到某個條件才會引發(fā)事件,正巧img標記有一個可以利用的onerror()事件,當img標記內含有一個onerror()事件而正好圖片沒有正常輸出便會觸發(fā)這個事件,而事件中可以加入任意的腳本代碼,其中的代碼也會執(zhí)行.現在又得到了另外一個經典的XSS示例:</p><p>  <img src

78、="http://xss.jpg" onerror=alert('XSS')></p><p>  這種情況下觸發(fā)漏洞的過程如下:首先在記事本文本中輸入上面的代碼<img src="http://xss.jpg" onerror=alert('XSS')>,然后將文件名修改為可以上傳的圖片格式,這是在加載圖片的時候,不能找到

79、正確的圖片URL,于是觸發(fā)事件onerror,從而觸發(fā)的彈框XSS漏洞。</p><p><b>  跨站腳本成因總結</b></p><p>  由此可見,觸發(fā)一個XSS漏洞就是利用Web應用程序中程序員的失誤,通過客戶端影響Web服務器的輸出,即修改Web服務器傳送給客戶端的HTML,而要達到觸發(fā)一個XSS跨站腳本的目的,就必須從用戶的輸入入手,將輸入值插入到服務

80、器返回給的HTML文檔中,這個輸入值是包含HTML語言或者JavaScript語言或者其他腳本語言的合法的值,這個輸入值沒有被GUI程序檢驗和過濾。構造出完整無錯的腳本標記。構造的過程可能是:直接構造出完整無錯的腳本標記,或者通過訪問文件的標記屬性和觸發(fā)事件來構造。 </p><p>  需要補充一點的是,Web應用程序在開發(fā)過程中,是應該采用一定的安全策略的。那就是當JavaScript的使用者同時開啟多個瀏覽

81、器視窗時,在有些時候,網頁里面的片段程式碼被允許從另一個網頁取出,所以某些惡意網站可以用這個方法來嘗試竊取機密信息。這應當是被禁止的,為了解決這個問題,瀏覽器采用了允許來自相同網域名稱系統(tǒng)和使用相同協(xié)定的網頁之間進行互動,而不允許不相同網域域名系統(tǒng)和使用不相同協(xié)定的網頁之間進行互動,這樣就使得惡意網站無法借由Javascript在另一個瀏覽器竊取機密資料。這就是使用“同源策略”保護受害者免受惡意的危害。然而有些網站不能正確實現同源策略或

82、者說同源策略本身也存在弱點,攻擊者就可以利用這些去發(fā)現可以巧妙的注入惡意指令碼到其他網頁的方法,從而可以得到更高的特權,竊取機密的網頁內容、會談的cookie、以及許多其他的物件。</p><p>  2.3跨站腳本的分類</p><p>  上面一小節(jié)已經詳細闡述了跨站腳本的成因,下面將闡述一下跨站腳本的分類。跨站腳本的實質是注入的問題,現在并沒有一個單一的,標準的分類方法。但是許多專家

83、將跨站腳本分為至少兩大類:Non-persistent(非持久型)和Persistent(持久型)。</p><p>  2.3.1 Non-persistent(非持久型)</p><p>  這種跨站腳本又被稱為反射型跨站腳本。如果Web客戶端提供的數據立即被服務器端腳本所使用,生成并返回給用客戶端結果頁面,而服務器端腳本在使用這些數據之前沒有正確的審查這些數據。就有可能導致客戶端代碼

84、注入到返回的結果頁面中。如Web客戶端提供的HTTP查詢參數或者提供的HTML表單未被正確的審核卻被立即使用時。</p><p>  一個典型的例子是一個網站的搜索引擎:搜索一個字符串,搜索的字符串又被原封不動地重新顯示在結果頁中逐字說明是什么搜索。如果搜索引擎沒有對搜索的字符串進行正確的審核,就有可能導致一個非持久型的跨站腳本。本文將重點研究此種類型的漏洞。</p><p>  針對此類

85、漏洞,攻擊者可以構造具威脅性的攻擊代碼,并騙取受害用戶點擊</p><p>  生成的鏈接,從而危害到用戶的安全。</p><p>  2.3.2 Persistent(持久型)</p><p>  持久型跨站腳本又被稱為存儲型跨站腳本,它是一個跨站腳本更具破壞力的變體:攻擊者提供的數據被保存在服務器中,然后在其他用戶常規(guī)的瀏覽過程中,持久地顯示在返回給用戶的正常的

86、網頁結果中。</p><p>  這種類型的跨站腳本的執(zhí)行過程和非持久型的執(zhí)行過程類似,但是它的危害更加嚴重,因為攻擊者的腳本自動提交,而不需要引誘目標受害人點擊攻擊者的第三方網站。而且,攻擊者利用持久型跨站腳本時,只需要進行一次腳本注入就能引發(fā)多次攻擊事件??缯灸_本蠕蟲便是利用這類漏洞編寫的。尤其是在社交網站的情況下,代碼將進一步設計并自行在賬戶上宣傳,營造出一個客戶端的蠕蟲病毒類型。</p>&

87、lt;p>  2.4跨站攻擊與跨站腳本的危害</p><p>  2.4.1 跨站攻擊</p><p>  跨站攻擊,即Cross Site Script Execution(通常簡寫為XSS)是指攻擊者利用網站程序對用戶輸入過濾不足,輸入可以顯示在頁面上對其他用戶造成影響的HTML代碼,從而盜取用戶資料、利用用戶身份進行某種動作或者對訪問者進行病毒侵害的一種攻擊方式。利用跨站腳本進

88、行跨站攻擊,一般會有以下幾種危害:</p><p>  獲取其他用戶Cookie中的敏感數據</p><p><b>  屏蔽頁面特定信息</b></p><p><b>  偽造頁面信息</b></p><p><b>  拒絕服務攻擊</b></p><

89、p>  突破外網內網不同安全設置</p><p>  和其他漏洞結合,修改系統(tǒng)設置,查看文件系統(tǒng),執(zhí)行系統(tǒng)命令等</p><p><b>  g.其他</b></p><p>  2.4.2 跨站腳本的利用模式</p><p>  針對每一類漏洞不同的特點,攻擊者利用上述幾類跨站點腳本漏洞時會有特定的利用模式。下面

90、將分別敘述。</p><p>  非持久型跨站腳本的典型利用模式如下:</p><p>  a.Alice經常瀏覽Bob所有的某個網站。Alice使用自己的用戶名和口令進行登錄,并儲存了敏感信息(如:銀行賬戶信息);</p><p>  b.Mallory發(fā)現Bob的站點中存在反射型跨站腳本;</p><p>  c.Mallory構造一個利

91、用</p><p>  f.此漏洞的惡意URL,并將其冒充為來自Bob的郵件發(fā)送給Alice;</p><p>  g.Alice在登錄到Bob的站點后,打開了Mallory提供的URL;</p><p>  h.嵌入到URL中的惡意腳本會在Alice的瀏覽器中執(zhí)行;而對Alice而言,</p><p>  這段腳本就像直接來自Bob的服務器

92、一樣。此腳本會竊取Alice的敏感信</p><p>  息,然后在Alice完全不知情的情況下將這些信息發(fā)送到Mallory的站</p><p><b>  點或信箱中。</b></p><p>  持久型跨站腳本的典型利用模式如下:</p><p>  a.Bob擁有一個Web站點,這站點允許用戶發(fā)布信息,同時瀏覽已

93、發(fā)布的信</p><p><b>  息;</b></p><p>  b.Mallory注意到Bob的站點中存在存儲型跨站腳本;</p><p>  c.Mallory發(fā)布一個熱點信息,誘導其它用戶點擊閱讀;</p><p>  d.大量用戶在瀏覽此信息時,其會話cookies或者其它證書在不知不覺中</p>

94、;<p>  被Mallory盜走;</p><p>  e.Mallory以其它用戶的身份登錄站點,繼續(xù)發(fā)布惡意信息。</p><p><b>  2.5本章小結</b></p><p>  本章跨站腳本分析介紹了跨站腳的相關理論知識,尤其是從漏洞產生的根源深入分析了跨站腳本的成因,然后又分別介紹了跨站腳本的分類和跨站腳本的危害

95、。其中跨站腳本產生的原因是深入理解模糊測試技術的一個重要的基礎。</p><p>  第3章 Web模糊測試技術</p><p>  模糊測試技術是國際上最近興起的漏洞挖掘技術,以其自身的方便性和有效性迅速得到了廣大技術人員的青睞,Web模糊測試技術是一種自動化的黑盒測試技術,在Web應用程序安全測試過程中和Web應用程序漏洞挖掘過程中的重要作用得到了越來越多的人的重視。</p>

96、;<p>  3.1 HTTP狀態(tài)碼和信息頭</p><p>  當一個Web服務器響應一個請求時,它包含一個三位數字碼以確定請求的狀態(tài)。狀態(tài)碼的完整列表可以在RFC2616-超文本傳輸協(xié)議-HTTP/1.1 的第十部分找到。這些狀態(tài)碼可以提供線索以確定哪些模糊請求需要進一步加以研究。例如,Internet服務器錯誤的狀態(tài)碼500可能會提示前面的模糊請求導致了服務器的錯誤。同樣,未授權錯誤的狀態(tài)碼4

97、01則提示一個被請求的頁是存在的,但是是受密碼保護的。</p><p>  已經提到HTML狀態(tài)碼是一個非常重要的信息,因為它們對初始請求的成功或失敗提供了一種快捷的可視化的指示。因此,WebFuzz解析原始響應以識別狀態(tài)碼,然后該狀態(tài)碼被單獨顯示在一個表中以詳細描述所有的響應。使用此信息,用戶可以迅速的識別出應當被進一步詳細研究的那些響應。</p><p>  HTTP協(xié)議定義了許多頭信

98、息,而每個頭信息則有一些可以接受的值。本課題中研究的有如下一些:</p><p>  Accept頭信息:指定了可以在響應中使用的媒體類型。</p><p>  Accept-Language:允許用戶指定可以在響應中使用的自然語言的類型。</p><p>  User-Agent:定義了發(fā)出請求的客戶端(Web瀏覽器)。</p><p> 

99、 Host頭信息:該頭信息定義了為被請求的Web頁提供服務的主機和端口。</p><p>  Connection頭信息:允許客戶端指定連接所需要的不同選項。</p><p>  Cookies:可以在計算機的本地硬盤或者內存中被保存一段指定的時間,當前任務完成之后它們將被拋棄。</p><p>  這些頭信息都可以被作為模糊化測試的變量。</p>&

100、lt;p>  3.2 模糊測試原理</p><p>  Fuzzing,模糊測試技術是指,通過模糊器,產生大量半有效數據,將其作為輸</p><p>  入內容發(fā)送給應用程序,并觀察在運行過程中是否有可能發(fā)生諸如崩潰、信息泄露、延遲等各種錯誤,從而判定該應用程序中是否存在漏洞的技術;其通用工作流程如圖3-1所示。</p><p>  圖3- 1 模糊器通用工作

101、流程圖</p><p>  在一定意義上,可以將Fuzzing技術視為一種測試的內容均為負面情形的軟件質量測試技術。Fuzzing技術在大多數情況下用于發(fā)現安全漏洞,從而增強應用程序的可靠性。</p><p>  3.3 模糊器功能需求分析</p><p>  Web應用程序模糊測試是一種特殊形式的網絡協(xié)議模糊測試,網絡協(xié)議模糊測試將任意的網絡包進行變異,而Web應

102、用模糊測試則特別關注于遵循HTTP規(guī)范的包。將應用所學的知識,開發(fā)一個圖形化的Web應用模糊器WebFuzz,下面來介紹一下該應用程序的功能需求。</p><p><b>  3.3.1 請求</b></p><p>  對一個Web應用進行模糊測試,需要有一種方式來向它發(fā)送請求,通常情況下,使用一個Web瀏覽器同Web服務器進行通信,它知道如何利用HTTP進行通信,

103、并且能夠將所有雜亂的細節(jié)信息組裝成一個HTTP請求,當使用模糊器進行測試的時候,需要這些信息,來改變請求的所有方面,因此需要將原始請求暴露給終端用戶,并允許對其中的任何部分進行模糊化。該請求包括以下字段:主機,端口,超時,請求頭,其中將請求的所有組成部分保持在一個段可寫的文本字段中,從而從終端控制請求的各個方面。各字段介紹如下:</p><p><b>  主機</b></p>

104、<p>  目標機器的名字和IP地址是所需要的一個字段。對一個Web應用進行模糊測試,需要知道WebFuzz向何處發(fā)送請求。這不是一個可以進行模糊測試的字段。</p><p><b>  端口:</b></p><p>  盡管Web應用在默認情況下運行在TCP端口80,然而它們也可以方便的運行在其它任意的TCP端口。實際上,通常將Web應用設計為提供一個

105、基于Web的管理控制臺,以使其運行在一個可選的端口而不干擾主要的Web服務器。同主機名一樣,端口字段也是告訴WebFuzz向何處發(fā)送請求,同時,它也不是一個可以進行模糊測試的字段。</p><p><b>  超時</b></p><p>  由于的目的是發(fā)送非標準的Web請求,因此,目標應用程序通常不會以一種及時的方式來作出響應。因此,包含了一個用戶定義的、以毫秒計

106、的超時值。當記錄一個請求的響應超時時,這種記錄是非常重要的,因為它可以指明的請求使得目標程序離線,從而導致一個潛在的DoS漏洞。</p><p><b>  請求頭</b></p><p>  這是操作執(zhí)行的起點。當使用一個Web瀏覽器時,終端用戶可以控制目標主機、端口以及請求URI,但卻不能控制所有不同的頭信息。有意將請求的所有組成部分保持在一個單獨的可寫的文本字段

107、中,因為希望終端用戶能夠控制請求的各個方面??梢酝ㄟ^簡單的將所需要的請求敲進請求頭字段中來手工的創(chuàng)建一個請求。另外,如果你傾向于使用點擊的方法,那么也可以使用上下文菜單中所提供的標準頭列表來拼湊一個頭。最后一個選項是如果默認Web頁需要一個基本請求,那么允許從上下文菜單中選擇默認頭。</p><p>  3.3.2 模糊變量</p><p>  模糊變量是指在請求中將要被模糊數據所代替的那

108、些區(qū)域。對發(fā)送給Web服務器的原始請求有著完整的控制權。模糊變量需要被直接添加到原始請求中,并通過方括號中的變量名來識別。設計創(chuàng)建模糊變量的函數時,可以將他們劃分為兩個基本類型,靜態(tài)列表或生成變量。還可以在一個單一的請求中定義多個模糊變量。</p><p><b>  3.3.3 響應</b></p><p>  WebFuzz捕獲所有的響應結果并將其以原始格式保存。

109、的工具WebFuzz需要將所有的響應結果捕獲并將其以原始格式保存。用不同的格式來靈活地顯示響應。特別的是可以查看HTML。通過查看相應可以發(fā)現漏洞線索。</p><p>  3.4 模糊器框架設計</p><p>  文WebFuzz模糊測試工具采取了Fuzzing技術,要對Web應用程序和服務器進行模糊測試,首先要給定一個Web應用的入口網址,或者最好是直接給出需要測試網頁的具體網址。對

110、單個網頁的漏洞挖掘流程如下圖3-2所示:</p><p>  圖3- 2 對單個網頁的漏洞挖掘流程</p><p>  其中響應信息中可能存在的特定數據一般是和畸形數據相對應的一段腳本語言代碼。一般情況下,只需要檢測服務器響應信息中是否存在上述字段,就可以大致判斷是否存漏洞。然而,如果攻擊向量的選擇不當,或沒有充分判斷服務器對攻擊向量各種可能的響應情況,則有可能出現一定程度的漏報和誤報。因

111、此,為保證工具的運行效果,應對攻擊向量和其作用結果進行深入分析。WebFuzz對于單個網頁的挖掘思路也正如上所述。進一步的,WebFuzz實現了漏洞挖掘的自動化。</p><p>  從供給者角度出發(fā),通過模擬一次真實的攻擊事件對服務器的業(yè)務處理進行分析,從而實現漏洞檢測。如下圖3-3所示。</p><p>  圖3- 3 漏洞檢測流程</p><p>  WebF

112、uzz模糊測試工具主要由生成攻擊模塊和響應分析模塊構成,完成測試,而漏洞檢測的前期測試模塊主要是為了尋找測試的切入點。 </p><p>  3.5 模糊器設計核心函數</p><p>  模糊器設計涉及到的核心類或者方法有入口函數、Web應用程序窗體框架類frmWebFuzz、發(fā)送網絡數據請求的sendRequest類、構造畸形數據的構造器類Generate、讀取文件的類Read、以及記

溫馨提示

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

評論

0/150

提交評論