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