版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計(jì)(論文)</b></p><p> 題目名稱:基于模糊測試的漏洞發(fā)現(xiàn)</p><p> ——跨站腳本模糊測試</p><p> 院系名稱:計(jì)算機(jī)學(xué)院</p><p> 班 級:網(wǎng)絡(luò)072班</p><p> 基于模糊測試的漏洞發(fā)現(xiàn)</p&
2、gt;<p> ——跨站腳本模糊測試</p><p> Vulnerability Discovery based on fuzz testing</p><p> ——XSS fuzz testing</p><p><b> 中文摘要</b></p><p> 跨站腳本漏洞是Web應(yīng)用程序中最
3、常見的一種漏洞,廣泛存在于Web應(yīng)用程序和服務(wù)器中,很多計(jì)算機(jī)病毒、蠕蟲等都是利用了跨站腳本,其危害性甚大。怎樣發(fā)掘Web應(yīng)用程序中跨站腳本漏洞,成了Web應(yīng)用程序開發(fā)人員關(guān)注的重要問題。本文以Web應(yīng)用程序跨站腳本為研究對象,研究Web應(yīng)用程序跨站腳本漏洞模糊測試技術(shù)。論文包括以下研究工作。 </p><p> 首先,分析跨站腳本漏洞成因,重點(diǎn)研究了HTML,JavaScript。觸發(fā)跨站腳本的原因分為以下兩
4、種:通過閉合標(biāo)簽觸發(fā)跨站腳本,通過標(biāo)簽屬性傳遞值觸發(fā)跨站腳本。跨站腳本分為兩種類型:反射型跨站腳本和持久型跨站腳本。然后,使用源代碼分析方法發(fā)掘跨站腳本。在分析跨站腳本成因時,提出了利用源代碼挖掘跨站腳本的方法。用這種方法挖掘跨站腳本是最基礎(chǔ)的一種挖掘方法,用分析源代碼的方法尋找到若干跨站腳本漏洞。再者,重點(diǎn)分析了模糊測試原理,提出了模糊測試功能需求分析和框架設(shè)計(jì),研究了實(shí)現(xiàn)模糊測試技術(shù)的核心算法。研究了模糊測試技術(shù)挖掘跨站腳本漏洞的方
5、法技巧,總結(jié)了關(guān)鍵步驟,使用模糊器挖掘若干未知漏洞。最后應(yīng)用模糊測試技術(shù),發(fā)掘未知跨站腳本漏洞,并做收集記錄添加在附錄C中。</p><p> 本文研究意義為:能迅速挖掘跨站腳本漏洞,能有效測試Web應(yīng)用程序中的跨站腳本。這為繼續(xù)研究模糊測試Web應(yīng)用程序提供了基礎(chǔ),為構(gòu)建Web應(yīng)用程序模糊測試系統(tǒng)探索了思路。</p><p> 關(guān)鍵詞: Web應(yīng)用程序; 跨站腳本; 模糊測試技術(shù)
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 研究內(nèi)容2</p><p>
14、 1.2.1 Web應(yīng)用程序漏洞2</p><p> 1.2.2 模糊測試技術(shù)3</p><p> 1.2.3 研究現(xiàn)狀、存在問題及應(yīng)用領(lǐng)域3</p><p> 1.3 研究任務(wù)4</p><p> 1.4 論文結(jié)構(gòu)5</p><p> 第2章 跨站腳本分析6</p><p&
15、gt; 2.1 跨站腳本概述6</p><p> 2.2 跨站腳本成因6</p><p> 2.2.1 超文本標(biāo)記語言6</p><p> 2.2.2 JavaScript8</p><p> 2.2.3 跨站腳本產(chǎn)生的原因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本章小結(jié)14</p><p> 第3章 Web模糊測試技術(shù)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 響應(yīng)18</p><p> 3.4 模糊器框架設(shè)計(jì)18</p><p> 3.5 模糊器設(shè)計(jì)核心函數(shù)19</p><p> 3.5.1 生成請求19</p><p> 3.5.2 sendRequest類20</p&g
19、t;<p> 3.5.3 接收響應(yīng)21</p><p> 3.6 本章總結(jié)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目標(biāo)主機(jī)IP地址28</p><p> 4.2.4 在模糊器中輸入信息29</p>
21、<p> 4.2.5 開始測試31</p><p> 4.2.6 驗(yàn)證準(zhǔn)確性32</p><p> 4.3 兩種測試方法的比較33</p><p> 4.4 本章總結(jié)33</p><p> 第5章 結(jié) 論34</p><p> 5.1 模糊測試技術(shù)總結(jié)34</p><
22、;p> 5.2 模糊測試發(fā)展前景35</p><p><b> 參考文獻(xiàn)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> 隨著計(jì)算機(jī)通信技術(shù)的飛速發(fā)展,Web應(yīng)用程序得到了越來越多的應(yīng)用。Web應(yīng)用程序的安全性成為了一個復(fù)雜性的課題。怎么進(jìn)行Web應(yīng)用程序安全測試,怎么進(jìn)行Web應(yīng)用程序漏洞挖掘,已經(jīng)成為Web應(yīng)用
24、程序開發(fā)者和Web應(yīng)用程序安全維護(hù)者關(guān)心的重要議題。本篇論文將用最新的Web應(yīng)用程序漏洞發(fā)掘技術(shù)——模糊測試技術(shù),對Web應(yīng)用程序中跨站腳本漏洞進(jìn)行挖掘。</p><p><b> 1.1 研究背景</b></p><p> 2010年8月中國互聯(lián)網(wǎng)絡(luò)中心CNNIC發(fā)布中國互聯(lián)網(wǎng)發(fā)展現(xiàn)狀報(bào)告。報(bào)告顯示,中國網(wǎng)民規(guī)模持續(xù)增長,互聯(lián)網(wǎng)應(yīng)用深度不斷提升,商務(wù)類應(yīng)用成為新
25、的增長點(diǎn)。其中網(wǎng)上支付、網(wǎng)絡(luò)購物、網(wǎng)上銀行增長最為強(qiáng)勁。企業(yè)借助互聯(lián)網(wǎng)進(jìn)行商務(wù)活動的價值日益凸顯,企業(yè)利用互聯(lián)網(wǎng)的積極性不斷提高,企業(yè)在互聯(lián)網(wǎng)上的投入也不斷提高,包括建站、交易平臺入駐、網(wǎng)絡(luò)營銷等。</p><p> 由此可見,網(wǎng)絡(luò)已經(jīng)成為發(fā)布信息,獲得信息,資源下載,網(wǎng)絡(luò)應(yīng)用,電子消費(fèi),電子政務(wù)等等的重要平臺,而建立在龐大、集成的網(wǎng)絡(luò)基礎(chǔ)上的多平臺、網(wǎng)絡(luò)化、充分集成的Web應(yīng)用程序已成為上述業(yè)務(wù)最流行的處理模
26、式。但與此同時,承載著重要而豐富功能與用途的Web應(yīng)用和服務(wù)器也成為惡意用戶與黑客等攻擊者的主要目標(biāo)。因此,如何確保Web應(yīng)用程序的安全已成為企業(yè),政府,特別是金融系統(tǒng)、電子政務(wù)和電子購物系統(tǒng)所面臨的主要挑戰(zhàn)。</p><p> 為了防止政府系統(tǒng)、企業(yè)用戶、廣大個人用戶成為Web應(yīng)用程序安全性問題的受害者,應(yīng)該關(guān)注Web應(yīng)用程序和服務(wù)器的安全性問題。作為普通用戶不應(yīng)該利用Web應(yīng)用程序和服務(wù)器的安全性問題危害公
27、眾利益,作為技術(shù)人員應(yīng)該維護(hù)Web應(yīng)用程序和服務(wù)器的安全性,作為開發(fā)人員應(yīng)該將Web應(yīng)用程序和服務(wù)器的安全性放到重要位置。這對計(jì)算機(jī)通信技術(shù)的發(fā)展來說是很重要的。</p><p> 對Web應(yīng)用程序和服務(wù)器的安全性的關(guān)注,其中最重要的一個方面是對其進(jìn)行安全性測試,發(fā)掘其中存在的安全漏洞。可以采取很多不同的方法進(jìn)行安全性測試,從大的方面來說可以分為白盒測試和黑盒測試兩個方面,Web應(yīng)用程序模糊測試技術(shù)是黑盒測試的
28、一種,是自動化的黑盒測試技術(shù)。它是通過提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來發(fā)現(xiàn)Web應(yīng)用程序故障的方法。</p><p><b> 1.2 研究內(nèi)容</b></p><p> 本小節(jié)將講述Web應(yīng)用程序和Web應(yīng)用程序漏洞的有關(guān)知識,然后介紹什么是Web應(yīng)用程序和服務(wù)器模糊測試技術(shù),并介紹Web應(yīng)用程序和服務(wù)器模糊測試技術(shù)的研究現(xiàn)狀、存在的問題和應(yīng)用領(lǐng)域。</p
29、><p> 1.2.1 Web應(yīng)用程序漏洞</p><p> Web應(yīng)用程序(Web Application)是指用戶界面駐留在Web瀏覽器中的任何應(yīng)用程序,包括內(nèi)容管理系統(tǒng)(CMS)、wiki百科、門戶網(wǎng)站、電子公告板、論壇等。它基于Web運(yùn)行,是瀏覽器-服務(wù)器架構(gòu)的典型產(chǎn)物。Web應(yīng)用程序漏洞特指由于開發(fā)者編碼不慎、沒有對用戶的輸入進(jìn)行充分驗(yàn)證和過濾而引入的漏洞,它主要包括跨站腳本(X
30、SS)、SQL 注入、遠(yuǎn)程文件包含(RFI)、跨站請求偽造(CSRF)、目錄遍歷等。</p><p> 致力于提高Web應(yīng)用程序安全性的開放社群OWASP(Open Web Application Security Project,開放Web應(yīng)用程序安全項(xiàng)目)在2010年4月19日公布的OWASP十大互聯(lián)網(wǎng)應(yīng)用程序風(fēng)險(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失效的身份認(rèn)證和會話管理</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傳輸層保護(hù)不足</p><p> A10: Unvalidated Redirects and Forwards未驗(yàn)證的重定向和轉(zhuǎn)發(fā)</p><p> 十大風(fēng)險的名稱
34、有的來自于攻擊的類型,有的來自于漏洞,而有的來自于所造成的影響。攻擊者可以通過應(yīng)用程序中許多不同的路徑方法去危害你的業(yè)務(wù)或者企業(yè)組織。每種路徑方法都代表了一種風(fēng)險。不同的路徑方法,所利用的Web應(yīng)用程序安全漏洞就有可能不同。</p><p> 如下圖1-1就是利用不同Web應(yīng)用程序安全漏洞產(chǎn)生風(fēng)險的過程圖:</p><p> 圖1- 1 利用不同Web應(yīng)用程序安全漏洞產(chǎn)生風(fēng)險過程圖&l
35、t;/p><p> 1.2.2 模糊測試技術(shù)</p><p> 模糊測試技術(shù),又被稱為Fuzzing,它是通過提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來發(fā)現(xiàn)Web應(yīng)用程序故障的方法。是一種廣為使用的自動化的漏洞挖掘技術(shù),它是一種特殊的動態(tài)測試方法。模糊測試技術(shù)可以被定義為通過提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來發(fā)現(xiàn)軟件故障的方法。模糊測試技術(shù)是近幾年興起的漏洞挖掘技術(shù)。最初用來測試操作系統(tǒng)及其上應(yīng)用軟件
36、的健壯性,后來被應(yīng)用于漏洞挖掘中。Fuzzing技術(shù)是一種高度自動化的,高效的漏洞挖掘技術(shù)。</p><p> Web應(yīng)用程序自動化的模糊測試是模糊測試技術(shù)的延伸,是一種特殊形式的網(wǎng)絡(luò)協(xié)議模糊測試,特別關(guān)注于遵循HTTP規(guī)范的包。是一種黑盒測試,在很大程度上是一種強(qiáng)制性的技術(shù),把能夠想到的所有的東西都拋給被測目標(biāo),然后監(jiān)視結(jié)果。結(jié)合Web應(yīng)用程序安全性測試的特點(diǎn)以及自動化的模糊測試的特點(diǎn),會看到自動化的模糊測試
37、技術(shù)在發(fā)掘Web應(yīng)用程序上的方便性和有效性。事實(shí)證明自動化的模糊測試技術(shù)能夠發(fā)掘Web應(yīng)用程序中隱藏的用其他方法難以發(fā)掘的漏洞。</p><p> 1.2.3 研究現(xiàn)狀、存在問題及應(yīng)用領(lǐng)域</p><p> 研究現(xiàn)狀:到目前為止,Web應(yīng)用程序的模糊測試技術(shù)取得了一定的進(jìn)展,但是這項(xiàng)技術(shù)仍然在初級階段,大部分工具仍然是相對較小的項(xiàng)目,由幾個人組成的小組甚至一名程序員來維護(hù),未來的模糊測
38、試將會有許多革新和發(fā)展,模糊測試還會發(fā)展到新的階段。這些年,模糊測試已經(jīng)開始從學(xué)術(shù)研究向商業(yè)應(yīng)用方向發(fā)展,有越來越多的開發(fā)人員開始接受模糊測試技術(shù)。使用模糊測試技術(shù),研究人員已經(jīng)開發(fā)了不少的應(yīng)用于Web應(yīng)用程序漏洞的挖掘的模糊器,例如有SPIKE代理,WebScarab,SPI模糊器,Codenomicon HTTP測試工具,beSTORMOLU等等,這些都是優(yōu)秀的基于模糊測試技術(shù)的具有發(fā)掘Web應(yīng)用程序和服務(wù)器漏洞功能的模糊器。<
39、;/p><p> 存在的問題:但是這些工具大多是商業(yè)應(yīng)用的測試工具,而本課文題在研究使用模糊測試技術(shù)發(fā)掘Web應(yīng)用程序和服務(wù)器漏洞時,所涉及的模糊器WebFuzz是一款免費(fèi)開源的專門針對Web應(yīng)用程序和服務(wù)器漏洞挖掘的工具。這款工具具有良好的可擴(kuò)展性,它提供了一個可以而且應(yīng)當(dāng)被進(jìn)一步創(chuàng)建的架構(gòu)。其相關(guān)資料和源代碼可以在網(wǎng)站www.fuzzing.org中獲得。</p><p> 應(yīng)用領(lǐng)域:
40、Web應(yīng)用程序和服務(wù)器的模糊測試器WebFuzz可應(yīng)用于網(wǎng)站開發(fā)的安全測試和Web應(yīng)用程序和服務(wù)器開發(fā)的安全測試。它用于發(fā)掘Web應(yīng)用程序和服務(wù)器中的目錄遍歷漏洞,緩沖區(qū)溢出漏洞,SQL注入漏洞,XSS腳本漏洞等。</p><p><b> 1.3 研究任務(wù)</b></p><p> 本文的研究任務(wù)主要包括:Web應(yīng)用程序跨站腳本分析、Web應(yīng)用程序漏洞挖掘模糊測
41、試技術(shù)研究、跨站腳本重現(xiàn)研究、跨站腳本探索挖掘研究四個部分。</p><p> 研究任務(wù)表如下表1-1所示:</p><p><b> 表1-1研究任務(wù)表</b></p><p> 研究的技術(shù)路線如下圖1-2:</p><p> 圖1- 2 擬采用的研究技術(shù)路線</p><p> 跨站腳
42、本分析:首先學(xué)習(xí)跨站腳本定義,明確跨站腳本分類,分析跨站腳本觸發(fā)原理。進(jìn)而研究跨站腳本攻擊向量的構(gòu)造方法,以及變換形式。并在此基礎(chǔ)上進(jìn)一步理解和總結(jié)跨站腳本成因。</p><p> Web模糊測試技術(shù)分析:首先學(xué)習(xí)模糊測試技術(shù)的基本原理知識,在此基礎(chǔ)上研究本文提出的Web應(yīng)用程序模糊器——WebFuzzer。分析本模糊器的工作原理,掌握本模糊器的使用方法。</p><p> 跨站腳本重
43、現(xiàn)研究:不斷總結(jié)發(fā)掘跨站腳本的方法,更深理解其觸發(fā)原理。不斷掌握模糊器WebFuzzer的使用,構(gòu)建發(fā)掘Web應(yīng)用程序跨站腳本的發(fā)掘環(huán)境,并會利用WebFuzzer重現(xiàn)已知的漏洞。</p><p> 跨站腳本探索研究:不斷總結(jié)Web應(yīng)用程序跨站腳本的形成原理,掌握Web應(yīng)用程序模糊器WebFuzzer發(fā)掘跨站腳洞的工作原理,總結(jié)和其他發(fā)掘工具相比時的優(yōu)勢。利用WebFuzzer探索發(fā)掘未知的跨站腳本。總結(jié)探索發(fā)
44、現(xiàn)跨站腳本的過程,用合理的方法收集已發(fā)現(xiàn)的跨站腳本。</p><p><b> 1.4 論文結(jié)構(gòu)</b></p><p> 本次論文的文章架構(gòu)如下:第1章,前言部分,總體上介紹研究任務(wù),說明項(xiàng)目內(nèi)容,介紹相關(guān)背景等;第2章,跨站腳本分析部分,本章深入分析跨站腳本成因及其他與跨站腳本有關(guān)的知識;第3章,Web模糊測試技術(shù),本章深入探討Web模糊測試技術(shù)的原理,提出功
45、能需求分析、和框架設(shè)計(jì),深入分析模糊器設(shè)計(jì)的核心函數(shù)算法;第4章,利用學(xué)到的知識對跨站腳本挖掘,這里用了源代碼分析的方法和模糊測試的方法;第5章對全文進(jìn)行總結(jié)。</p><p> 第2章 跨站腳本分析</p><p> 來自O(shè)WASP的2010年Web應(yīng)用程序面臨的十大安全風(fēng)險報(bào)告顯示:跨站腳排名第二。而在以往的報(bào)告中,跨站腳本則一直穩(wěn)居第一。由此可見跨站腳本在Web應(yīng)用程序中是很常見
46、而且是危害很大的一類漏洞,本章重點(diǎn)介紹這一類Web應(yīng)用程序漏洞。從跨站腳本概述到成因,全面介紹跨站腳本。</p><p> 2.1 跨站腳本概述</p><p> XSS的全稱是Cross Site Scripting,意思是跨站腳本.這第一個單詞是Cross,但因?yàn)镃SS是層疊樣式表的縮寫(Cascading Style Sheets)的縮寫,同時Cross發(fā)音和X相似,所以為了避免
47、混淆用X來代替縮寫成XSS。</p><p> 跨站點(diǎn)腳本(XSS)是一個典型的Web應(yīng)用程序計(jì)算機(jī)安全漏洞。允許攻擊者繞過客戶端的安全機(jī)制,可以使惡意攻擊者將客戶端腳本注入到其他用戶瀏覽的網(wǎng)頁里。截止到2007年,賽門鐵克公司所記錄的安全記錄中有80%為跨站腳本,它的影響范圍可以從一個小小的滋擾到一個重大的安全風(fēng)險。OWASP公布的2004年和2007年十大網(wǎng)絡(luò)安全漏洞中,跨站腳本都高居首位,最新公布的201
48、0年十大安全風(fēng)險也為第二位,跨站腳本一直以來都是最常見的安全漏洞。</p><p> 2.2 跨站腳本成因</p><p> 2.2.1 超文本標(biāo)記語言</p><p> a.超文本標(biāo)記語言概述</p><p> 要了解XSS的觸發(fā)原理就先得從HTML(超文本標(biāo)記語言)開始。HTML(超文本標(biāo)記語言)是描述網(wǎng)頁的一種語言。不是一種編程
49、語言,而是一種標(biāo)記語言,是由一套標(biāo)記標(biāo)簽組成的,HTML使用標(biāo)記標(biāo)簽來描述網(wǎng)頁。HTML文檔包含HTML標(biāo)簽和純文本,是網(wǎng)頁的文字形式。HTML文檔由HTML元素定義, HTML元素是指從開始標(biāo)簽到結(jié)束標(biāo)簽的所有代碼。HTML元素以開始標(biāo)簽開始以結(jié)束標(biāo)簽終止,元素內(nèi)容是開始標(biāo)簽和結(jié)束標(biāo)簽之間的內(nèi)容。</p><p> b.超文本標(biāo)記語言標(biāo)簽</p><p> HTML標(biāo)簽標(biāo)記HTML文
50、檔和HTML元素,瀏覽器通過這些標(biāo)簽來識別文檔和元素的顯示格式。由開始標(biāo)簽和結(jié)束標(biāo)簽組成,開始標(biāo)簽是被尖括號包圍的元素名,結(jié)束標(biāo)簽是被尖括號包圍的斜杠和元素名。某寫HTML元素沒有結(jié)束標(biāo)簽。下面簡單介紹一下常用的HTML標(biāo)簽。</p><p> HTML文檔標(biāo)簽:HTML文檔是從<html>標(biāo)簽開始的,結(jié)束標(biāo)簽為</html>。<html> 與 </html> 之
51、間的文本描述網(wǎng)頁。</p><p> HTML文檔頭標(biāo)簽:HTML文檔頭標(biāo)簽<head>用于定義文檔的頭部。文檔的頭部描述了文檔的各種屬性和信息,包括文檔的標(biāo)題、在 Web 中的位置以及和其他文檔的關(guān)系等。絕大多數(shù)文檔頭部包含的數(shù)據(jù)都不會真正作為內(nèi)容顯示給讀者。</p><p> HTML標(biāo)題標(biāo)簽:HTML標(biāo)題標(biāo)簽<title> 元素可定義文檔的標(biāo)題。瀏覽器會以
52、特殊的方式來使用標(biāo)題,并且通常把它放置在瀏覽器窗口的標(biāo)題欄或狀態(tài)欄上。同樣,當(dāng)把文檔加入用戶的鏈接列表或者收藏夾或書簽列表時,標(biāo)題將成為該文檔鏈接的默認(rèn)名稱。</p><p> HTML的主體標(biāo)簽:HTML文檔的主體是由<body>標(biāo)簽進(jìn)行定義的,和結(jié)束標(biāo)簽分別為<body></body>。<body> 與 </body> 之間的文本是可見的頁面內(nèi)容。
53、</p><p> 網(wǎng)頁中文章標(biāo)題標(biāo)簽:網(wǎng)頁中文章的標(biāo)題是用標(biāo)簽<h1> - <h6>定義的。<h1> 定義最大的標(biāo)題。<h6> 定義最小的標(biāo)題。</p><p> c.超文本標(biāo)記語言屬性</p><p> 同時,HTML 標(biāo)簽可以擁有屬性。屬性提供了有關(guān) HTML 元素的更多的信息。屬性總是以名稱/值對的形式出
54、現(xiàn)。比如name="value"屬性總是在HTML元素的開始標(biāo)簽中定義。下面三個是標(biāo)簽屬性舉例。</p><p> 鏈接標(biāo)簽的屬性href指定鏈接地址:</p><p> <a href="http://www.w3school.com.cn">This is a link</a></p><p>
55、 標(biāo)題標(biāo)簽中的屬性align指定標(biāo)題的對齊方式。</p><p> 主體標(biāo)簽中的屬性bgcolor指定文檔的背景顏色。</p><p> 定義屬性時要注意:始終為屬性值加引號,屬性值應(yīng)該始終被包括在引號內(nèi)。雙引號是最常用的,不過使用單引號也沒有問題。在某些個別的情況下,比如屬性值本身就含有雙引號,那么您必須使用單引號。</p><p> d.超文本標(biāo)記語言事
56、件</p><p> HTML 事件可以觸發(fā)瀏覽器中的行為,比方說當(dāng)用戶點(diǎn)擊某個 HTML 元素時啟動一段 JavaScript。在現(xiàn)代瀏覽器中都內(nèi)置有大量的事件處理器。這些處理器會監(jiān)視特定的條件或用戶行為,例如鼠標(biāo)單擊或?yàn)g覽器窗口中完成加載某個圖像。通過使用客戶端的 JavaScript,可以將某些特定的事件處理器作為屬性添加給特定的標(biāo)簽,并可以在事件發(fā)生時執(zhí)行一個或多個 JavaScript 命令或函數(shù)。事
57、件處理器的值是一個或一系列以分號隔開的 Javascript 表達(dá)式、方法和函數(shù)調(diào)用,并用引號引起來。當(dāng)事件發(fā)生時,瀏覽器會執(zhí)行這些代碼。例如,當(dāng)您把鼠標(biāo)移動到一個超鏈接時,會啟動一個JavaScript 函數(shù)。支持 JavaScript 的瀏覽器支持 <a> 標(biāo)簽中的一個特殊的 "mouse over"事件處理器 - 被稱為 onmouseover 來完成這項(xiàng)工作:<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是一種基于對象和事件驅(qū)動并具有相對安全
59、性的客戶端腳本語言。同時也是一種廣泛用于客戶端Web開發(fā)的腳本語言,常用來給HTML網(wǎng)頁添加動態(tài)功能,比如響應(yīng)用戶的各種操作。JavaScript 由數(shù)行可執(zhí)行計(jì)算機(jī)代碼組成。JavaScript 通常被直接嵌入 HTML 頁面。JavaScript 是一種解釋性語言,這就是說,代碼執(zhí)行不進(jìn)行預(yù)編譯。</p><p> b.JavaScript功能</p><p> JavaScrip
60、t 為 HTML 設(shè)計(jì)師提供了一種編程工具。JavaScript 是一種只擁有極其簡單的語法的腳本語言,可以將短小的代碼片斷放入HTML 頁面當(dāng)中。JavaScript 可以將動態(tài)的文本放入 HTML 頁面,可以將 JavaScript 設(shè)置為當(dāng)某事件發(fā)生時才會被執(zhí)行,例如頁面載入完成或者當(dāng)用戶點(diǎn)擊某個 HTML 元素時。JavaScript 可以讀寫 HTML 元素。JavaScript 可以讀取及改變 HTML 元素的內(nèi)容。Java
61、Script 可被用來驗(yàn)證數(shù)據(jù),在數(shù)據(jù)被提交到服務(wù)器之前,JavaScript 可被用來驗(yàn)證這些數(shù)據(jù)。JavaScript 可被用來檢測訪問者的瀏覽器,JavaScript 可被用來檢測訪問者的瀏覽器,并根據(jù)所檢測到的瀏覽器,為這個瀏覽器載入相應(yīng)的頁面。JavaScript 可被用來創(chuàng)建 cookies,JavaScript 可被用來存儲和取回位于訪問者的計(jì)算機(jī)中的信息。</p><p> c.JavaScri
62、pt標(biāo)簽</p><p> HTML的<script>標(biāo)簽用于把Javascript插入到HTML頁面當(dāng)中。如果需要把一段 JavaScript 插入 HTML 頁面,需要使用 <script> 標(biāo)簽(同時使用 type 屬性來定義腳本語言)。這樣,<script type="text/javascript"> 和 </script> 就可以告
63、訴瀏覽器 JavaScript 從何處開始,到何處結(jié)束。</p><p> d.JavaScript放置位置</p><p> JavaScript放置的位置。你可以在文檔中放置任何數(shù)量的腳本,因此你既可以把腳本放置到 body,又可以放置到 head 部分。當(dāng)頁面載入時,會執(zhí)行位于body部分的JavaScript;當(dāng)被調(diào)用時,位于head部分的JavaScript才會被執(zhí)行,也就是
64、將腳本內(nèi)容或者成為函數(shù)寫到head部分,在載入頁面的時候會先將腳本內(nèi)容載入,然后再在后面的執(zhí)行過程中調(diào)用腳本內(nèi)容,Body部分的腳本內(nèi)容會在載入頁面的時候就執(zhí)行;還有一種是訪問外部腳本,可以把 .js 文件放到網(wǎng)站目錄中通常存放腳本的子目錄中,這樣更容易管理和維護(hù)。</p><p> e.JavaScript語句</p><p> JavaScript語句。JavaScript 語句是
65、發(fā)給瀏覽器的命令。這些命令的作用是告訴瀏覽器要做的事情。下面主要列舉幾種常用語句:</p><p> 聲明(創(chuàng)建)JavaScript變量:在 JavaScript 中創(chuàng)建變量經(jīng)常被稱為“聲明”變量??梢酝ㄟ^ var 語句來聲明 JavaScript 變量。</p><p> JavaScript消息框:可以在 JavaScript 中創(chuàng)建三種消息框:警告框、確認(rèn)框、提示框。</
66、p><p> 警告框:警告框經(jīng)常用于確保用戶可以得到某些信息。當(dāng)警告框出現(xiàn)后,用戶需要點(diǎn)擊確定按鈕才能繼續(xù)進(jìn)行操作。語法格式為:alert("文本")。</p><p> 確認(rèn)框:確認(rèn)框用于使用戶可以驗(yàn)證或者接受某些信息。當(dāng)確認(rèn)框出現(xiàn)后,用戶需要點(diǎn)擊確定或者取消按鈕才能繼續(xù)進(jìn)行操作。如果用戶點(diǎn)擊確認(rèn),那么返回值為 true。如果用戶點(diǎn)擊取消,那么返回值為 false。
67、語法格式為:confirm("文本")。</p><p> 提示框:提示框經(jīng)常用于提示用戶在進(jìn)入頁面前輸入某個值。當(dāng)提示框出現(xiàn)后,用戶需要輸入某個值,然后點(diǎn)擊確認(rèn)或取消按鈕才能繼續(xù)操縱。如果用戶點(diǎn)擊確認(rèn),那么返回值為輸入的值。如果用戶點(diǎn)擊取消,那么返回值為 null。語法格式為:prompt("文本","默認(rèn)值")。</p><p&
68、gt; f.JavaScript事件</p><p> JavaScript中的事件。JavaScript 使有能力創(chuàng)建動態(tài)頁面。事件是可以被 JavaScript 偵測到的行為。網(wǎng)頁中的每個元素都可以產(chǎn)生某些可以觸發(fā) JavaScript 函數(shù)的事件。比方說,可以在用戶點(diǎn)擊某按鈕時產(chǎn)生一個 onClick 事件來觸發(fā)某個函數(shù)。事件在 HTML 頁面中定義。列舉一些JavaScript事件如下:鼠標(biāo)點(diǎn)擊;頁面
69、或圖像載入;鼠標(biāo)懸浮于頁面的某個熱點(diǎn)之上;在表單中選取輸入框;確認(rèn)表單;鍵盤按鍵等。</p><p> 2.2.3 跨站腳本產(chǎn)生的原因</p><p> 跨站腳本產(chǎn)生的原因,是Web應(yīng)用程序過度信賴用戶的輸入,CGI程序沒有對用戶提交的變量中的HTML代碼進(jìn)行過濾和轉(zhuǎn)換。CGI輸入有兩種形式,顯示輸入和隱式輸入。其中顯示輸入明確要求用戶輸入數(shù)據(jù),而隱式輸入則本來并不要求用戶輸入數(shù)據(jù),但
70、是用戶卻可以通過輸入數(shù)據(jù)來進(jìn)行干涉。顯示輸入又可以分為兩種,輸入完成立刻輸出結(jié)果;輸入完成先存儲在文本文件或數(shù)據(jù)庫中,然后再輸出結(jié)果,后者可能會讓網(wǎng)站面目全非。從引起跨站腳本的觸發(fā)原因分為以下兩種。</p><p><b> a.閉合標(biāo)簽</b></p><p> 瀏覽的網(wǎng)頁全部都是基于超文本標(biāo)記語言HTML創(chuàng)建的HTML文檔。XSS的原理也就是往HTML文檔中注
71、入腳本,HTML指定了腳本標(biāo)記<script></script>。在沒有過濾字符的情況下,只需要保持完整無錯的腳本標(biāo)記即可觸發(fā)XSS,假如在某個資料表單提交內(nèi)容,表單提交內(nèi)容就是某個標(biāo)記屬性所賦的值,可以構(gòu)造閉合標(biāo)記來構(gòu)造完整無錯的腳本標(biāo)記。例如HTML文檔中的一個超鏈接:</p><p> <A HREF="http://safe.it168.com">
72、IT168安全頻道</A></p><p> 就可以構(gòu)造閉合標(biāo)記:</p><p> "><script>alert('XSS');</script><"</p><p> 結(jié)果形成了<A HREF=""><script>alert(
73、'XSS');</script>。這樣就產(chǎn)生了跨站腳本。</p><p> 綜上所述,測試閉和表單賦值所在的標(biāo)記,形成完整無錯的腳本標(biāo)記可觸發(fā)XSS。</p><p><b> 標(biāo)簽屬性賦值</b></p><p> 有些時候是沒有腳本標(biāo)記的,這時可以利用其他標(biāo)記,假如要在網(wǎng)頁里顯示一張圖片,那么就要使用一個&
74、lt;img>標(biāo)記,示例如下:</p><p> <img src="http://www.***.com/xss.gif"></p><p> img標(biāo)記并不是真正地把圖片給加入到Html文檔把兩者合二為一,而是通過src屬性賦值。那么瀏覽器的任務(wù)就是解釋這個img標(biāo)記,訪問src屬性所賦的值中的URL地址并輸出圖片。瀏覽器不會檢測src屬性所賦
75、的值,這時可以利用JavaScript腳本語言的一個URL偽協(xié)議,觸發(fā)跨站腳本。URL偽協(xié)議說明符為”javascript:”,這種協(xié)議說明符加上任意的javascript代碼,當(dāng)瀏覽器裝載這樣的URL時,便會執(zhí)行其中的代碼。于是就得出了一個經(jīng)典的XSS示例:</p><p> <img src="javascript:alert('XSS');"></p&
76、gt;<p> 構(gòu)造過程如下:首先尋找到?jīng)]有驗(yàn)證和過濾客戶端輸入的輸入圖片處,然后用記事本寫下如下代碼:<img src="javascript:alert('XSS');">,然后修改創(chuàng)建的文件的格式為可以上傳的圖片的格式,這樣便有可能觸發(fā)跨站腳本,如下圖2-1:</p><p> 圖2- 1跨站腳本觸發(fā)圖</p><p>
77、; 當(dāng)然并不是所有標(biāo)記的屬性都能用,標(biāo)記的屬性在訪問文件才觸發(fā)的XSS,離開標(biāo)記的屬性還有事件能幫助觸發(fā)XSS。只有達(dá)到某個條件才會引發(fā)事件,正巧img標(biāo)記有一個可以利用的onerror()事件,當(dāng)img標(biāo)記內(nèi)含有一個onerror()事件而正好圖片沒有正常輸出便會觸發(fā)這個事件,而事件中可以加入任意的腳本代碼,其中的代碼也會執(zhí)行.現(xiàn)在又得到了另外一個經(jīng)典的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> 跨站腳本成因總結(jié)</b></p><p> 由此可見,觸發(fā)一個XSS漏洞就是利用Web應(yīng)用程序中程序員的失誤,通過客戶端影響Web服務(wù)器的輸出,即修改Web服務(wù)器傳送給客戶端的HTML,而要達(dá)到觸發(fā)一個XSS跨站腳本的目的,就必須從用戶的輸入入手,將輸入值插入到服務(wù)
80、器返回給的HTML文檔中,這個輸入值是包含HTML語言或者JavaScript語言或者其他腳本語言的合法的值,這個輸入值沒有被GUI程序檢驗(yàn)和過濾。構(gòu)造出完整無錯的腳本標(biāo)記。構(gòu)造的過程可能是:直接構(gòu)造出完整無錯的腳本標(biāo)記,或者通過訪問文件的標(biāo)記屬性和觸發(fā)事件來構(gòu)造。 </p><p> 需要補(bǔ)充一點(diǎn)的是,Web應(yīng)用程序在開發(fā)過程中,是應(yīng)該采用一定的安全策略的。那就是當(dāng)JavaScript的使用者同時開啟多個瀏覽
81、器視窗時,在有些時候,網(wǎng)頁里面的片段程式碼被允許從另一個網(wǎng)頁取出,所以某些惡意網(wǎng)站可以用這個方法來嘗試竊取機(jī)密信息。這應(yīng)當(dāng)是被禁止的,為了解決這個問題,瀏覽器采用了允許來自相同網(wǎng)域名稱系統(tǒng)和使用相同協(xié)定的網(wǎng)頁之間進(jìn)行互動,而不允許不相同網(wǎng)域域名系統(tǒng)和使用不相同協(xié)定的網(wǎng)頁之間進(jìn)行互動,這樣就使得惡意網(wǎng)站無法借由Javascript在另一個瀏覽器竊取機(jī)密資料。這就是使用“同源策略”保護(hù)受害者免受惡意的危害。然而有些網(wǎng)站不能正確實(shí)現(xiàn)同源策略或
82、者說同源策略本身也存在弱點(diǎn),攻擊者就可以利用這些去發(fā)現(xiàn)可以巧妙的注入惡意指令碼到其他網(wǎng)頁的方法,從而可以得到更高的特權(quán),竊取機(jī)密的網(wǎng)頁內(nèi)容、會談的cookie、以及許多其他的物件。</p><p> 2.3跨站腳本的分類</p><p> 上面一小節(jié)已經(jīng)詳細(xì)闡述了跨站腳本的成因,下面將闡述一下跨站腳本的分類。跨站腳本的實(shí)質(zhì)是注入的問題,現(xiàn)在并沒有一個單一的,標(biāo)準(zhǔn)的分類方法。但是許多專家
83、將跨站腳本分為至少兩大類:Non-persistent(非持久型)和Persistent(持久型)。</p><p> 2.3.1 Non-persistent(非持久型)</p><p> 這種跨站腳本又被稱為反射型跨站腳本。如果Web客戶端提供的數(shù)據(jù)立即被服務(wù)器端腳本所使用,生成并返回給用客戶端結(jié)果頁面,而服務(wù)器端腳本在使用這些數(shù)據(jù)之前沒有正確的審查這些數(shù)據(jù)。就有可能導(dǎo)致客戶端代碼
84、注入到返回的結(jié)果頁面中。如Web客戶端提供的HTTP查詢參數(shù)或者提供的HTML表單未被正確的審核卻被立即使用時。</p><p> 一個典型的例子是一個網(wǎng)站的搜索引擎:搜索一個字符串,搜索的字符串又被原封不動地重新顯示在結(jié)果頁中逐字說明是什么搜索。如果搜索引擎沒有對搜索的字符串進(jìn)行正確的審核,就有可能導(dǎo)致一個非持久型的跨站腳本。本文將重點(diǎn)研究此種類型的漏洞。</p><p> 針對此類
85、漏洞,攻擊者可以構(gòu)造具威脅性的攻擊代碼,并騙取受害用戶點(diǎn)擊</p><p> 生成的鏈接,從而危害到用戶的安全。</p><p> 2.3.2 Persistent(持久型)</p><p> 持久型跨站腳本又被稱為存儲型跨站腳本,它是一個跨站腳本更具破壞力的變體:攻擊者提供的數(shù)據(jù)被保存在服務(wù)器中,然后在其他用戶常規(guī)的瀏覽過程中,持久地顯示在返回給用戶的正常的
86、網(wǎng)頁結(jié)果中。</p><p> 這種類型的跨站腳本的執(zhí)行過程和非持久型的執(zhí)行過程類似,但是它的危害更加嚴(yán)重,因?yàn)楣粽叩哪_本自動提交,而不需要引誘目標(biāo)受害人點(diǎn)擊攻擊者的第三方網(wǎng)站。而且,攻擊者利用持久型跨站腳本時,只需要進(jìn)行一次腳本注入就能引發(fā)多次攻擊事件??缯灸_本蠕蟲便是利用這類漏洞編寫的。尤其是在社交網(wǎng)站的情況下,代碼將進(jìn)一步設(shè)計(jì)并自行在賬戶上宣傳,營造出一個客戶端的蠕蟲病毒類型。</p>&
87、lt;p> 2.4跨站攻擊與跨站腳本的危害</p><p> 2.4.1 跨站攻擊</p><p> 跨站攻擊,即Cross Site Script Execution(通常簡寫為XSS)是指攻擊者利用網(wǎng)站程序?qū)τ脩糨斎脒^濾不足,輸入可以顯示在頁面上對其他用戶造成影響的HTML代碼,從而盜取用戶資料、利用用戶身份進(jìn)行某種動作或者對訪問者進(jìn)行病毒侵害的一種攻擊方式。利用跨站腳本進(jìn)
88、行跨站攻擊,一般會有以下幾種危害:</p><p> 獲取其他用戶Cookie中的敏感數(shù)據(jù)</p><p><b> 屏蔽頁面特定信息</b></p><p><b> 偽造頁面信息</b></p><p><b> 拒絕服務(wù)攻擊</b></p><
89、p> 突破外網(wǎng)內(nèi)網(wǎng)不同安全設(shè)置</p><p> 和其他漏洞結(jié)合,修改系統(tǒng)設(shè)置,查看文件系統(tǒng),執(zhí)行系統(tǒng)命令等</p><p><b> g.其他</b></p><p> 2.4.2 跨站腳本的利用模式</p><p> 針對每一類漏洞不同的特點(diǎn),攻擊者利用上述幾類跨站點(diǎn)腳本漏洞時會有特定的利用模式。下面
90、將分別敘述。</p><p> 非持久型跨站腳本的典型利用模式如下:</p><p> a.Alice經(jīng)常瀏覽Bob所有的某個網(wǎng)站。Alice使用自己的用戶名和口令進(jìn)行登錄,并儲存了敏感信息(如:銀行賬戶信息);</p><p> b.Mallory發(fā)現(xiàn)Bob的站點(diǎn)中存在反射型跨站腳本;</p><p> c.Mallory構(gòu)造一個利
91、用</p><p> f.此漏洞的惡意URL,并將其冒充為來自Bob的郵件發(fā)送給Alice;</p><p> g.Alice在登錄到Bob的站點(diǎn)后,打開了Mallory提供的URL;</p><p> h.嵌入到URL中的惡意腳本會在Alice的瀏覽器中執(zhí)行;而對Alice而言,</p><p> 這段腳本就像直接來自Bob的服務(wù)器
92、一樣。此腳本會竊取Alice的敏感信</p><p> 息,然后在Alice完全不知情的情況下將這些信息發(fā)送到Mallory的站</p><p><b> 點(diǎn)或信箱中。</b></p><p> 持久型跨站腳本的典型利用模式如下:</p><p> a.Bob擁有一個Web站點(diǎn),這站點(diǎn)允許用戶發(fā)布信息,同時瀏覽已
93、發(fā)布的信</p><p><b> 息;</b></p><p> b.Mallory注意到Bob的站點(diǎn)中存在存儲型跨站腳本;</p><p> c.Mallory發(fā)布一個熱點(diǎn)信息,誘導(dǎo)其它用戶點(diǎn)擊閱讀;</p><p> d.大量用戶在瀏覽此信息時,其會話cookies或者其它證書在不知不覺中</p>
94、;<p> 被Mallory盜走;</p><p> e.Mallory以其它用戶的身份登錄站點(diǎn),繼續(xù)發(fā)布惡意信息。</p><p><b> 2.5本章小結(jié)</b></p><p> 本章跨站腳本分析介紹了跨站腳的相關(guān)理論知識,尤其是從漏洞產(chǎn)生的根源深入分析了跨站腳本的成因,然后又分別介紹了跨站腳本的分類和跨站腳本的危害
95、。其中跨站腳本產(chǎn)生的原因是深入理解模糊測試技術(shù)的一個重要的基礎(chǔ)。</p><p> 第3章 Web模糊測試技術(shù)</p><p> 模糊測試技術(shù)是國際上最近興起的漏洞挖掘技術(shù),以其自身的方便性和有效性迅速得到了廣大技術(shù)人員的青睞,Web模糊測試技術(shù)是一種自動化的黑盒測試技術(shù),在Web應(yīng)用程序安全測試過程中和Web應(yīng)用程序漏洞挖掘過程中的重要作用得到了越來越多的人的重視。</p>
96、;<p> 3.1 HTTP狀態(tài)碼和信息頭</p><p> 當(dāng)一個Web服務(wù)器響應(yīng)一個請求時,它包含一個三位數(shù)字碼以確定請求的狀態(tài)。狀態(tài)碼的完整列表可以在RFC2616-超文本傳輸協(xié)議-HTTP/1.1 的第十部分找到。這些狀態(tài)碼可以提供線索以確定哪些模糊請求需要進(jìn)一步加以研究。例如,Internet服務(wù)器錯誤的狀態(tài)碼500可能會提示前面的模糊請求導(dǎo)致了服務(wù)器的錯誤。同樣,未授權(quán)錯誤的狀態(tài)碼4
97、01則提示一個被請求的頁是存在的,但是是受密碼保護(hù)的。</p><p> 已經(jīng)提到HTML狀態(tài)碼是一個非常重要的信息,因?yàn)樗鼈儗Τ跏颊埱蟮某晒蚴√峁┝艘环N快捷的可視化的指示。因此,WebFuzz解析原始響應(yīng)以識別狀態(tài)碼,然后該狀態(tài)碼被單獨(dú)顯示在一個表中以詳細(xì)描述所有的響應(yīng)。使用此信息,用戶可以迅速的識別出應(yīng)當(dāng)被進(jìn)一步詳細(xì)研究的那些響應(yīng)。</p><p> HTTP協(xié)議定義了許多頭信
98、息,而每個頭信息則有一些可以接受的值。本課題中研究的有如下一些:</p><p> Accept頭信息:指定了可以在響應(yīng)中使用的媒體類型。</p><p> Accept-Language:允許用戶指定可以在響應(yīng)中使用的自然語言的類型。</p><p> User-Agent:定義了發(fā)出請求的客戶端(Web瀏覽器)。</p><p>
99、 Host頭信息:該頭信息定義了為被請求的Web頁提供服務(wù)的主機(jī)和端口。</p><p> Connection頭信息:允許客戶端指定連接所需要的不同選項(xiàng)。</p><p> Cookies:可以在計(jì)算機(jī)的本地硬盤或者內(nèi)存中被保存一段指定的時間,當(dāng)前任務(wù)完成之后它們將被拋棄。</p><p> 這些頭信息都可以被作為模糊化測試的變量。</p>&
100、lt;p> 3.2 模糊測試原理</p><p> Fuzzing,模糊測試技術(shù)是指,通過模糊器,產(chǎn)生大量半有效數(shù)據(jù),將其作為輸</p><p> 入內(nèi)容發(fā)送給應(yīng)用程序,并觀察在運(yùn)行過程中是否有可能發(fā)生諸如崩潰、信息泄露、延遲等各種錯誤,從而判定該應(yīng)用程序中是否存在漏洞的技術(shù);其通用工作流程如圖3-1所示。</p><p> 圖3- 1 模糊器通用工作
101、流程圖</p><p> 在一定意義上,可以將Fuzzing技術(shù)視為一種測試的內(nèi)容均為負(fù)面情形的軟件質(zhì)量測試技術(shù)。Fuzzing技術(shù)在大多數(shù)情況下用于發(fā)現(xiàn)安全漏洞,從而增強(qiáng)應(yīng)用程序的可靠性。</p><p> 3.3 模糊器功能需求分析</p><p> Web應(yīng)用程序模糊測試是一種特殊形式的網(wǎng)絡(luò)協(xié)議模糊測試,網(wǎng)絡(luò)協(xié)議模糊測試將任意的網(wǎng)絡(luò)包進(jìn)行變異,而Web應(yīng)
102、用模糊測試則特別關(guān)注于遵循HTTP規(guī)范的包。將應(yīng)用所學(xué)的知識,開發(fā)一個圖形化的Web應(yīng)用模糊器WebFuzz,下面來介紹一下該應(yīng)用程序的功能需求。</p><p><b> 3.3.1 請求</b></p><p> 對一個Web應(yīng)用進(jìn)行模糊測試,需要有一種方式來向它發(fā)送請求,通常情況下,使用一個Web瀏覽器同Web服務(wù)器進(jìn)行通信,它知道如何利用HTTP進(jìn)行通信,
103、并且能夠?qū)⑺须s亂的細(xì)節(jié)信息組裝成一個HTTP請求,當(dāng)使用模糊器進(jìn)行測試的時候,需要這些信息,來改變請求的所有方面,因此需要將原始請求暴露給終端用戶,并允許對其中的任何部分進(jìn)行模糊化。該請求包括以下字段:主機(jī),端口,超時,請求頭,其中將請求的所有組成部分保持在一個段可寫的文本字段中,從而從終端控制請求的各個方面。各字段介紹如下:</p><p><b> 主機(jī)</b></p>
104、<p> 目標(biāo)機(jī)器的名字和IP地址是所需要的一個字段。對一個Web應(yīng)用進(jìn)行模糊測試,需要知道WebFuzz向何處發(fā)送請求。這不是一個可以進(jìn)行模糊測試的字段。</p><p><b> 端口:</b></p><p> 盡管Web應(yīng)用在默認(rèn)情況下運(yùn)行在TCP端口80,然而它們也可以方便的運(yùn)行在其它任意的TCP端口。實(shí)際上,通常將Web應(yīng)用設(shè)計(jì)為提供一個
105、基于Web的管理控制臺,以使其運(yùn)行在一個可選的端口而不干擾主要的Web服務(wù)器。同主機(jī)名一樣,端口字段也是告訴WebFuzz向何處發(fā)送請求,同時,它也不是一個可以進(jìn)行模糊測試的字段。</p><p><b> 超時</b></p><p> 由于的目的是發(fā)送非標(biāo)準(zhǔn)的Web請求,因此,目標(biāo)應(yīng)用程序通常不會以一種及時的方式來作出響應(yīng)。因此,包含了一個用戶定義的、以毫秒計(jì)
106、的超時值。當(dāng)記錄一個請求的響應(yīng)超時時,這種記錄是非常重要的,因?yàn)樗梢灾该鞯恼埱笫沟媚繕?biāo)程序離線,從而導(dǎo)致一個潛在的DoS漏洞。</p><p><b> 請求頭</b></p><p> 這是操作執(zhí)行的起點(diǎn)。當(dāng)使用一個Web瀏覽器時,終端用戶可以控制目標(biāo)主機(jī)、端口以及請求URI,但卻不能控制所有不同的頭信息。有意將請求的所有組成部分保持在一個單獨(dú)的可寫的文本字段
107、中,因?yàn)橄MK端用戶能夠控制請求的各個方面。可以通過簡單的將所需要的請求敲進(jìn)請求頭字段中來手工的創(chuàng)建一個請求。另外,如果你傾向于使用點(diǎn)擊的方法,那么也可以使用上下文菜單中所提供的標(biāo)準(zhǔn)頭列表來拼湊一個頭。最后一個選項(xiàng)是如果默認(rèn)Web頁需要一個基本請求,那么允許從上下文菜單中選擇默認(rèn)頭。</p><p> 3.3.2 模糊變量</p><p> 模糊變量是指在請求中將要被模糊數(shù)據(jù)所代替的那
108、些區(qū)域。對發(fā)送給Web服務(wù)器的原始請求有著完整的控制權(quán)。模糊變量需要被直接添加到原始請求中,并通過方括號中的變量名來識別。設(shè)計(jì)創(chuàng)建模糊變量的函數(shù)時,可以將他們劃分為兩個基本類型,靜態(tài)列表或生成變量。還可以在一個單一的請求中定義多個模糊變量。</p><p><b> 3.3.3 響應(yīng)</b></p><p> WebFuzz捕獲所有的響應(yīng)結(jié)果并將其以原始格式保存。
109、的工具WebFuzz需要將所有的響應(yīng)結(jié)果捕獲并將其以原始格式保存。用不同的格式來靈活地顯示響應(yīng)。特別的是可以查看HTML。通過查看相應(yīng)可以發(fā)現(xiàn)漏洞線索。</p><p> 3.4 模糊器框架設(shè)計(jì)</p><p> 文WebFuzz模糊測試工具采取了Fuzzing技術(shù),要對Web應(yīng)用程序和服務(wù)器進(jìn)行模糊測試,首先要給定一個Web應(yīng)用的入口網(wǎng)址,或者最好是直接給出需要測試網(wǎng)頁的具體網(wǎng)址。對
110、單個網(wǎng)頁的漏洞挖掘流程如下圖3-2所示:</p><p> 圖3- 2 對單個網(wǎng)頁的漏洞挖掘流程</p><p> 其中響應(yīng)信息中可能存在的特定數(shù)據(jù)一般是和畸形數(shù)據(jù)相對應(yīng)的一段腳本語言代碼。一般情況下,只需要檢測服務(wù)器響應(yīng)信息中是否存在上述字段,就可以大致判斷是否存漏洞。然而,如果攻擊向量的選擇不當(dāng),或沒有充分判斷服務(wù)器對攻擊向量各種可能的響應(yīng)情況,則有可能出現(xiàn)一定程度的漏報(bào)和誤報(bào)。因
111、此,為保證工具的運(yùn)行效果,應(yīng)對攻擊向量和其作用結(jié)果進(jìn)行深入分析。WebFuzz對于單個網(wǎng)頁的挖掘思路也正如上所述。進(jìn)一步的,WebFuzz實(shí)現(xiàn)了漏洞挖掘的自動化。</p><p> 從供給者角度出發(fā),通過模擬一次真實(shí)的攻擊事件對服務(wù)器的業(yè)務(wù)處理進(jìn)行分析,從而實(shí)現(xiàn)漏洞檢測。如下圖3-3所示。</p><p> 圖3- 3 漏洞檢測流程</p><p> WebF
112、uzz模糊測試工具主要由生成攻擊模塊和響應(yīng)分析模塊構(gòu)成,完成測試,而漏洞檢測的前期測試模塊主要是為了尋找測試的切入點(diǎn)。 </p><p> 3.5 模糊器設(shè)計(jì)核心函數(shù)</p><p> 模糊器設(shè)計(jì)涉及到的核心類或者方法有入口函數(shù)、Web應(yīng)用程序窗體框架類frmWebFuzz、發(fā)送網(wǎng)絡(luò)數(shù)據(jù)請求的sendRequest類、構(gòu)造畸形數(shù)據(jù)的構(gòu)造器類Generate、讀取文件的類Read、以及記
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 通信專業(yè)畢業(yè)論文----gsm網(wǎng)絡(luò)優(yōu)化
- 計(jì)算機(jī)專業(yè)畢業(yè)論文(網(wǎng)絡(luò))
- 網(wǎng)絡(luò)營銷專業(yè)畢業(yè)論文較詳細(xì)
- 通信專業(yè)畢業(yè)論文--wlan網(wǎng)絡(luò)質(zhì)量測試與網(wǎng)絡(luò)優(yōu)化
- 輪機(jī)工程專業(yè)畢業(yè)論文畢業(yè)論文
- 冶金專業(yè)畢業(yè)論文
- 模具專業(yè)畢業(yè)論文
- 采礦專業(yè)畢業(yè)論文
- 汽車專業(yè)畢業(yè)論文
- 焊接專業(yè)畢業(yè)論文
- 汽車專業(yè)畢業(yè)論文
- 導(dǎo)游專業(yè)畢業(yè)論文
- 鑄造專業(yè)畢業(yè)論文
- 廣告專業(yè)畢業(yè)論文
- 口腔專業(yè)畢業(yè)論文
- 土建專業(yè)畢業(yè)論文
- 汽修專業(yè)畢業(yè)論文.
- 化學(xué)專業(yè)畢業(yè)論文
- 水利專業(yè)畢業(yè)論文
- 農(nóng)學(xué)專業(yè)畢業(yè)論文
評論
0/150
提交評論