国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

廈門SEO_廈門網(wǎng)站建設長春網(wǎng)站關鍵詞排名

廈門SEO_廈門網(wǎng)站建設,長春網(wǎng)站關鍵詞排名,wordpress 字符串函數(shù),北京工程信息交易網(wǎng)摘 要 隨著Web2.0、社交網(wǎng)絡、微博等一系列新型的互聯(lián)網(wǎng)產(chǎn)品的誕生,基于Web環(huán)境的互聯(lián)網(wǎng)應用越來越廣泛,企業(yè)信息化的過程中各種應用都架設在Web平臺上。Web應用的迅速發(fā)展也引起黑客們的強烈關注,接踵而至的就是Web安全威脅的凸顯&#xff…

摘 要

隨著Web2.0、社交網(wǎng)絡、微博等一系列新型的互聯(lián)網(wǎng)產(chǎn)品的誕生,基于Web環(huán)境的互聯(lián)網(wǎng)應用越來越廣泛,企業(yè)信息化的過程中各種應用都架設在Web平臺上。Web應用的迅速發(fā)展也引起黑客們的強烈關注,接踵而至的就是Web安全威脅的凸顯,黑客利用Web應用程序的漏洞得到Web服務器的控制權限,輕則篡改網(wǎng)頁內容,重則竊取重要內部數(shù)據(jù),更為嚴重的則是在網(wǎng)頁中植入惡意代碼,使得網(wǎng)站訪問者受到侵害[1]。

針對上述問題,本文在分析了Web應用安全漏洞的基本原理及其產(chǎn)生原因的基礎上,介紹了漏洞掃描方法及現(xiàn)有的漏洞掃描器掃描關鍵技術,針對現(xiàn)有Web應用安全漏洞掃描工具的不足,提出了一種高效的基于優(yōu)化爬蟲的Web應用漏洞掃描機制?;诒疚奶岢龅穆┒磼呙铏C制,為典型的Web漏洞XSS漏洞及SQL注入漏洞設計了掃描方法,并實現(xiàn)了SQL注入漏洞和XSS漏洞的掃描。設計實現(xiàn)了一款基于SAAS模式的可用性高,可擴展性高,性能良好的Web應用安全漏洞掃描器。本文主要工作如下:

1.分析各種不同的 Web 應用程序漏洞的特性以及 Web 應用漏洞的掃描技術。

尤其詳細剖析了漏洞出現(xiàn)次數(shù)最多的 SQL 注入漏洞,XSS 漏洞,信息泄漏漏洞,包括產(chǎn)生原因,攻擊方式,檢測方法和防御方法等等。

  1. 研究網(wǎng)絡爬蟲技術,設計了一種基于廣度優(yōu)先策略的優(yōu)化網(wǎng)絡爬蟲算法,使得它它不僅能夠抓取網(wǎng)頁,還能對網(wǎng)頁進行解析,并且有效去重。運用正則表達式的方法,提取出網(wǎng)站的所有的可輸入域,其中還要對網(wǎng)址進行 URL 標準格式化,URL 過濾,URL參數(shù)變換,增強了系統(tǒng)的性能。

  2. 設計出 Web 應用漏洞掃描器;實現(xiàn)了對 SQL 注入漏洞,XSS 漏洞和目錄遍歷漏洞的掃描功能,采用漏洞信息庫,作為

基于Web應用安全漏洞掃描器的掃描結果,表明該掃描方法能夠有效的掃描SQL注入和XSS漏洞,同時也驗證了本文設計的Web應用漏洞掃描機制的有效性和可行性。

關鍵詞:Web應用安全,安全漏洞,漏洞掃描,SQL注入,XSS漏洞

Abstract

With the birth of a series of new Internet products such as Web2.0, social networks, and Weibo, Internet applications based on the Web environment have become more and more extensive, and various applications in the process of enterprise informatization have been set up on the Web platform. The rapid development of Web applications has also caused hackers to pay close attention. The following is the highlight of Web security threats. Hackers use Web application vulnerabilities to gain control of Web servers, falsify Web content, and steal important internal data. The more serious is the implantation of malicious code on web pages that infringe website visitors.

Web application penetration testing technology is an extremely effective active defense technology developed under the security environment at home and abroad in recent years. Through penetration testing, Web security vulnerabilities can be discovered as early as possible and operators can be alerted to prevent them from being repaired.The Web application security vulnerability scanner is an important tool in the Web application penetration testing process. It can effectively assist the tester through automation or a combination of manual and automated methods to reduce the workload of the tester. Web application vulnerability scanners complement intrusion detection systems and firewalls, which together form the security defenses of Web systems. The design of Web application vulnerability scanner can help people to conduct self-check on the website system, find problems and prevent hackers from intruding. It can also be used as a tool for penetration testing with professional security personnel to save labor costs. Therefore, the study of vulnerability scanning technology is extremely important.

This paper elaborates the basic principles and causes of Web application security vulnerabilities, introduces vulnerability detection methods and existing key scanner detection technologies, and proposes a solution to the weaknesses of existing Web application security vulnerability detection tools. An efficient web application vulnerability detection mechanism based on optimized crawler and feature recognition. Based on the vulnerability detection mechanism proposed in this paper, a detection method is designed for typical Web vulnerability XSS vulnerability and SQL injection vulnerability, and the detection of SQL injection vulnerability and XSS vulnerability is implemented. Design and implement a vulnerability scanner based on SAAS model with high availability, high scalability and good performance for Web application security.

The detection result based on Web application security vulnerability scanner shows that this detection method can effectively detect SQL injection and XSS vulnerabilities. It also verifies the validity and feasibility of the Web application vulnerability detection mechanism proposed in this paper.

Keyword: Web Application Security,Security Vulnerabilitiy, Vulnerability Scan, SQL Injection, XSS Vulnerability

表格索引

表 2.1 OWASP Top 107

表 2.2 掃描器三大指標與準確率對比表11

表 3.1 常見HTTP請求方法24

表 3.2 常見HTTP狀態(tài)碼24

表 3.3 常見字符集及定義方式26

表 4.1 本文設計漏洞掃描器與其他兩款掃描器掃描結果對比表38

插圖索引

圖 2.1 網(wǎng)絡爬蟲流程圖6

圖 3.1 Web應用安全漏洞掃描器系統(tǒng)架構圖14

圖 3.2 Web應用安全漏洞掃描器功能架構圖15

圖 3.3 優(yōu)化網(wǎng)絡爬蟲流程圖17

圖 3.4 SQL注入漏洞掃描流程圖18

圖 3.5 XSS漏洞掃描流程圖20

圖 3.6 任務調度流程圖21

圖 3.7 TCP-Connect掃描截圖22

圖 3.8 TCP-SYN掃描截圖23

圖 3.9 UDP掃描截圖23

圖 3.10 爬蟲模塊類圖25

圖 3.11 SQL注入漏洞掃描類圖27

圖 3.12 XSS漏洞掃描類圖29

圖 3.13 任務調度模塊類圖30

圖 4.1 Web應用安全漏洞掃描器部署圖33

圖 4.2 SQL注入漏洞測試環(huán)境34

圖 4.3 XSS漏洞測試環(huán)境34

圖 4.4 掃描結果35

圖 4.5 漏洞分布情況展示36

圖 4.6 添加新任務36

圖 4.7 掃描隊列37

圖 4.8 登錄界面37

圖 4.9 漏洞報告38


目 錄

摘 要I

AbstractIII

表格索引V

插圖索引VII

第一章 緒論1

1.1 選題背景及意義1

1.2 國內外現(xiàn)狀分析2

1.3 論文工作內容3

1.4 論文組織結構3

第二章 Web應用安全漏洞掃描技術概述5

2.1 網(wǎng)絡爬蟲與Web應用程序基礎5

2.1.1 基本概念5

2.1.2 爬取策略5

2.1.3 爬蟲在漏洞掃描中的作用6

2.1.4 HTTP 協(xié)議模型7

2.1.5 Web 應用體系結構7

2.2 安全漏洞8

2.2.1 基本概念8

2.2.2 漏洞類型9

2.2.3 漏洞檢測技術12

2.2.4 Web 應用漏洞產(chǎn)生的原因14

2.2.5 Web 應用漏洞的分布15

2.2.6 Web 應用漏洞的風險評估15

2.3 國內外漏洞掃描器研究分析16

2.3.1 分析目的16

2.3.2 影響準確率的三個因素16

2.3.3 對比總結17

2.4 Web 應用漏洞分析及其檢測方法18

2.4.1 SQL 注入漏洞18

2.4.2 XSS 漏洞19

2.4.3 目錄遍歷漏洞22

2.5 網(wǎng)絡爬蟲在掃描器中的應用23

2.5.1 聚焦爬蟲概念23

2.5.2 聚焦爬蟲技術分析23

2.6 本章小結24

第三章 Web應用安全漏洞掃描器分析設計與實現(xiàn)25

3.1 Web應用安全漏洞掃描器需求分析25

3.1.1 功能需求25

3.1.2 非功能需求27

3.2 Web應用安全漏洞掃描器系統(tǒng)應用架構設計28

3.3 Web應用安全漏洞掃描器系統(tǒng)功能設計29

3.3.1 網(wǎng)絡爬蟲模塊的優(yōu)化及設計29

3.3.2 SQL注入掃描模塊的設計32

3.3.3 XSS漏洞掃描模塊的設計33

3.3.4 任務調度模塊的設計35

3.3.5 可用性檢測模塊的設計35

3.3.6 插件機制的設計39

3.3.6 數(shù)據(jù)庫的設計41

3.4 Web應用安全漏洞掃描器系統(tǒng)功能實現(xiàn)42

3.4.1 爬蟲模塊的實現(xiàn)42

3.4.2 SQL注入漏洞掃描的實現(xiàn)45

3.4.3 XSS漏洞掃描的實現(xiàn)47

3.3.4 任務調度模塊的實現(xiàn)48

3.3.5 可用性檢測模塊的實現(xiàn)50

3.5 本章小結50

第四章 Web應用安全漏洞掃描器測試及分析51

4.1 測試環(huán)境51

4.1.1 掃描器部署環(huán)境51

4.1.2 漏洞測試環(huán)境51

4.2 測試過程53

4.2.1 功能測試53

4.2.2 非功能測試55

4.3 測試結果分析56

4.4 本章小結56

第五章 結束語59

5.1 論文工作總結59

5.2 后續(xù)工作展望59

致 謝61

參考文獻63

第一章 緒論

近年來,Web應用程序因其特有的優(yōu)點在數(shù)量和重要性方面都得到了快速發(fā)展,給人們的生活和工作各方面都帶來了極大的便利,但是同時Web應用程序也因其自身特點而引起了攻擊者的強烈關注,Web應用安全漏洞的數(shù)量和應用也逐漸增大,安全威脅日益凸顯。

1.1 選題背景及意義

Web 應用程序(Web Application)是指任意基于Web 運行,同時用戶交互頁面停留在 Web 瀏覽器中的應用程序,由于 Web 應用程序以其便捷,美觀和功能強大的特點廣泛地博得了用戶的青睞。在 Web1.0 時代,網(wǎng)站通過一種單向的信息發(fā)布方式和用戶打交道,首先它會把所有資源存放到服務器上,然后通過 Web 應用程序或其他網(wǎng)絡通信渠道發(fā)布,用戶會通過 Web 應用程序獲取相應的資源和信息。然而在 2004 年以后,Web2.0 應用的問世悄然改變了這種單向的信息傳遞方式,用戶不僅可以瀏覽 Web 頁面的內容更可以向服務器提交信息修改網(wǎng)頁的內容,這樣這些加強發(fā)布者和用戶交互性的特性讓用戶可以成為網(wǎng)頁內容的創(chuàng)造者。這些新技術提供給用戶電子商務、博客、社交網(wǎng)絡服務、即時通信、搜索等服務,極大地豐富了人們的生活與工作[4-5]。

信息共享與保證安全往往是一對矛盾,在一個自由的網(wǎng)絡環(huán)境中,大量的流動信息為一些不法之徒提供了攻擊目標。而且由于形式多樣性、終端分布廣、互聯(lián)開放的計算機網(wǎng)絡為攻擊者提供了便利,其中大量攻擊者利用 Web 應用程序的漏洞的惡意攻擊,給運營商和用戶帶來很大的威脅和損失[6]。因此為保障 Web應用程序安全及時發(fā)現(xiàn)漏洞并修補漏洞成為一項很重要的事情。Web 漏洞掃描技術是模仿攻擊者的行為去掃描Web應用程序的是否安全。它可以準確地發(fā)現(xiàn)Web應用程序中潛在的漏洞,而這也對于保障網(wǎng)絡安全也越來越重要。

由于 Web 應用程序的安全問題越來越突出,如何嚴謹?shù)脑u價安全的 Web應用程序,并且加強 Web 應用程序的管理有了更大的需求。入侵者可以利用廣泛潛在的漏洞入侵 Web 應用系統(tǒng),破壞網(wǎng)絡安全環(huán)境。而通過安全評估可以使人們更充分的了解漏洞所帶來的危害,將風險降到最低。Web 漏洞掃描技術是站在惡意攻擊者的角度去審視系統(tǒng)的安全性,能將其中潛在的風險扼殺在搖籃中,因此是一種比較有效的主動防御技術。通過對 Web 漏洞的形成和攻擊原理的研究,可以早日定位 Web 應用程序中存在的各種漏洞。在對目標站點進行掃描前,需要先設置目標站點的 URL 以及各種運行時參數(shù),而后啟動掃描器,一旦發(fā)現(xiàn)某些Web頁面包含特定的漏洞,掃描器會將該漏洞的詳細信息保存下來,并呈現(xiàn)在報表中,最后自動形成對目標站點的掃描報告[7]。這樣可以讓網(wǎng)站管理員和網(wǎng)站開發(fā)人員通過掃描特定的站點和相關 Web 網(wǎng)頁后知曉自己 Web 頁面的潛在威脅。能夠盡早幫助開發(fā)者發(fā)現(xiàn)問題,在網(wǎng)站發(fā)布前,就將所掃描到的漏洞全部修復,這樣可以大大減少由于 Web 應用程序漏洞而造成的損失和破壞。顯然,對 Web 漏洞掃描器的研究具有重要的理論意義和實用價值。

1.2 國內外現(xiàn)狀分析

當前,世界各國信息化都處在快速發(fā)展的階段,信息技術的應用促進了全球資源的優(yōu)化配置和發(fā)展模式的創(chuàng)新,互聯(lián)網(wǎng)對政治、經(jīng)濟、社會和文化的影響更加深刻,信息化滲透到國民生活的各個領域,圍繞信息獲取、利用和控制的國際競爭日趨激烈,保障信息安全成為各國的重要議題[8]。

國外政府高度重視對漏洞資源的管控,通過建立完善的國家漏洞管理體系,將漏洞資源納入國家管控機制。2006年,美國政府在ICAT Metabase(http://icat.nist.org)的基礎上建立了美國國家漏洞庫(National Vulnerability Database,NVD),由國土安全部(Department of Homeland Security,DHS)研究部署并提供建設資金,由美國國家標準與技術研究院(National Institute of Standards and Technology,NIST)負責技術開發(fā)和運維管理。2015年5月,美國商務部工業(yè)與安全局公布了“瓦森納協(xié)定”的一份補充協(xié)定,把黑客技術放入全球武器貿易條約出口限制的范圍內,限制零日漏洞及其相關產(chǎn)品流出美國。

中國政府也同樣高度重視網(wǎng)絡和信息安全問題,重視對信息安全漏洞的管控。2007年,中國信息安全測評中心負責建設運維國家級漏洞資源管理平臺“國家信息安全漏洞庫”(China National Vulnerability Database of Information Security,CNNVD)。2009年10月18日,國家信息安全漏洞庫網(wǎng)站正式上線運行,對外提供漏洞分析、通報服務。經(jīng)過多年發(fā)展建設,CNNVD通過社會提交、協(xié)作共享、網(wǎng)絡搜集以及技術掃描等方式,已積累信息技術產(chǎn)品漏洞8萬余條,信息系統(tǒng)相關漏洞4萬余條,相關補丁和修復措施2萬余條,初步形成了信息安全漏洞的資源匯聚和處置管理能力。

根據(jù)CNNVD統(tǒng)計,截至2015年12月31日,CNNVD收錄漏洞總量已達80300個,其中2015年新增漏洞7754個,與2014年漏洞新增的8623個相比有所下降,降幅為10.08%。從漏洞類型來看,2015年緩沖區(qū)溢出類的漏洞占比最大,達到14.03%。從危害級別來看,2015年新增危急漏洞608個、高危漏洞1782個、中危漏洞4588個、低危漏洞776個,其中6659個漏洞已發(fā)布修復補丁,整體修復率為85.88%,四種危害級別漏洞對應修復率分別為91.28%、92.48%、82.52%以及86.34%。

為應對層出不窮的漏洞事件,Web 應用安全問題逐漸引起了主要組織的關注。全球開源組織 OWASP 積極搜集目前 Web 應用最常見的攻擊事件,成立“Web 應用十大安全隱患”項目,對各類攻擊類型進行概率統(tǒng)計,以提升企業(yè)機構的安全意識。CNCERT/CC(國家計算機網(wǎng)絡應急技術處理協(xié)調中心)針對安全服務和技術支持匯總發(fā)布各項互聯(lián)網(wǎng)權威信息。另外許多國際標準組織也在應對互聯(lián)網(wǎng)威脅做出相應的防范措施。其中W3C(WWW 聯(lián)盟)和IETF(Internet Engineering Task Force 互聯(lián)網(wǎng)工程任務組)推出的 XML 數(shù)字簽名、簽名規(guī)范。另外 W3C 提出 SOAP 消息加密簽名方案,對預防信息泄露起到了一定的作用。

許多黑客和安全廠商也陸續(xù)推出面向不同漏洞的安全掃描工具:Nessus、Nmap、WebScarab、Acunetix Wvs(Web Vul Scanner)、W3af(Web Application Attack And Audit Framework)、APPScan、WebInspect 等。其中多為商業(yè)軟件如 Wvs 、AppScan、WebInspect 等,無開放的源碼,且昂貴費用,一般中小型企業(yè)無法承擔。

1.3 論文工作內容

本文主要研究基于B/S架構的Web應用安全漏洞掃描器的設計與實現(xiàn),分析與研究Web應用安全漏洞掃描器及其關鍵技術,設計并實現(xiàn)一個可用性高,可擴展性高,性能良好的Web應用安全漏洞掃描器。在整個過程中主要完成以下工作:

  1. 分析Web應用安全漏洞掃描器的業(yè)務需求。在分析項目建設需求的基礎上,分析了系統(tǒng)功能與性能需求。

  2. 分析各種不同的Web應用安全漏洞的特性以及Web應用安全漏洞的掃描技術。尤其詳細剖析漏洞出現(xiàn)次數(shù)最多的SQL注入漏洞,XSS漏洞 ,包括產(chǎn)生原因,攻擊方式,掃描方法和防御方法等。

  3. 研究網(wǎng)絡爬蟲技術,設計一種基于廣度優(yōu)先策略的優(yōu)化網(wǎng)絡爬蟲算法,能夠抓取網(wǎng)頁,并進行有效去重,再對網(wǎng)頁進行解析,以期增強爬蟲的性能。

  4. 設計Web應用安全漏洞掃描器系統(tǒng)的架構和功能模塊。在需求分析的基礎上,設計了系統(tǒng)應用架構,并進行模塊化分解。

  5. 漏洞掃描使用事件驅動的方式,根據(jù)爆發(fā)的新型漏洞,不停充實漏洞信息庫,做為匹配掃描的基礎,增強了系統(tǒng)的可擴展性。

  6. 使用Python語言實現(xiàn)Web應用安全漏洞掃描器的各個模塊,實現(xiàn)對SQL注入、XSS漏洞的掃描功能。

  7. 設計UI交互界面,使用戶可直接通過瀏覽器登錄使用,增強系統(tǒng)的可用性,UI界面可顯示漏洞掃描報告及漏洞細節(jié)等內容。

  8. 對Web應用安全漏洞掃描器以特有的漏洞平臺作為基準測試樣本,進行測試驗證。

1.4 論文組織結構

本文分六章,論文的結構安排如下:

第一章:緒論。這一部分首先通過選題背景表明了Web應用漏洞掃描工具研究的必要性,其次通過對國內外研究現(xiàn)狀的分析得出現(xiàn)有Web應用漏洞掃描工具存在的不足,然后得出本文的研究目的與內容,最后給出論文的組織結構。

第二章:Web應用安全漏洞掃描技術概述。列舉并簡要描述了Web應用體系結構及其對應安全威脅,對Web應用安全漏洞掃描器開發(fā)過程中涉及到的網(wǎng)絡爬蟲、漏洞理論和相關技術進行概述,其中包括網(wǎng)絡爬蟲技術、SQL注入漏洞、XSS漏洞的原理、危害及漏洞掃描過程中使用的關鍵技術等。

第三章:Web應用安全漏洞掃描器的分析、設計與實現(xiàn)。對Web應用安全漏洞掃描器進行需求分析,分析對掃描器的功能需求、非功能性需求進行分析;提出了一個基于優(yōu)化爬蟲策略的Web應用漏洞掃描模型,綜合運用現(xiàn)有的Web應用漏洞掃描技術,把各個模塊很好地集成到此漏洞掃描模型中。對典型的Web應用安全漏洞(SQL注入、XSS漏洞)進行深入研究,針對現(xiàn)有Web漏洞掃描方法的不足,提出了針對SQL注入與XSS漏洞的掃描方法。基于此漏洞掃描模型,針對漏洞及其掃描技術更新快的特點,設計了一個插件式的漏洞掃描系統(tǒng),并實現(xiàn)SQL注入、XSS漏洞的自動化掃描,最后與現(xiàn)有的掃描工具迸行對比分析,證明該掃描模型與掃描系統(tǒng)的可行性與高效性。

第四章:Web應用安全漏洞掃描器的測試及分析。闡述系統(tǒng)運行和部署環(huán)境,漏洞測試環(huán)境并介紹系統(tǒng)測試過程,針對測試結果進行分析給出結論。

第五章:結束語。對本論文進行總結與分析,并指出本文設計的漏洞掃描系統(tǒng)存在的不足與下一步的研究方向。

第二章 Web應用安全漏洞掃描技術概述

本章是對Web應用安全漏洞掃描相關技術的概述。主要包括網(wǎng)絡爬蟲、安全漏洞、漏洞掃描器的相關介紹。本章從網(wǎng)絡爬蟲出發(fā),介紹了網(wǎng)絡爬蟲的原理及策略及Web應用漏洞的原理、成因及危害和防護等,并對Web應用安全漏洞掃描關鍵技術進行概述。

2.1 網(wǎng)絡爬蟲與Web應用程序基礎

2.1.1 基本概念

網(wǎng)絡爬蟲是搜索引擎的重要組成部分,它會按照一定的規(guī)則從萬維網(wǎng)上自動提取信息。爬蟲會從某些精心挑選的種子URL開始對網(wǎng)頁進行爬取,將從種子網(wǎng)頁中獲取到的URL添加到待爬取URL隊列中,然后從待爬取URL隊列中順序取出URL,重復上述過程,直到待爬取隊列為空或者滿足停止條件才結束[9]。

2.1.2 爬取策略

  • 廣度優(yōu)先遍歷策略 廣度優(yōu)先又稱為寬度優(yōu)先,是一種設計和實現(xiàn)相對簡單的算法,它的基本思想為了覆蓋盡量多的頁面,在完成當前頁面的遍歷后,才根據(jù)等待隊列的出隊進行下一個頁面的遍歷,相當于樹的層次遍歷。廣度優(yōu)先對屬于一種盲目搜尋法,它會沒有選擇性地抓取很多沒有用的鏈接,導致爬蟲的效率不是很高。為了覆蓋大部分網(wǎng)頁一些搜索引擎會采取寬度優(yōu)先策略。

  • 深度優(yōu)先遍歷策略 深度優(yōu)先是從起始頁面開始,沿著一條路徑一直跟蹤下去,直到向前再也沒有沒被訪問過的頁面就往回退,回退時發(fā)現(xiàn)有未被訪問到的相鄰頁面,便將該頁面作為新的起始頁面,重復以上的過程,直到所有頁面都被訪問過為止。它的優(yōu)點是能挖掘整個 Web 站點或嵌套的所有資源,產(chǎn)生的不利結果可能是過程中過深的深度影響抓取命中率和效率,也容易陷入一條路徑再也出不來。所以如今大都不使用深度優(yōu)先策略。

  • 最佳優(yōu)先遍歷策略 最佳優(yōu)先策略是指根據(jù)自己的需求制定出特定的算法,然后按照此算法基礎上進行爬蟲,所以大體上是廣度優(yōu)先策略的優(yōu)化策略。最佳優(yōu)先對初始鏈接解析后,不是把該網(wǎng)頁所有的鏈接都放等待隊列中,而是根據(jù)此前制定的網(wǎng)頁分析算法解析鏈接,預測該鏈接是否是自己想要的,并將符合要求的鏈接放入到等待隊列中,然后循環(huán)這一過程,直到滿足停止條件結束。這種策略能夠很好的過濾對自己“無用的”鏈接,相對提高爬蟲的效率,但也可能忽略掉很多相關鏈接。 因此制定高效的網(wǎng)頁分析算法對爬蟲的結果起著至關重要的作用。 2.1.3 爬蟲在漏洞掃描中的作用 網(wǎng)絡爬蟲是 Web 安全漏洞掃描工具的核心組成部分,漏洞掃描工具通過網(wǎng)絡爬蟲模塊來搜集目標站點的 URL 樹,從中可以分析得到后續(xù)各個攻擊模塊的漏洞檢測點,所以網(wǎng)絡爬蟲搜集到的站點 URL 的完整性,直接影響到漏洞掃描工具的檢測覆蓋率。Web 安全漏洞掃描工具中的網(wǎng)絡爬蟲工作原理是基于優(yōu)化的廣度優(yōu)先策略對目標站點網(wǎng)頁進行抓取 [11-12]。站點的 URL構成一棵 URL 樹,網(wǎng)絡爬蟲中的 URL 過濾模塊,對抓取過程中的 URL 按如下策略進行過濾:站外URL、非首地址 URL 子樹的 URL、重復的 URL、同類型重復出現(xiàn)的 URL。通過照上述策略進行 URL 過濾后,可以在保證抓取覆蓋率基本不變的情況下,極大的減少 HTTP 請求個數(shù),能夠大幅度提高系統(tǒng)的掃描效率。同時限定初始化 URL子樹的抓取策略,可以方便對大型站點進行拆分分析,提高工作效率[10]。網(wǎng)絡爬蟲的工作流程,如圖2.1所示:

添加圖片注釋,不超過 140 字(可選)

圖 2.1 網(wǎng)絡爬蟲流程圖 2.1.4 HTTP 協(xié)議模型 HTTP協(xié)議是用于客戶端和Web服務器之間的請求和響應的通信協(xié)議。當前協(xié)議版本是HTTP 1.1。HTTP協(xié)議在網(wǎng)絡系統(tǒng)協(xié)議中的應用層協(xié)議中,主要由HTTP請求組成。和HTTP響應。它是典型的B / S模型(客戶端服務器模型).HTTP是無狀態(tài)協(xié)議.HTTP協(xié)議總是發(fā)起客戶端的請求,服務器在處理請求后返回響應,服務器只能被動地接受請求。

  1. 首先,用戶輸入URL,瀏覽器解析URL,提取所用協(xié)議的版本,URL的域名以及獲取目標的路徑,可能還有一些參數(shù)。

2)瀏覽器使用在第一步中解析的信息構造HTTP請求,并將請求發(fā)送到服務器。

3)服務器收到請求后,會處理請求,也可能會重定向。服務器在處理請求后生成響應。

4)服務器將響應作為HTML文檔發(fā)送到瀏覽器。瀏覽器解析HTTP響應頭以確定返回代碼是否成功返回所需的網(wǎng)頁,并且瀏覽器呈現(xiàn)HTML文檔。

最早的WWW服務包含靜態(tài)文件,包括HTML頁面,音頻,圖像,文檔等。服務器正在等待客戶端的請求。當收到請求時,服務器處理請求,找到用戶請求的靜態(tài)文件,并將文件發(fā)送到客戶端。今天的Web服務器主要提供動態(tài)生成的內容。動態(tài)內容由服務器上的腳本生成。Web應用程序處理用戶提交的各種輸入,然后根據(jù)用戶的輸入生成動態(tài)內容,然后將內容返回給用戶。用戶在訪問服務器生成的動態(tài)內容時經(jīng)常提交各種自定義參數(shù).HTTP通過以下方式提交數(shù)據(jù)具有查詢字符串和POST方法的URL。漏洞掃描主要是使用各種漏洞原則來構建可以檢測漏洞的HTTP請求。

2.1.5 Web 應用體系結構

本文研究的Web應用漏洞掃描器用于評測Web應用的安全性,并且本掃描器也是以Web應用的形式存在,所以有必須要先了解一下Web應用的相關知識。Web應用通常就是我們所說的網(wǎng)站,通常包含文字、圖片,視頻、音頻,CSS文件,Javascript文件等靜態(tài)文件,還包括一些根據(jù)用戶不同的請求動態(tài)生成的不同的動態(tài)頁面。搜索引擎就是一個典型的Web用,它根據(jù)用戶提交的關鍵字動態(tài)生成不同的頁面。一個常見的Web應用程序都是基于模型-視圖-控制器(MVC)設計,通常由表示層,應用層,數(shù)據(jù)層組成,如圖2-1 所示。

添加圖片注釋,不超過 140 字(可選)

圖2.2 常見的Web應用架構

表示層:表示層直接與用戶進行交互,獲取用戶的輸入,驗證輸入的合法性,并傳遞給處在服務器端的應用層,應用層將處理的結果返回給表示層,客戶端瀏覽器以HTML的形式顯示處理的結果。

應用層:應用層通常也被成為業(yè)務層,它是表示層和數(shù)據(jù)層的橋梁,位于Web服務器端,他處理用戶提交上來的請求,控制將用戶的請求發(fā)送給每一層的業(yè)務邏輯,另外還調用數(shù)據(jù)層的接口,獲取數(shù)據(jù)庫的數(shù)據(jù),產(chǎn)生HTTP的響應。

數(shù)據(jù)層:數(shù)據(jù)層Web應用程序與數(shù)據(jù)庫的交互,連接和訪問數(shù)據(jù)庫,通過SQL語句向用戶提交數(shù)據(jù)處理請求,查詢,更新,刪除,修改相關數(shù)據(jù),并將數(shù)據(jù)處理結果返回給Web應用服務器,再由Web應用服務器返回給客戶端。

2.2 安全漏洞

2.2.1 基本概念

關于漏洞(Vulnerability)的概念目前還沒有統(tǒng)一的解釋。在 RFC28281 對漏洞的有如下定義:A flaw or weakness in a system's design, implementation, or operation and management that could be exploited to violate the system’s security policy.即攻擊者可以利用安全漏洞突破系統(tǒng)的安全機制繼而可以訪問到未經(jīng)授權的數(shù)據(jù)[13]。

漏洞通常指軟件設計和實現(xiàn)中的缺陷。漏洞通常分為系統(tǒng)層漏洞和應用層漏洞。前者主要指系統(tǒng)軟件和通信協(xié)議中的漏洞。系統(tǒng)軟件具有操作系統(tǒng),數(shù)據(jù)庫服務器和Web服務器.Web應用程序漏洞通常被認為是由各種編程語言(PHP,JSP,Python等)開發(fā)的Web應用程序/ Web服務中的安全漏洞。如果這些發(fā)現(xiàn)安全漏洞,它們可能被利用來攻擊Web應用程序,篡改網(wǎng)頁信息,竊取數(shù)據(jù)庫信息,甚至可能授權訪問服務器。通常包括SQL注入漏洞,XSS漏洞,信息泄露漏洞,跨站點請求漏洞,命令注入漏洞等。

本文所研究的主要是Web應用程序漏洞,通常是指網(wǎng)站程序上的漏洞,其Web應用程序的漏洞主要表現(xiàn)如下:1)系統(tǒng)存在安全方面的脆弱性;2)非法用戶得以獲得訪問權;3)合法用戶未經(jīng)授權提高訪問權限;4)系統(tǒng)易受來自各方面的攻擊。

2.2.2 漏洞類型

Web應用程序漏洞通常分為兩種類型:客戶端漏洞和服務器端漏洞。例如,SQL注入攻擊是對數(shù)據(jù)庫的攻擊。它們出現(xiàn)在Web應用程序的服務器端,是服務器端漏洞。XSS攻擊通?;趈avascript腳本的存在形式,通常發(fā)生在瀏覽器端并且是客戶端漏洞。根據(jù)漏洞的應用點和使用的檢測方法,漏洞可以命名為不同的類型,但是沒有標準的統(tǒng)一漏洞分類方法。為了研究最重要項目確定的十種應用漏洞,詳細闡述了一些重要的漏洞及其漏洞特征。

A1-注入

注入漏洞,例如SQL注入。當不受信任的數(shù)據(jù)作為命令或查詢的一部分發(fā)送到解釋器時,會發(fā)生這些漏洞。發(fā)送惡意數(shù)據(jù)的攻擊者可能會欺騙解釋器執(zhí)行未安排的命令或在未正確授權時訪問數(shù)據(jù)。

A2-失效的身份認證和會話管理

與身份驗證和會話管理相關的管理器功能通常無法正確實施,這會導致攻擊者破壞密碼,密鑰,會話令牌或其他漏洞以冒充其他用戶。

A3-跨站腳本(XSS)

當應用程序接收到不受信任的數(shù)據(jù)并將其發(fā)送到Web瀏覽器而沒有正確的驗證和轉義時,這將導致跨站點腳本攻擊(XSS),允許攻擊者在受害者的瀏覽器上執(zhí)行腳本,劫持用戶會話,從而危及站點,并將用戶重定向到惡意站點。

A4-不安全的直接對象引用

當開發(fā)人員公開對內部實現(xiàn)對象(例如文件,目錄或數(shù)據(jù)庫配置鍵)的引用時,會生成不安全的直接對象引用。在沒有訪問控制檢測或其他保護的情況下,攻擊者操縱這些引用以訪問未經(jīng)授權的數(shù)。

A5-安全配置錯誤

良好的安全性要求應用程序,框架,應用程序服務器,Web服務器,數(shù)據(jù)庫服務器的安全配置。由于許多設置的默認值不安全,因此必須實現(xiàn)和維護這些設置。

A6-敏感信息泄漏

許多Web應用程序無法正確保護敏感數(shù)據(jù),例如信息卡和憑據(jù)。攻擊者可能竊取或篡改這些受到弱保護的數(shù)據(jù),以防止信用卡欺詐和身份盜用。敏感信息需要額外的保護,例如傳輸過程中的存儲或加密。

A7-訪問控制缺失

大多數(shù)Web應用程序在UI中看到該功能之前驗證對功能級別的訪問。但是,當訪問每個功能時,應用程序需要在服務器端執(zhí)行相同的訪問控制檢查。如果請求未經(jīng)驗證,則攻擊者可以欺騙請求在未經(jīng)適當授權的情況下訪問該功能。

A8-跨站請求偽造

跨站點請求偽造攻擊強制登錄用戶成為瀏覽器,向弱勢Web應用程序發(fā)送虛假HTTP請求(包括用戶的會話cookie和其他身份驗證信息)。這允許攻擊者強制用戶的瀏覽器向易受攻擊的應用程序發(fā)送請求,該應用程序認為該應用程序是來自用戶的合法請求。

A9-使用含有已知漏洞的組件

組件,比如:庫文件,框架和其他軟件模塊,幾乎總是以全部的權限運行。如果利用易受攻擊的組件,此類攻擊可能導致更嚴重的數(shù)據(jù)丟失或服務器接管。使用具有已知漏洞的組件的應用程序可能會破壞應用程序并可能發(fā)生一系列可能的攻擊和影響。

A10-未驗證的重定向和轉發(fā)

Web應用程序通常會將用戶重定向并轉發(fā)到其他網(wǎng)站,并使用不受信任的數(shù)據(jù)來確定目標頁面。如果未經(jīng)過正確驗證,攻擊者可以將受害者重定向到網(wǎng)絡釣魚或惡意網(wǎng)站,或使用轉發(fā)來訪問未經(jīng)授權的頁面。

著名的開源項目組織OWASP(Open Web Application Security Project,開放式Web應用程序安全項目),它提供有關計算機和互聯(lián)網(wǎng)應用程序的公正、實際、有成本效益的信息。其目的是協(xié)助個人、企業(yè)和機構來發(fā)現(xiàn)和使用可信賴軟件。OWASP的成員包括全世界公司、教育機構和專業(yè)人員等,該組織致為于Web應用安全研究,包括規(guī)范Web安全的方法論、發(fā)布安全文檔和指導性手冊。OWASP最著名的是被廣泛采納的OWASP Top 10(10項最嚴重的Web應用程序安全風險)。2017年版本中,10項最嚴重的Web應用程序安全風險如表2.1所示:

表 2.1 OWASP Top 10

A1

注入

A2

失效的身份認證和會話管理

A3

XSS(跨站腳本)

A4

失效的訪問控制

A5

安全配置錯誤

A6

敏感信息泄露

A7

攻擊檢測與防范不足

A8

跨站請求偽造

A9

使用含有已知漏洞的組件

A10

未受保護的APIs

在以上10大類型Web應用程序安全風險中,我們重點關注Web應用程序安全漏洞,如SQL注入、XSS漏洞。其基本原理概述如下。

  • SQL注入

SQL 注入攻擊源于英文“SQL Injection Attack”,所謂 SQL 注入攻擊,就是利用 SQL注入技術來實施的網(wǎng)絡攻擊。SQL是一種結構化查詢語言,是用于操作數(shù)據(jù)庫的命令集。它是一種功能齊全的數(shù)據(jù)庫語言。所謂的注入是將命令插入到表單的輸入域名或頁面請求的查詢字符串中。由于服務器沒有嚴格驗證其有效性,服務器最終將執(zhí)行惡意命令。目前,應用程序的十大攻擊方法位居榜首。

原理:SQL注入是指通過把SQL命令插入到Web交互頁面(例如表單遞交或頁面請求或輸入域名)的查詢字符串,以達到欺騙服務器執(zhí)行惡意的SQL命令,它的應用違背了“數(shù)據(jù)與代碼分離原則“,它有兩個條件:一是用戶能夠控制數(shù)據(jù)的輸入;而是代碼拼湊了用戶輸入的數(shù)據(jù),把數(shù)據(jù)當作代碼執(zhí)行[14]。

開發(fā)人員在系統(tǒng)開發(fā)過程中通常會引入注入漏洞。因為開發(fā)人員沒有專業(yè)的安全編程培訓,缺乏安全相關的知識和開發(fā)經(jīng)驗,導致編寫代碼時考慮不充分,沒有嚴格的用戶驗證 -提交數(shù)據(jù)并直接構造數(shù)據(jù)庫查詢語句,從而引入注入漏洞。不同于網(wǎng)絡級攻擊,注入攻擊利用應用程序的開放端口,防火墻等設備無法檢測到,因此具有較高的隱藏特性。如果管理員不檢查分析數(shù)據(jù)庫日志,基本上不會發(fā)現(xiàn)注入攻擊。

其分類如下:

1)繞過Web應用的用戶驗證

在這類攻擊中,攻擊者在用戶輸入?yún)^(qū)輸入數(shù)據(jù)信息,這些數(shù)據(jù)信息將會用于動態(tài)構造SQL査詢語句中的where條件部分。

2)盲注攻擊

攻擊者通過輸入注入信息然后提交到服務器來檢測Web應用是否存在SQL注入漏洞,當提交的信息動態(tài)組裝成一個SQL語句時,如果是一個不合理的語句,服務器向客戶端返回一個錯誤代碼,攻擊者可以通過反復探測然后在返回數(shù)據(jù)中獲得有效信息,甚至可以修改數(shù)據(jù)庫內包括身份認證信息等信息。

3)使用UNION聯(lián)合查詢

攻擊者可以使用這種方式從數(shù)據(jù)庫的表中獲得額外的數(shù)據(jù)信息,例如:在用戶名中鍵入類似于"UNION SELECT <注入語句>"的輸入信息后,則運行時自動組裝 SQL 査詢語句Query="select * from users where id= " UNION select * where account = 10 and password="";正常的 SQL 語句由于 id 和 password 均為空的,所以返回的數(shù)據(jù)也是空的,但此時由于加入了 UNION 方法進行注入,數(shù)據(jù)庫服務器會從表 users 中返回 account= 10時的所有值[15]。

  • XSS漏洞

跨站腳本攻擊,英文全名Cross Site Scripting,為了與網(wǎng)頁中的層疊樣式表(Cascading Style Sheets, CSS) 區(qū)分,故人們就在安全領域叫做XSS。XSS英文全稱為跨站腳本攻擊,它指的是惡意攻擊者在頁面中插入惡意代碼或腳本。當用戶瀏覽網(wǎng)頁時,將執(zhí)行頁面中嵌入的代碼以實現(xiàn)攻擊者的特殊目的。攻擊者可以通過攻擊執(zhí)行許多惡意操作,例如竊取,傳播郵件間諜病毒,更改應用程序帳戶設置,由于攻擊功能強大,場景復雜,因此被列為應用安全領域的頭號敵人。

XSS攻擊根據(jù)效果的不同可以分為以下幾類:

(1)反射型XSS

反射型,也稱為“非持久性”,簡單地“反映”用戶輸入到瀏覽器的數(shù)據(jù)。因此,只有誘使用戶點擊惡意鏈接才能成功攻擊。

(2)存儲型

存儲類型,通常也稱為“持久”,“存儲”用戶輸入的數(shù)據(jù)到服務器,這是非常穩(wěn)定的。

(3)DOM Based XSS

DOM Based XSS是通過修改頁面的節(jié)點形成的,從效果上來說應該屬于反射型。由于是由發(fā)現(xiàn)的安全專家專門提出的類型,處于歷史原因的考慮,就將其單獨劃分出來。

原理:XSS攻擊,通常是指黑客通過“HTML注入”篡改了頁面,插入了惡意的腳本,從而在用戶瀏覽網(wǎng)頁時控制用戶瀏覽器的一種攻擊。攻擊者首先確認有風險的注入點,然后把精心構造的惡意數(shù)據(jù)發(fā)送到服務器,用戶向服務器發(fā)送請求,然后經(jīng)由瀏覽器解釋在用戶端執(zhí)行,這樣便會產(chǎn)生危害[16]。

分類如下:

1)反射性XSS

反射型XSS只是簡單地把用戶輸入的數(shù)據(jù)“反射”給瀏覽器。也就是說,黑客往往需要誘使用戶“點擊”一個惡意鏈接,才能攻擊成功。

2)存儲性XSS

存儲性XSS會把用戶輸入的數(shù)據(jù)“存儲”在服務器段。這種XSS具有很強的穩(wěn)定性。

3)DOM Based XSS

實際上這種類型的XSS并非按照“數(shù)據(jù)是否保存在服務器端”來劃分。它是通過修改頁面的DOM節(jié)點形成的 XSS,所以稱之為DOM Based XSS。

2.2.3 漏洞檢測技術

漏洞檢測技術分為很多種,只有將幾種檢測技術結合起來,才可以在效率和質量中得到平衡[17]。漏洞掃描是通過模擬黑客的攻擊方法來發(fā)現(xiàn)目標的安全漏洞。通常,網(wǎng)絡漏洞掃描系統(tǒng)由三部分組成。

1.發(fā)送數(shù)據(jù)包機制

漏洞掃描是主動檢測漏洞的行為。它需要根據(jù)漏洞的簽名構建數(shù)據(jù)包并將其發(fā)送到檢測目標。

2.接收數(shù)據(jù)包機制

通常,目標響應的數(shù)據(jù)包是漏洞評估的原始數(shù)據(jù)??焖贉蕚浣邮諗?shù)據(jù)包是漏洞掃描的基本保證要素。

漏洞簽名數(shù)據(jù)庫是漏洞掃描中最重要的部分。發(fā)送機制需要根據(jù)特征碼發(fā)送探測數(shù)據(jù)包,收到數(shù)據(jù)包后,還需要根據(jù)特征碼進行判斷。是網(wǎng)絡漏洞掃描器應該有一個漏洞庫,包括每個漏洞的簽名。網(wǎng)絡漏洞掃描基本上是網(wǎng)絡數(shù)據(jù)包的操作,所以檢測數(shù)據(jù)包的有效性和收到后判斷的準確性響應數(shù)據(jù)包可以降低誤報率。

一般,漏洞掃描分為三個階段:

(1)發(fā)現(xiàn)目標網(wǎng)絡或主機。

(2)收集目標信息,包括服務器的類型及版本等。

(3)分析收到的數(shù)據(jù)信息,確定系統(tǒng)是否存在安全漏洞。

根據(jù)分類標準,漏洞掃描技術可以有不同的分類:根據(jù)掃描方法可分為主動掃描和被動掃描;它可以通過掃描對象分為基于主機的掃描和基于網(wǎng)絡的掃描;掃描策略用于將點數(shù)分為逐個檢測掃描和規(guī)則驅動掃描。

a)主動掃描和被動掃描

主動掃描是通過向目標或主機網(wǎng)絡發(fā)送特殊數(shù)據(jù)包并收集響應包來完成的,其優(yōu)點在于能夠快速準確地獲取信息,其缺點是難以關閉掃描路徑并且易于查找,并且難以執(zhí)行主動掃描通過防火墻是相當高的。

b) 基于主機的掃描和基于網(wǎng)絡的掃描

從內部用戶的角度檢測操作系統(tǒng)中的漏洞是基于主機的掃描,主要用于檢測用戶配置中的漏洞。基于主機的漏洞掃描程序可以通過安裝服務訪問所有文件和進程來掃描更多漏洞或目標系統(tǒng)上的代理。優(yōu)點是它可以直接獲取目標主機的底層細節(jié);缺點是只有在目標主機受到控制時才能實施漏洞掃描。

從外部攻擊者的角度掃描到目標網(wǎng)絡或主機是基于網(wǎng)絡的掃描,其中主要用戶在網(wǎng)絡協(xié)議或服務中查找漏洞?;诰W(wǎng)絡的掃描能夠及時獲得網(wǎng)絡信息。它通過向目標服務器發(fā)送構建的網(wǎng)絡數(shù)據(jù)包來確定是否存在特定漏洞。它的優(yōu)點是價格低,易于集中管理和維護;缺點是它無法通過防火墻,并且檢測到的漏洞不夠全面。

通過監(jiān)聽網(wǎng)絡數(shù)據(jù)包完成被動掃描。與主動掃描相比,檢測被動掃描基本上是不可能的,由于被動掃描不需要發(fā)送網(wǎng)絡數(shù)據(jù)包,因此不受防火墻的影響。主要缺點是掃描速度快速度慢,準確性差。

c) 逐一探測掃描和規(guī)則驅動掃描

探測檢測是通過調用插件檢測程序來檢測漏洞的存在。檢測程序有兩個來源:(1)使用安全站點發(fā)布的漏洞檢測程序;(2)改進漏洞簽名結構發(fā)送數(shù)據(jù)包。原理是模擬黑客的入侵過程,但在一定程度上限制,以防止目標主機的侵權。掃描檢測一個一個是基于每個漏洞的個體特征,因此掃描的準確性相對較高;缺點是難以控制檢測程度。

探測檢測是通過調用插件檢測程序來檢測漏洞的存在。檢測程序有兩個來源:(1)使用安全站點發(fā)布的漏洞檢測程序;(2)改進漏洞簽名結構發(fā)送數(shù)據(jù)包。原理是模擬黑客的入侵過程,但在一定程度上限制,以防止目標主機的侵權。掃描檢測一個一個是基于每個漏洞的個體特征,因此掃描的準確性相對較高;缺點是難以控制檢測程度。

  • 人工分析 針對被分析的目標,手工構造特殊的輸入變量,查看輸出結果從而獲得漏洞的分析技術。它多適用于程序中含有人機交互界面,其中 Web 漏洞檢測多試用這種方法。

  • Fuzzing 技術 Fuzzing 技術是自動注入缺陷的測試技術,它使用被測目標程序的必要數(shù)據(jù)的輸入,查看程序是否正常為標志,判斷程序是否有潛在的危險。它一般以邊界值、文件頭尾構造基本的輸入條件。

  • 靜態(tài)分析技術 這主要是對系統(tǒng)的源代碼進行分析,屬于白盒測試技術。它包括上下文搜索、靜態(tài)字符串搜索等。在理論上可以探測出系統(tǒng)的漏洞,但是隨著不斷擴大的詞典將造成誤報率搞。檢測的結果集大的局限。

  • 動態(tài)分析技術 它是通過使用調試器工具來進行動態(tài)分析的,需要在調試器中運行程序,查看程序的運行狀態(tài)以發(fā)現(xiàn)漏洞,通過構造特殊數(shù)據(jù)分析數(shù)據(jù)流發(fā)現(xiàn)漏洞。 2.2.4 Web 應用漏洞產(chǎn)生的原因 Web 應用程序中的漏洞主要是由于下列幾個原因:

  1. 輸入驗證錯誤:由于相當多的程序員缺乏良好的安全意識,他們在編寫Web應用程序時經(jīng)常使用用戶輸入的數(shù)據(jù)作為可信數(shù)據(jù),并且不嚴格審查用戶的輸入數(shù)據(jù)。這使得許多Web應用程序包含潛在的安全漏洞。攻擊者可以提交敏感的XML響應消息或攻擊腳本,以獲取基于HTTP響應的敏感信息甚至操縱后端數(shù)據(jù)庫.Web應用程序開發(fā)測試人員沒有提供輸入安全過濾機制。這些錯誤可能導致SQL注入漏洞和XSS漏洞,信息泄漏和其他問題。我相信用戶提交的輸入,無需輸入驗證,是導致Web應用程序漏洞的最大原因。

  2. 授權錯誤: Web應用程序的訪問控制機制不足,不具有訪問權限的用戶被授予權限,訪問控制機制用于提高非管理員的權限。

  3. 異常處理錯誤: Web應用程序通常需要異常處理。如果異常處理不謹慎,默認情況下給出的信息通常會泄漏服務器信息,例如服務器,數(shù)據(jù)庫的版本號和其他配置信息。

  4. 配置錯誤:管理員沒有很好地配置各種軟件,沒有升級易受攻擊的軟件,沒有修補,配置選項不正確。

  5. 代碼錯誤:程序員未正確使用接口或使用包含邏輯漏洞的有缺陷的功能,接口或應用程序。

2.2.5 Web 應用漏洞的分布

Web 應用漏洞多種多樣,但是他們多占的比例不同,威脅程度不一樣,有些

添加圖片注釋,不超過 140 字(可選)

圖2.3 web應用漏洞分布圖

漏洞更常見,漏洞更危險。Web應用程序漏洞的具體分布如圖2-3所示。

由于注入漏洞,XSS漏洞和傳遞遍歷漏洞是最易受攻擊的數(shù)量和最具威脅的漏洞類型,如圖2-4所示,這三個漏洞也是它用于掃描。本節(jié)詳細介紹了典型的漏洞SQL注入漏洞,XSS漏洞,目錄遍歷漏洞的原理以及如何檢測它。

2.2.6 Web 應用漏洞的風險評估

應用程序中的漏洞可以以不同方式觸發(fā)。每種觸發(fā)方法都代表一種風險。導致這些漏洞的風險是不同的,并且由于沒有損害而造成的損害完全破壞整個企業(yè)。為了評估這些漏洞帶來的風險,需要結合許多其他因素來確定它們的影響,主要是攻擊方法,漏洞數(shù)量,安全檢測,技術影響和業(yè)務影響。表2-1顯示了每個因素的風險級別。只有當這些因素協(xié)同工作時,我們才能全面評估Web應用程序面臨的風險。漏洞越常見,檢測漏洞越困難,業(yè)務越脆弱,攻擊越簡單,風險越高。

表2.2 漏洞風險評估因素

威脅

攻擊方式

漏洞普遍性

漏洞可檢測性

技術影響

業(yè)務影響

應用描述

容易

容易

廣泛

嚴重

業(yè)務描述

平均

平均

常見

中等

困難

困難

少見

2.3 國內外漏洞掃描器研究分析

2.3.1 分析目的

在2.2節(jié)中,我們已經(jīng)了解到Web安全風險所帶來的諸多問題,Web漏洞掃描器正因其掃描漏洞的簡便快捷而得到了廣泛的使用。越來越多的企業(yè)使用商業(yè)Web漏洞掃描器定期掃描公司網(wǎng)站,及時修補漏洞,以防范安全風險。國內外的幵源社區(qū)中也經(jīng)常有人發(fā)布各種版本的開源漏洞掃描器。然而,不同的掃描器在檢測性能方面也存在一定的差異。本文中,我首先從影響掃描器準確率的三個方面對國內外的6種主流掃描器進行了比較分析。從而得出對準確率影響最大的因素,對其進行研究改進[18]。

2.3.2 影響準確率的三個因素

影響漏洞掃描器準確率的三個因素分別為輸入?yún)?shù)覆蓋率、爬取能力、認證覆蓋率。

  • 輸入?yún)?shù)覆蓋率 輸入?yún)?shù)覆蓋率是指在瀏覽器和服務器之間傳輸復雜輸入的時候,應用程序所支持的子協(xié)議和傳輸方式。如果掃描器不能支持應用程序傳輸所使用的子協(xié)議的話,那它肯定不能用給定的參數(shù)來檢測到漏洞。根據(jù)62款國際上流行的商業(yè)和開源掃描器對于輸入?yún)?shù)覆蓋率的比較結果[19],可以得知,Web應用掃描器對于輸入?yún)?shù)覆蓋率的支持通常包含如下四個方面: HTTP Query String Parameters (GET):輸入?yún)?shù)通過 URL 發(fā)送。 HTTP Body Parameters (POSTO:輸入?yún)?shù)通過 HTTP body 發(fā)送。 HTTP Cookie Parameters:輸入?yún)?shù)通過 HTTP cookie 發(fā)送。 HTTP Headers: HTTP提交應用程序使用的頭。

  • 爬取能力 爬取能力是掃描器獲取頁面的能力。如果掃描器的攻擊引擎比較差的話,它也許會遺漏一個漏洞,但是如果它的爬取引擎比較差的話,那它就不可能獲取到頁面,也必然不可能得到該頁面中存在的漏洞了。我采用WIVET來對掃描器的爬取能力進行評估。WIVET是用來分析Web鏈接爬取能力的一種工具,它可以自動的爬取到各種應用類型,比如 Html、Ajax、Flash、Applet、Silverlight. WSDL、REST。大致步驟如下[20],WIVET中含有54個測試案例,將WIVET部署到服務器上,然后分別用掃描器對其進行掃描,最終會根據(jù)測試案例的通過率生成一個結果報表。從結果報表中,我們可以很清晰的看出各掃描器爬取能力的異同。

  • 認證覆蓋率 未經(jīng)認證的漏洞掃描器只能獲取到系統(tǒng)的基本信息,包括操作系統(tǒng)、開放的網(wǎng)絡端口、端口所監(jiān)聽的服務等。然而,如果可以提供認證掃描功能的話,掃描器就可以登陸到即將掃描的系統(tǒng),并且獲取到該應用的詳細信息,比如配置參數(shù)、安全補丁等。認證后的掃描器所獲取的信息更加全面,并且誤報率更低。通過調研,本文中我們選取了 16種掃描器通常具備的認證能力進行了對比。這些認證項大致包括:Custom Cookie、Custom Header、BASIC、DIGEST、NTLM、Kerberos、FORM、PROXY、GZIP、SSL、Logout Detection、Logout Exclusion 等。其中 Custom Cookie 和 Custom Header 是指在測試中所使用的 cookie 和 header; BASIC,DIGEST, NTLM, Kerberos和FORM是相應的認證方法;PROXY代表了輸出協(xié)議支持;GZIP,DEFLATE表示相應的壓縮支持;SSL指SSUTLS加密支持;CERT指的是客戶端認證;Logout Detection表示對自動檢測無效會話的支持。經(jīng)過統(tǒng)計,分別得出各掃描器的認證覆蓋率,以進一步分析。 2.3.3 對比總結 表2-2中,我將上一節(jié)提到的影響掃描器準確率的三個特性的具體指標羅列出來,并將這三個指標與掃描器準確率進行了對比。從表中,我們可以直觀的了解到這三個特性如何影響掃描器的準確率??梢园l(fā)現(xiàn),其實掃描器準確率的變化趨勢和掃描器的爬取能力的變化趨勢是很相似的。當然,掃描器的準確率和輸入?yún)?shù)覆蓋率以及認證能力也是有一定聯(lián)系的。正如上一節(jié)所說,認證覆蓋率越高,掃描器獲取的信息會更加的全面,誤報率也會降低。而輸入?yún)?shù)覆蓋率的高低也會對準確率造成一定的影響。 表 2.2 掃描器三大指標與準確率對比表

排名

掃描器

輸入?yún)?shù)覆蓋率

爬取能力

認證覆蓋率

掃描器準確率

1

WVS

100%

91%

94%

92.8%

2

Nessus

100%

84%

100%

78.9%

3

Appscan

100%

83%

94%

78.4%

4

JSKY

50%

53%

75%

57.4%

5

RSASWEB

50%

61%

38%

51.5%

6

MatriXay

50%

43%

25%

36.1%

2.4 Web 應用漏洞分析及其檢測方法 2.4.1 SQL 注入漏洞 (1)SQL 漏洞概述 幾乎每個Web應用程序都使用數(shù)據(jù)庫來保存各種操作所需的信息.SQL注入是應用程序和數(shù)據(jù)庫層之間發(fā)生的安全漏洞。在Web程序代碼中,用戶提交的參數(shù)不會直接過濾到SQL語句,導致參數(shù)中的特殊字符打破SQL語句的原始邏輯。該漏洞可被利用來執(zhí)行任意SQL語句。這些注入的SQL語句將由數(shù)據(jù)庫服務器作為普通SQL指令運行,這可能導致偏離用戶的意圖,這可能導致數(shù)據(jù)庫信息泄露。在嚴重的情況下,數(shù)據(jù)庫服務器的管理員可能被盜。權限。當攻擊者獲得管理權限時,他可以隨意操縱數(shù)據(jù)庫和系統(tǒng)。 (2)SQL 漏洞的檢測方式 Web漏洞的使用是多樣化的。普通的消防HTTP / HTTPS是完全開放的。傳統(tǒng)的IDS不起作用。可以通過構造GET或POST請求來檢測SQL注入漏洞。在某些情況下,可以通過blind檢測??紤]以下SQL語句:從t_user中選擇*其中username = $ username和password = $ passwd。類似的查詢通常用于Web應用程序以驗證用戶。如果查詢返回一個值,憑證的用戶名存在于數(shù)據(jù)庫中,用戶可以登錄系統(tǒng)。否則它將訪問拒絕。輸入字段的值通常以用戶的形式從Web表單獲取。假設我們插入以下的用戶名和密碼值是:$username = '100' or '100' = '100,$passwd = 100' or '100' = '100。于是SQL 查詢語句變成了:select * from user where username='100'or '100' = '100' and password='100' or '100' ='100'。構造GET請求,并發(fā)送到服務器,假設向服務器http://www.example.com提交HTTP請求,那么我們構造的GET請求就是http://www.example.com/index.php? username=100 or'100='100&passwd =100'or'100=' 100。經(jīng)過簡單分析,我們注意到因為條件是真的(或100=100),該查詢返回一個值(或一組值)。這樣,系統(tǒng)在不知道用戶名和密碼情況下也驗證了該用戶。這就說明存在著數(shù)字型的SQL漏洞。 除了這個數(shù)字SQL漏洞之外,您還可以使用UNION運算符偽造查詢。為了讓測試人員有意參與偽造查詢,我們在SQL注入中使用UNION運算符來獲取原始查詢。這些假查詢的結果被添加到原始查詢的結果中,并且測試者可以獲得其他格式的字段值。例如,服務器執(zhí)行的查詢如下:select name,email,age from users where id=$id。設置id值:$id1 union all select creditcardnumber 1 1,,from creditcartable 。得到以下查詢:select name,email,age from users where id=$id=1 union all select creditcardnumber,1,1 from creditcartable。這將和所有信用卡用戶一起加入原始查詢結果中。繞開使用 DISTINCT 關鍵詞的查詢必須使用關鍵字ALL。另外,我們注意到除了信用卡帳戶外,我們還選擇了其他兩個值。這兩個值也是必要的。因為為了避免語法錯誤,這兩個查詢必須具有相同數(shù)量的參數(shù)。通過添加Union查詢,我們查詢了數(shù)據(jù)庫中的敏感信息,表明存在SQL注入漏洞。 (3)SQL 注入漏洞的防御措施 SQL注入漏洞可能導致攻擊者直接探測數(shù)據(jù)庫,因此他們可以直接操縱數(shù)據(jù)庫中的數(shù)據(jù),導致非常有害,輕微泄漏的數(shù)據(jù),然后失去系統(tǒng)的管理員權限。因此,非常有必要加強預防。其中主要的防御措施有:

  1. . 輸入檢查,SQL注入漏洞主要來自用戶的輸入,所以檢查所有用戶輸入,包括長度,類型,或根據(jù)業(yè)務需要定義一些規(guī)則,不僅在客戶端檢查,還要在服務器端檢查,拒絕userInvalid數(shù)據(jù)條目。

  2. .字符過濾,數(shù)據(jù)庫中,有些字符有著特殊的含義,比如單引號,%,”\”,通配符等等,必須對這些特殊字符進行過濾,以防用戶提交特殊字符改變原有應用程序的邏輯。

3).預編譯

SQL語句通常用于代碼中以動態(tài)組合SQL語句,因此容易出現(xiàn)問題。有些語言提供了一個安全的,強類型的參數(shù)化查詢API,可以正確處理用戶輸入。或者,可以使用不受SQL注入影響的對象關系映射。對象關系映射解決了面向對象和關系之間不匹配的問題。數(shù)據(jù)庫,可以自動將程序中的對象自動化到關系數(shù)據(jù)庫,避免直接使用SQL語句。

4). 存儲過程,存儲過程可以通過參數(shù)類型判斷來阻止SQL注入。

5). 正確的數(shù)據(jù)庫配置,根據(jù)不同數(shù)據(jù)庫的特點,確保數(shù)據(jù)庫的良好配置可以降低SQL注入的風險。

2.4.2 XSS 漏洞

(1)XSS 漏洞概述

跨站點腳本是Web應用程序的安全漏洞。它通常是指使用特殊方法通過利用Web開發(fā)中留下的安全漏洞將惡意Javascript代碼注入到Web頁面中。用戶無意中加載并執(zhí)行攻擊者構建的惡意javascript代碼。當攻擊成功時,攻擊者可能會收到(但不限于)更高的權限,例如執(zhí)行以下操作:掛馬,網(wǎng)絡釣魚,獲取私人網(wǎng)絡內容劫持用戶網(wǎng)絡行為,竊取會話和cookie等。大量網(wǎng)站遭到XSS漏洞攻擊或發(fā)現(xiàn)此類漏洞,如Twitter,Facebook,My Space,新浪微博和百度貼吧。近年來從云運漏洞平臺披露的信息表明,XSS攻擊非常普遍,非常有害。

(2)XSS 漏洞分類

XSS 漏洞有三類:反射型XSS(也叫非持久型XSS 漏洞)、存儲型XSS 和DOM型 XSS。

a. 反射型XSS

這個漏洞的注入過程就像一次反射,故稱之為反射型 XSS,以下舉例說明 http://www.foo.com/xss/reflect1.php 的代碼如下:

<?php

echo $_GET[‘x’];

?>

輸入 x的值未經(jīng)過任何過濾就直接輸出,可以提交:

http://www.foo.com/xss/reflect1.php?x=<script>alert(“xss”)</script>

服務端解析時,echo 就會完整的輸出<script>alert(“xss”)</script>到響應體中,然后瀏覽器解析執(zhí)行出發(fā)javascript惡意腳本。

b. 存儲型XSS

存儲XSS已經(jīng)成為一種永久性的XSS,它更有害。它與反射XSS漏洞的不同之處在于它提交的XSS代碼存儲在服務器中,但它存儲在數(shù)據(jù)庫或文件系統(tǒng)中。當其他用戶請求帶有這個注入的XSS代碼的網(wǎng)頁時,它將下載并且執(zhí)行它。最典型的例子是留言板XSS。用戶將包含XSS代碼的消息提交給數(shù)據(jù)庫。當目標用戶查看留言板時,將從數(shù)據(jù)庫中查詢并顯示這些消息的內容。瀏覽器找到XSS代碼并將其視為更好的HTML和javascript代碼解析和執(zhí)行,因此觸發(fā)了XSS攻擊。存儲XSS攻擊非常隱蔽,通過手動查詢很難找到。此時,自動Web應用程序漏洞掃描程序非常有用。

c. DOM型XSS

DOM XSS與Reflective XSS和Storage XSS之間的區(qū)別在于DOS XSS XSS代碼不需要直接參與服務器的分析響應.XSS觸發(fā)器依賴于瀏覽器端的DOM分析。舉例如下:

<script>

eval(location.hash.substr(1);

</script>

這就是一個DOM XSS 漏洞,觸發(fā)方式為提交請求

Http://www.foo.com/xssme.html#alert(1)

這個url#后面的內容不會被發(fā)送到服務端,僅僅是在客戶段被接受并解析執(zhí)行。在 javascript 中有很多這種輸入點可以注入惡意腳本。

(3)XSS 漏洞檢測方式

檢測XSS漏洞的基本方法是使用以下特殊攻擊字符串作為輸入數(shù)據(jù),獲取查詢字符串的URL和網(wǎng)頁中表單的輸入字段信息,構造HTTP請求,將信息發(fā)送到服務器,并且服務器將aRespond返回給響應。如果響應中存在注入字符串,則表示存在XSS漏洞。如果提交了帖子請求,則需要再次將請求發(fā)送到表單中action屬性的值。如果返回的響應包含注入字符串,則表示存在XSS漏洞。

值得注意的是,對于具有多個輸入字段的表單,您可以為注入檢測選擇多個不同的測試字符串,這也可以識別網(wǎng)頁中的哪個輸入點具有XSS漏洞。如果服務器應用程序對輸入數(shù)據(jù)執(zhí)行一些簡單的過濾,您還可以通過多種方式對測試字符串進行編碼,例如URL編碼,HTML實體編碼,大小寫轉換等。

(4)XSS 漏洞的防范措施

跨站點腳本攻擊更加微妙,更難以抵御其他網(wǎng)絡攻擊,并且沒有一刀切的解決方案。在用戶和Web應用程序之間的交互過程中會產(chǎn)生XSS漏洞,Web應用程序本身和客戶端用戶。主要關注的是Web應用程序的編程,但用戶的良好習慣也可以避免XSS攻擊。所以我們分兩個方面入手防御跨站腳本攻擊,程序開發(fā)者在編程過程中要進行輸入驗證,用戶在瀏覽時網(wǎng)頁時也應采取相應安全措施,程序開發(fā)過程中應該采取的措施:

  1. .過濾用戶提交數(shù)據(jù)中的代碼 這種方法的實施過程比較復雜,不僅僅需要考慮<script>…</script>標簽,各種可能的 XSS 攻擊載體都要考慮進來。這種方法風險很大。如果過濾不合適,可能會導致XSS攻擊并過濾掉非法部分的數(shù)據(jù)。無法將所有非法輸入過濾到黑名單中。最好只接受合法數(shù)據(jù)。

  2. .對用戶輸入的數(shù)據(jù)或基于用戶輸入數(shù)據(jù)而生成的輸出數(shù)據(jù)進行編碼。 一般來說,編碼是一種非常簡單有效的防范XSS腳本的方法,因為它不需要區(qū)分合法和非法字符。缺點是所有不受信任的數(shù)據(jù)編碼都浪費系統(tǒng)資源,這可能會影響Web服務器的性能。

  3. .對表單輸入域輸入字符的長度進行限制 對于一些可能收到攻擊的表單輸入域,可以限制其輸入字符的長度

  4. .禁止上傳Flash文件 使用Flash文件很難防止跨站點腳本攻擊。如果您不確定上傳的Flash文件是否安全,則只是禁止用戶上傳Flash文件以完全阻止Flash跨站點攻擊。

  5. .檢查

Cookie信息許多Web應用程序使用cookie來管理通信狀態(tài)并存儲與用戶相關的信息。開發(fā)人員必須在將cookie信息插入HTML文檔之前對其進行嚴格檢查和過濾。

用戶的應對措施:

  1. . 小心點擊不受信任的鏈接,只需點擊一些可信賴的連接。有關網(wǎng)站,有時XSS攻擊會在您打開電子郵件,閱讀留言板,打開附件和閱讀論壇時無意中發(fā)生。

  2. . 提高瀏覽器的安全級別,即使您將瀏覽器更新到最新版本,將瀏覽器的安全級別設置為高,并禁用一些不需要運行的腳本。

  3. .同時要在不同的Web應用程序中使用不同的用戶名和密碼。

2.4.3 目錄遍歷漏洞

(1)目錄遍歷漏洞概述

目錄遍歷漏洞是指用戶可以訪問某些受限訪問目錄并在服務器根目錄之外執(zhí)行命令。目錄遍歷漏洞是一種信息泄露漏洞,有時也稱為包含漏洞的非授權文件。目錄遍歷漏洞的主要原因是程序沒有過濾用戶提交的非法輸入,驗證用戶的合法輸入,這樣黑客就可以通過URL遍歷用戶的文件系統(tǒng)獲取一些敏感信息。下面舉個例子說明:

譬如有鏈接為:http://www.example.com/getfile.php?test=dervul.html。

瀏覽器根據(jù)此URL向動態(tài)頁面getfile.php發(fā)送HTTP請求到Web服務器,并查詢字符串參數(shù)test,其值為dervul.html。Web服務器收到瀏覽器的請求后,將在服務器端進行處理。getfile.php腳本文件將從服務器的文件系統(tǒng)發(fā)送到客戶端的瀏覽器,這是一個惡意用戶.getfile.php腳本的參數(shù),可以從文件系統(tǒng)獲取敏感文件并編譯以下URL:http://example.com/getfile.php?test=../../../../../etc/password。那么,這就能夠從文件系統(tǒng)中獲取 password 文件并返回給用戶。用戶可以知道服務器的所有用戶名和密碼。如果使用MD5加密密碼,也可以通過彩虹表找到用戶的密碼。服務器的信息被泄露。

(2)目錄遍歷漏洞檢測方法

目錄遍歷漏洞檢測使用基于黑盒子的方法。首先,應該清楚與路徑遍歷漏洞相關的所有明顯的配置方面。應徹底測試文件上載和下載的所有功能。然后為上傳的參數(shù)添加一些常用文件信息。這些文件信息通常無處不在。提交HTTP請求,然后檢查響應中是否有任何文件信息。如果包含,則表示存在目錄遍歷漏洞。

3)目錄遍歷漏洞的防范措施

防止目錄遍歷的最有效方法是控制服務器上的文件和目錄權限,避免將用戶提交的數(shù)據(jù)傳遞到任何文件系統(tǒng)API。大多數(shù)目錄或文件權限未正確配置,并且Web應用程序讀取文件主要取決于系統(tǒng)本身的API。在參數(shù)傳遞的過程中,如果沒有嚴格的控制,就會有超出的功率。出現(xiàn)。在這種情況下,Web應用程序可以采取以下防御措施,最好是組合使用。

  1. . 處理用戶提交的文件名時,應用程序必須檢查文件名是否包含路徑遍歷序列(使用反斜杠或斜杠)或空字節(jié)。不要嘗試對文件名執(zhí)行任何清理直接停止處理請求。

  2. . Web服務器中的所有文件都放在Web的根目錄中,并且將忽略任何已回溯的額外請求。

  3. . 應用程序僅訪問允許的文件類型,建立訪問白名單,并拒絕訪問其他文件類型的任何請求。

2.5 網(wǎng)絡爬蟲在掃描器中的應用

Web爬蟲,也稱為Web蜘蛛或Web機器人,是Internet上自動下載WWW服務網(wǎng)頁的程序。傳統(tǒng)的Web爬蟲從種子URL開始,獲取種子URL的頁面,然后不斷提取新的從當前網(wǎng)頁到要爬網(wǎng)的隊列的URL,并停止下載網(wǎng)頁,直到滿足系統(tǒng)的某個條件。

隨著Web安全領域的發(fā)展,安全工作者越來越多地使用Web爬蟲技術來利用Web應用程序中的漏洞,這極大地促進了安全行業(yè).XSS(跨站點腳本)漏洞和SQL注入漏洞,信息泄露漏洞占了一個大量的Web應用程序漏洞,所有這些漏洞都可以通過改進的Web爬蟲自動掃描.Web爬蟲技術在Web應用程序漏洞掃描程序中的應用可以增強系統(tǒng)的自動化并提高系統(tǒng)的效率。

2.5.1 聚焦爬蟲概念

專注于Web爬蟲(也稱為主題爬蟲)與傳統(tǒng)的Web爬蟲不同。聚焦爬蟲不關心它們是否可以完全覆蓋網(wǎng)站的所有頁面。相反,關注特定主題或數(shù)據(jù)。例如,本文中實現(xiàn)的聚焦網(wǎng)絡爬蟲只提取網(wǎng)頁中存在的輸入點,以及它對不相關的靜態(tài)文件等進行URL過濾。焦點網(wǎng)絡爬蟲由三部分組成(1)爬行目標的描述或定義(2)網(wǎng)頁分析算法(3)URL的搜索策略。

2.5.2 聚焦爬蟲技術分析

關注Web爬網(wǎng)程序主要關注三個問題:爬網(wǎng)抓取網(wǎng)頁目標描述,分析抓取爬網(wǎng)網(wǎng)頁的算法以及選擇網(wǎng)頁搜索策略。抓取目標描述定義了抓取工具需要注意的主題。網(wǎng)頁分析算法是網(wǎng)絡爬蟲爬行行為的關鍵。

  1. 抓取目標描述 漏洞掃描程序查找頁面的輸入點,包括要查詢的字符串和表單,因此爬網(wǎng)程序爬網(wǎng)目標是重點關注的爬網(wǎng)網(wǎng)頁的輸入點。這決定了網(wǎng)頁的分析算法。

  2. 網(wǎng)頁分析算法 網(wǎng)絡分析算法可以基于網(wǎng)絡拓撲,基于網(wǎng)絡內容,基于用戶訪問分為三類。此漏洞掃描程序使用的網(wǎng)頁分析算法是基于網(wǎng)頁內容的算法。它主要解析網(wǎng)頁內容,通過正則表達式提取所有URL,標準化不合格的URL。丟棄URL,過濾異地鏈接等URL。也可以解析URL查詢字符串以獲取有關主機的信息。

  3. 網(wǎng)頁遍歷算法

Web爬蟲爬行的遍歷算法主要分為深度優(yōu)先遍歷算法,廣度優(yōu)先遍歷算法和最佳優(yōu)先遍歷算法。

1)深度優(yōu)先遍歷算法.Depth-first遍歷從初始種子URL開始,任意選擇要提取的URL,然后提取頁面中的所有URL,并隨意選擇一個然后提取,以便在URL之后對URL進行爬網(wǎng)直到URL被跟蹤。所有現(xiàn)有的URL都被處理,然后跳轉到初始URL的下一頁。這種爬行策略的優(yōu)點是它使爬蟲設計變得簡單,但它會導致低值的過度爬行值較低的頁面,可能導致爬蟲陷入問題。

2)廣度優(yōu)先遍歷算法。廣度優(yōu)先遍歷算法是指從初始種子開始獲取的過程,并且在獲取當前級別的所有URL之后,輸入下一級別URL的爬行。此策略是主要用于專注于爬蟲。它認為頁面越接近原始種子URL,與主題相關的概率就越大,并且它可以覆蓋盡可能多的與主題相關的頁面。

3)最優(yōu)先的遍歷算法。最優(yōu)先的遍歷策略根據(jù)一定的規(guī)則分析網(wǎng)頁的特征,預測被抓取的網(wǎng)頁與目標網(wǎng)頁之間的相似性,或主題相關性,然后篩選出最佳評估的鏈接或者用于抓取的一批鏈接。它的核心思想是僅抓取被網(wǎng)絡分析算法評估為“有價值”的網(wǎng)頁。但是,這種遍歷策略可能會導致在抓取過程中忽略一定數(shù)量的相關網(wǎng)頁因此,它是一種局部最優(yōu)爬行算法。在許多實際應用中,有必要改進應用的細節(jié),以提高捕獲的準確性,掌握最佳的局部優(yōu)勢。

此漏洞掃描程序的爬蟲只對網(wǎng)站的輸入點感興趣,并且可以捕獲主頁的輸入點,因此適合使用廣度優(yōu)先遍歷算法來實現(xiàn)網(wǎng)站爬蟲。

綜上,我們認為,影響掃描器準確率的最重要的因素是掃描器的爬取能力,兼顧認證能力。因此,在文章接下來的部分,我將著重對掃描器的爬取算法進行研究,并提出改進的方法,同時擴展掃描器的認證覆蓋率,以此來提高掃描器的準確率。

2.6 本章小結

本章首先對掃描器的爬蟲技術進行了探討,包括現(xiàn)有頁面爬取策略及其優(yōu)缺點,重點描述了分布式爬蟲及其常見模型;其次對Web應用程序安全風險及主要的Web應用安全漏洞進行了介紹,其中重點闡述了SQL注入漏洞和XSS漏洞的產(chǎn)生原因、攻擊方式及防御方式等;最后從輸入?yún)?shù)覆蓋率、爬取能力、認證覆蓋率三個方面對國內外的漏洞掃描器進行比較分析,用實際數(shù)據(jù)得出對掃描器掃描效率影響最大的因素是掃描器的爬取能力和對身份認證的支持??傮w來說,本章的內容為下一章設計Web應用安全漏洞掃描器奠定了基礎。

第三章 Web應用安全漏洞掃描器分析設計與實現(xiàn)

本章首先對Web應用安全漏洞掃描器系統(tǒng)的需求進行分析,以便后續(xù)系統(tǒng)設計工作的展開。本系統(tǒng)是為用戶提供一個方便使用、漏洞定位準確、檢測效率高效的Web應用安全漏洞檢測工具;其次是根據(jù)需求分析,對掃描器的整體架構與功能模塊的進行設計與實現(xiàn)。Web應用安全漏洞掃描器設計是基于對上章所述的主要技術和需求分析的基礎上,研究Web應用安全漏洞掃描器如何實現(xiàn)所需功能和性能。掃描器設計的過程包括系統(tǒng)架構設計、功能模塊設計。掃描器實現(xiàn)的過程是按照模塊功能采用相對應的技術和編碼實現(xiàn)。

3.1 Web應用安全漏洞掃描器需求分析

目前,互聯(lián)網(wǎng)產(chǎn)業(yè)迅猛發(fā)展,中國域名的網(wǎng)站就已經(jīng)突破290萬,但是除了一些大型互聯(lián)網(wǎng)公司的網(wǎng)站得到了有效的安全保護之外,大部分的小網(wǎng)站都存在一些漏洞,很容易遭受攻擊。尤其是受到SQL注入攻擊,XSS攻擊,這也是目前受到攻擊次數(shù)最多的兩類漏洞。因為Web 應用程序的設計有著很多種技術方案, 比如 Java 平臺,ASP.NET平臺,PHP/Python平臺,為了實現(xiàn)掃描的通用性,本漏洞掃描器采用黑盒測試的技術對目標網(wǎng)絡網(wǎng)絡進行安全性測試,它可以忽略網(wǎng)絡平臺的特性,不審查網(wǎng)頁的源碼就能發(fā)掘多個平臺的 Web 應用漏洞。

由本文2.2節(jié)可知,Web應用漏洞類型非常多,其中SQL注入漏洞,XSS漏洞的漏洞數(shù)所占比例比較高,比較有代表性,SQL注入漏洞屬于服務器端漏洞,XSS屬于客戶端漏洞。由于精力有限,無法實現(xiàn)對所有的漏洞的掃描,本漏洞掃描器將實現(xiàn)對這兩大類漏洞的掃描。最重要的是,本漏洞掃描器設計了一種可擴展機制使得新的Web應用漏洞可以很好的以插件的形式增添進本漏洞掃描器中。

針對Web應用安全日益嚴峻的形勢,分析各種Web應用漏洞的原理,建立Web應用漏洞掃描模型,利用滲透測試技術對Web應用進行安全測試,并通過分析結果對網(wǎng)絡進行挖掘。安全測試。應用程序中存在一個漏洞。實現(xiàn)基于B / S,用戶友好,可執(zhí)行,系統(tǒng)執(zhí)行,自動化的Web應用程序漏洞掃描程序。

3.1.1 功能需求

為了實現(xiàn)一個能自動化掃描 SQL 注入漏洞,XSS 漏洞的掃描器,首先必須對掃描目標進行解析,網(wǎng)絡爬蟲能夠從遠程以 HTTP 請求的方式獲取服務器端 Web 應用的信息,然后通過解析程序提取出可輸入點(包含帶查詢字 符串的網(wǎng)址和表單),將之存入到數(shù)據(jù)庫或文件中。接著對這些可輸入點以輪詢的方式發(fā)送測試字符串到掃描目標,根據(jù) HTTP 響應獲取反饋信息,判斷是否具有漏洞,最后生成漏洞分析報告。

目前,互聯(lián)網(wǎng)產(chǎn)業(yè)發(fā)展迅速。中國域名網(wǎng)站已超過290萬。但是,除了一些大型互聯(lián)網(wǎng)公司網(wǎng)站的有效安全保護外,大多數(shù)小網(wǎng)站都存在漏洞,易受攻擊。特別是受到SQL注入攻擊和XSS攻擊。這也是受到攻擊最多的兩類漏洞。因為Web應用程序設計有各種技術解決方案,如Java平臺,ASP.NET平臺,PHP / Python平臺,以實現(xiàn)掃描的普遍性這個漏洞掃描器使用黑盒測試技術來保護目標網(wǎng)絡網(wǎng)絡。測試時,它可以忽略網(wǎng)絡平臺的特性,可以在不查看網(wǎng)頁源代碼的情況下探索多個平臺的Web應用漏洞。實現(xiàn)漏洞掃描儀具有重要的現(xiàn)實意義。

為了實現(xiàn)可以自動掃描SQL注入漏洞,XSS漏洞和目錄遍歷漏洞的掃描程序,必須首先解析掃描目標。Web爬蟲可以從遠程HTTP請求獲取服務器端Web應用程序的信息,然后通過解析程序。提取輸入點(包括帶有查詢字符串的URL和表單)并將其保存到數(shù)據(jù)庫或文件中。然后為這些輸入點以輪詢方式將測試字符串發(fā)送到掃描目標,根據(jù)HTTP響應獲取反饋信息,確定是否存在漏洞,最后生成漏洞分析報告。

基于以上分析,系統(tǒng)采用模塊化設計思想,分為三大模塊:網(wǎng)絡爬蟲模塊,漏洞掃描模塊和報告生成模塊。漏洞掃描模塊包含每個漏洞的掃描插件。

1)網(wǎng)絡爬蟲模塊

通過對整個目標Web應用程序站點的廣度優(yōu)先遍歷,獲取每個網(wǎng)頁的HTML源代碼,并對網(wǎng)頁的HTML源代碼進行有效的標簽分析,并在其中存在標簽類型和標簽數(shù)據(jù)??梢猿蔀榘踩珳y試目標的頁面同時被提取。該信息存儲在數(shù)據(jù)庫中,供后續(xù)漏洞掃描模塊執(zhí)行目標安全測試。特定HTTP請求的發(fā)送由線程池完成。它同時執(zhí)行并且非常有效。它可以在解析其他頁面時解析一些頁面。爬蟲模塊的性能和準確性是漏洞掃描模塊的基礎。只有使爬蟲模塊強大而強大,我們才能確保整個掃描儀的效率和全面性。漏洞掃描的準確性,可以降低誤報率。

2)漏洞掃描模塊

滲透測試多年來一直是網(wǎng)絡安全的常用測試技術,通常被稱為黑盒測試。滲透測試遠程檢測正在運行的應用程序并發(fā)現(xiàn)安全漏洞而不了解內部應用程序本身。集中滲透測試(即,嘗試利用先前測試中發(fā)現(xiàn)的已知漏洞檢測方法,可用于檢測特定的安全漏洞,例如SQL注入漏洞,XSS漏洞以及部署在網(wǎng)站源代碼中的文件。上載漏洞等。對Web應用程序發(fā)出的請求是HTTP請求。Web應用程序處理完請求后,它將返回HTTP響應。根據(jù)響應的內容,我們確定是否存在響應漏洞。例如,當檢測到XSS漏洞時,我們會查找包含\\ u003c的HTTP響應腳本\\ u003ealert('XSS')\\ u003c / script \\ u003e字符串(如果有)表示該URL包含XSS漏洞,如果沒有,它表明沒有XSS漏洞。漏洞分析模塊使用正則表達式來實現(xiàn)比普通字符串查找更高的效率。

3)報告生成模塊

在收到滲透率測試的結果后,您需要分析結果以確定是否存在漏洞,某種類型的漏洞,測試漏洞需要多長時間,并仔細分析攻擊結果然后生成格式??勺x報告。使系統(tǒng)管理員可以輕松了解Web應用程序面臨的風險。根據(jù)漏洞分析掃描結果,生成可讀的HTML文檔。由于漏洞掃描的結果以XML文檔的形式存儲,因此最終通過解析XML文檔生成XML文檔,所包含的信息包括漏洞信息,漏洞數(shù)量,漏洞問題URL,漏洞預防措施,如果這些漏洞被修復等,HTML報告可以很好地滿足目標受眾對自己網(wǎng)站漏洞的理解。

基于上面的分析,系統(tǒng)采用模塊化的設計思想主要分為三個大模塊,網(wǎng)絡爬蟲模塊, 漏洞掃描模塊,任務調度模塊。

漏洞掃描功能模塊:該功能模塊包含了各個漏洞的掃描插件。主要功能首要是實現(xiàn)對Web應用漏洞如典型的SQL注入漏洞、XSS漏洞進行檢測,找出Web應用程序的脆弱性。

網(wǎng)絡爬蟲功能模塊:該功能模塊是為了實現(xiàn)待檢測URL的網(wǎng)頁爬取,從中可以分析得到后續(xù)各個攻擊模塊的漏洞檢測點,以便對Web應用程序進行全面的檢測。

任務調度功能模塊:本系統(tǒng)還實現(xiàn)了對檢測任務的調度功能,該功能可實現(xiàn)任務調度,根據(jù)用戶配置信息進行自動化分配調度,提升檢測效率。

另外,系統(tǒng)還實現(xiàn)了端口掃描、站點信息獲取的功能,實現(xiàn)對Web應用程序的可用性檢測。

3.1.2 非功能需求

  • 自動化掃描 漏洞掃描器的網(wǎng)絡爬蟲抓取目標網(wǎng)絡的數(shù)據(jù),構建 HTTP 請求,分析 HTTP 響應,漏洞掃描,生成報告功能都是在后臺完成,自動化的對目標網(wǎng)絡進行安全性測試,用戶只要提交網(wǎng)址和用戶選項之后就不需要再進行控制和操作。

  • 易用性 本系統(tǒng)的開發(fā)應該要便于用戶使用,實現(xiàn)基于B/S架構的Web應用安全漏洞掃描器,用戶只需要通過瀏覽器端添加掃描任務,就可以開啟漏洞自動化掃描,并可通過儀表盤查看掃描結果,掃描結果包含漏洞類型、漏洞定位、影響參數(shù)等內容。

  • 可擴展性

隨著Web應用的不斷發(fā)展,實際Web應用程序環(huán)境中存在的Web應用安全漏洞的類型很多,本系統(tǒng)只是針對其中兩種主流漏洞進行檢測,為了方便在后續(xù)新型安全漏洞爆發(fā)時,系統(tǒng)檢測功能的添加,系統(tǒng)的設計應具備可擴展性。在后續(xù)添加漏洞檢測功能的時候,只需要將檢測功能以插件形式添加到漏洞檢測模塊便可使用,避免改動系統(tǒng)的其它模塊。

3.2 Web應用安全漏洞掃描器系統(tǒng)應用架構設計

Web應用安全漏洞掃描器是基于B/S架構,使用Web管理方式,用戶使用瀏覽器通過SSL加密通道和系統(tǒng)進行交互,方便用戶管理。系統(tǒng)采用模塊化設計,整個系統(tǒng)可分為:用交互層、數(shù)據(jù)庫、調度層和檢測引擎四層架構體系。而交互層可以拆分為UI展示層和數(shù)據(jù)處理層兩部分,整個系統(tǒng)的系統(tǒng)架構圖如圖3.1所示。

添加圖片注釋,不超過 140 字(可選)

圖 3.1 Web應用安全漏洞掃描器系統(tǒng)架構圖

交互層:主要分為UI展示層和數(shù)據(jù)處理層2部分,其中UI展示層直接與用戶進行交互,數(shù)據(jù)處理層對用戶來說是透明的。

UI展示層主要是與用戶交互,用戶操作請求通過該層向后端傳遞,并且接收后端傳遞數(shù)據(jù),通過繪制圖表、掃描報告等方式展現(xiàn)給用戶。

數(shù)據(jù)處理層主要是接收用戶前端傳遞數(shù)據(jù)進行各類邏輯處理,并且操作數(shù)據(jù)庫進行存儲、查詢、修改、刪除等操作。

數(shù)據(jù)層:主要包括存儲用戶資料、檢測數(shù)據(jù)、配置的數(shù)據(jù)庫等,以及一些系統(tǒng)配置文件。

集群調度層:負責調度檢測引擎對用戶下達的任務進行自動化檢測,并且在檢測結束后處理檢測結果匯總至數(shù)據(jù)層。

檢測引擎層:主要分為檢測能力和數(shù)據(jù)挖掘兩部分。監(jiān)測能力主要是針對不同檢測內容的插件庫。對常見的代碼層漏洞如SQL注入、XSS漏洞等具備強大的監(jiān)測能力,并可通過插件進行漏洞掃描性能擴展。數(shù)據(jù)挖掘則是能過優(yōu)化網(wǎng)絡爬蟲的方式,挖掘網(wǎng)頁數(shù)據(jù),尋找監(jiān)測點。

3.3 Web應用安全漏洞掃描器系統(tǒng)功能設計

Web應用安全漏洞掃描器系統(tǒng)采用模塊化設計,整個系統(tǒng)功能可分為:基礎數(shù)據(jù)挖掘模塊、監(jiān)測能力模塊、集群調度模塊、UI交互界面。功能設計架構圖如圖3.2所示。

添加圖片注釋,不超過 140 字(可選)

圖 3.2 Web應用安全漏洞掃描器功能架構圖

主要功能模塊設計包括網(wǎng)絡爬蟲模塊、漏洞檢測模塊(包括SQL注入漏洞、XSS漏洞及可擴展的其他漏洞插件)、任務調度模塊、可用性檢測模塊等。

同時為了滿足本文3.1所述的非功能需求,設計了友好的UI交互界面,方便用戶下達任務和查看漏洞掃描結果。以及可擴展的插件式漏洞庫。如上圖3.2所示。

3.3.1 網(wǎng)絡爬蟲模塊的優(yōu)化及設計

在2.1節(jié)中,我們對漏洞檢測系統(tǒng)中的網(wǎng)絡爬蟲技術進行了研究,對比其在搜索引擎中應該側重的目標以及爬蟲策略進行了詳細介紹。

如圖2.1所示的一般網(wǎng)絡爬蟲的工作流程,爬蟲首先獲取到一個初始URL鏈接,然后從該鏈接URL開始網(wǎng)站信息爬取并解析該URL對應的網(wǎng)頁內容,通過網(wǎng)頁解析找出該頁面所包含的所有URL鏈接,將這些新的URL鏈接放入鏈接隊列,直到此頁面沒有剩余URL鏈接,然后提取已經(jīng)爬取到URL鏈接進行下一次爬取,重復以上步驟,直到爬蟲爬取完所有網(wǎng)頁或達到爬取深度預設值。傳統(tǒng)的網(wǎng)絡爬蟲會依次遍歷網(wǎng)站的所有頁面,對每個頁面都會調用爬蟲爬取其鏈接URL及指向內容。這樣會導致爬取大量重復無用的鏈接,而且有可能進入死循環(huán),爬蟲效率極其低下,而一個快速的爬蟲是一個高效漏洞掃描器的基礎。本文從下幾個方面對網(wǎng)絡爬蟲進行優(yōu)化:

  1. 針對效率低下以及可能進入死循環(huán)的問題進行優(yōu)化。為了提高網(wǎng)絡爬蟲網(wǎng)頁爬取的速率,我們使用多線程來處理網(wǎng)頁抓取過程中的傳輸過程。由2.1節(jié),我們知道網(wǎng)頁抓取策略包含有深度優(yōu)先策略、廣度優(yōu)先策略和最佳優(yōu)先策略等,由于在多線程處理過程中無法確定哪個線程處理的任務先完成,所這種環(huán)境下采取廣度優(yōu)先策略更適合。而且相比較之下,使用廣度優(yōu)先策略進行網(wǎng)站爬取時更容易控制爬取的深度??梢圆捎靡粋€公共數(shù)據(jù)隊列來控制鏈接URL被訪問的先后順序,保證上一層次的URL鏈接先于下一層,確保網(wǎng)絡爬蟲按照深度優(yōu)先順序進行網(wǎng)站爬取,而不會進入死循環(huán)。

  2. 針對可能爬取重復無用鏈接的問題進行優(yōu)化。在對鏈接URL進行重復無用的判斷的時候,不止要考慮到完全重復的URL,還要考慮到滿足URL重寫規(guī)則的鏈接以及參數(shù)重復的鏈接,送些URL鏈接在進行漏洞檢測的時候都屬于重復無用的鏈接。之所對參數(shù)重復的鏈接不進行網(wǎng)頁信息爬取,是因為對于參數(shù)重復鏈接URL對應的網(wǎng)頁結構一般不會有變化,也不會導致新的Web應用漏洞,所以對于這種類型的鏈接,只需要抓取一個作為代表就可了。

優(yōu)化后的網(wǎng)絡爬蟲設計如下:

添加圖片注釋,不超過 140 字(可選)

圖 3.3 優(yōu)化網(wǎng)絡爬蟲流程圖

根據(jù)上文提出的爬蟲優(yōu)化策略,對傳統(tǒng)網(wǎng)絡爬蟲進行優(yōu)化,優(yōu)化后的爬蟲流程圖如圖3.3所示。

1)判斷鏈接隊列urls中是否存在未被檢測的新鏈接(待測目標網(wǎng)站的根URL放入其中),若存在,則進入下一步,否則網(wǎng)絡爬蟲結束;

2)通過對urls隊列查重、通過url標準、url偽協(xié)議判斷規(guī)則進行url鏈接判重,若重復,則直接丟棄,返回第一步,否則,將其加入urls_uniq隊列中并進入下一步;

3)對該鏈接url進行頁面請求,若該鏈接有效,請求成功,那么對其進行進行頁面解析,否則返回第一步;

4)通過頁面解析之后判斷是否存在新鏈接,若是,則將其加入鏈接隊列,否則,返回第一步。

3.3.2 SQL注入掃描模塊的設計

SQL注入漏洞掃描模塊的目標是能夠通過遠程訪問的方式對目標網(wǎng)站進行SQL注入漏澗的檢查,發(fā)現(xiàn)其中有漏洞的頁面;在檢測結果證實目標網(wǎng)站存在漏洞時,在不危害到網(wǎng)站安全性和可用性的前提下,獲取漏洞驗證結果,證明其危害性[21]。SQL注入漏洞掃描流程如圖3.4所示。

添加圖片注釋,不超過 140 字(可選)

圖 3.4 SQL注入漏洞掃描流程圖

SQL注入檢測模塊向爬蟲傳遞的參數(shù)插入測試代碼,嘗試根據(jù)頁面響應判斷注入是否存在或者繼續(xù)嘗試其他的測試代碼。

當確認SQL注入存在時則進入下一步驗證階段,否則當所有payload測試完畢后退出檢測。

根據(jù)目標數(shù)據(jù)庫類型使用不同的攻擊Payload獲取目標網(wǎng)站的數(shù)據(jù)庫信息,例如數(shù)據(jù)庫名稱、表結構、數(shù)據(jù)庫用戶名及密碼信息,對于某些權限較大的數(shù)據(jù)庫用戶(例如:root、sa、sys用戶)甚至能執(zhí)行提權后執(zhí)行任意命令。

SQL注入普通模式是基于盲注檢測的頁面相似度算法,對有漏洞的參數(shù)進行檢測的,具體流程說明:

檢測開始,檢測模塊會先對頁面請求2次,判斷頁面是否有動態(tài)變化部分。若有動態(tài)變化,則會設置基準HTML(影響后續(xù)檢測對比算法)。

檢測參數(shù)是否動態(tài)可變,嘗試輸入其他值,查看頁面響應判斷參數(shù)是否可變。若參數(shù)不可變則直接退出檢測。

嘗試注入特殊符號使數(shù)據(jù)庫報錯,根據(jù)后臺規(guī)則依照報錯信息對數(shù)據(jù)庫類型/版本進行識別。若識別成功,則根據(jù)數(shù)據(jù)庫版本加載特定payload,可提高檢測效率。

嘗試多種payload進行匹配,例如:

整數(shù)型:and 1=1及and 1=2

字符串型:and 'a'='a及and 'a'='b

搜索型:%' and 'a'='a' and '%'='

以上為示例,非實際測試代碼。

若匹配均不成功,則根據(jù)用戶配置選擇是否使用專家模式進行掃描。匹配成功則開始進行邏輯判斷檢測。

首先進行邏輯為真的請求判斷(and 1=1),將響應頁面與原頁面進行對比,若對比結果不同則直接結束檢測。

而后進行邏輯為假的請求判斷(and 1=2),將響應頁面與原頁面進行對比,若對比結果相同則直接結束檢測。

再一次進行邏輯為真的請求判斷(增加檢測準確度),將響應頁面與原頁面進行對比,若對比結果不同則直接結束檢測。

確認漏洞存在后會根據(jù)用戶配置加載獲取數(shù)據(jù)庫信息模塊,對漏洞進行驗證利用,嘗試獲取數(shù)據(jù)庫敏感信息。

所有請求在遇到網(wǎng)絡超時情況下會重復發(fā)送至多3次,若仍未結果則直結束檢測。

3.3.3 XSS漏洞掃描模塊的設計

XSS漏洞掃描模塊是一個遠程檢測模塊,只能從遠程的WEB訪問中檢測和發(fā)現(xiàn)WEB應用中可能存在的XSS漏洞。為此,該模塊設計成接收網(wǎng)頁爬蟲提取的頁面注入點信息,生成測試向量,通過URL進行遠程WEB訪問,實施XSS攻擊,在所有可能的數(shù)據(jù)點加入測試代碼,接收服務器響應頁面,從服務器的響應中分析是否存在XSS漏洞,最后輸出XSS漏洞檢測報告[22]。如圖3.5所示,一個完整的XSS漏洞檢測流程是:

添加圖片注釋,不超過 140 字(可選)

圖 3.5 XSS漏洞掃描流程圖

檢測流程:

目標URL,如:http://www.test.com/t.php?news=china&id=1,參數(shù)為news=china&id=1,根據(jù)參數(shù)生成隨機的定位字符串(字母組合),最終為news=chinaazxsdb& id=1adwsdss;

發(fā)送GET/POST或Headers請求,得到頁面資源(HTML內容);

如果頁面請求錯誤,則重新針對特定參數(shù)進行定位;

定位隨機串在頁面資源的DOM結構位置,比如在<script></script>內、在<input>標簽屬性內等;

根據(jù)定位到的位置生成特定的攻擊代碼,提高攻擊的準確度,并能減少不相關的攻擊請求;

根據(jù)特定的攻擊代碼再次生成“XSS攻擊載體”;

發(fā)送GET/POST或Headers請求,得到XSS攻擊后的頁面資源(HTML內容);

XSS分析引擎判斷是否存在攻擊代碼,存在則認為有XSS漏洞;

如果不存在,則判斷是否需要變形攻擊代碼,再次生成“XSS攻擊載體”。

3.3.4 任務調度模塊的設計

掃描器系統(tǒng)能夠根據(jù)用戶在UI界面中設置的配置信息自動對目標網(wǎng)站進行檢測,同時根據(jù)檢測站點和優(yōu)先級進行任務隊列分配和自動化站點監(jiān)測和任務狀態(tài)處理。流程設計如圖3.6所示。

添加圖片注釋,不超過 140 字(可選)

圖 3.6 任務調度流程圖

用戶通過UI下達一個添加一個檢測任務,即向數(shù)據(jù)庫添加一個virtual_group。

前臺程序經(jīng)過處理生成多個group對應不同的監(jiān)測模塊,并存入數(shù)據(jù)庫。

任務分發(fā)進程taskd輪詢數(shù)據(jù)庫,并從SQLite數(shù)據(jù)庫中獲取group信息。根據(jù)這些group的預約檢測時間、檢測優(yōu)先級及檢測周期判斷目標網(wǎng)站任務此時是否需要調度,達到檢測周期后會生成task(單次檢測任務實例),并拆分成site(單個站點檢測實例)存入Redis隊列之中。

任務接收進程jobd定期從Redis中獲取site,創(chuàng)建Worker子進程,并根據(jù)任務的開啟的檢測模塊、爬蟲爬行深度等配置信息,調度相應的檢測模塊進行掃描。

3.3.5 可用性檢測模塊的設計

  • 端口掃描

端口掃描可以探測出目標主機開放的端口,現(xiàn)在越來越多的 Web 站點更改了默認的 80 端口,使得對 Web 站點入侵的難度進一步加大,端口掃描技術在發(fā)現(xiàn)可能的 Web 端口 中起了較大的作用。

端口是就像是一條通信管道,當然也有可能會成為黑客的入侵通道。在 TCP/IP 參考 模型中,其中傳輸層用 16 位端口號來標識某個端口,并且端口號只具有本地意義,不 同的主機、服務器均可使用相同的端口。熟知一些常用端口號,在安全測試以及安全防 御過程中極其重要,在針對 Web 站點的攻擊過程中,Web 站點安全性可能較好,但是由 于服務器開啟了其它不必要的服務或端口,黑客可能會以此為突破點進行滲透,在安全 檢查時要關閉無關端口或服務。

使用端口掃描技術,在掃描端口的過程中可能會發(fā)現(xiàn)目標系統(tǒng)更多有價值的信息, 利用這些信息可進一步推斷出目標系統(tǒng)可能存在的安全風險,并及時進行修補。常見的端口掃描技術有 TCP Connect 掃描、TCP SYN 掃描、UDP 掃描等。

  1. TCP Connect 掃描 TCP Connect 掃描是建立在三次握手基礎之上的。三次握手是指客戶端首先會發(fā)送SYN 數(shù)據(jù)包給服務器端,然后服務器端返回 SYN 和 ACK 數(shù)據(jù)包,最后客戶端再發(fā)送 ACK 數(shù)據(jù)包,與此同時客戶端可以發(fā)送數(shù)據(jù)到服務器端。TCP Connect 掃描探測過程是在三 次握手的第二個階段,當服務器端返回 SYN 和 ACK 數(shù)據(jù)包時,即可判斷端口是開放的, 如果未返回 SYN 和 ACK 數(shù)據(jù)包,則此端口有可能是關閉的。在 Nmap 掃描工具中,可以 通過添加-sT 的選項來進行 TCP Connect 掃描。利用 TCP Connect 掃描方式某站點,掃描截圖如圖3.7所示:

添加圖片注釋,不超過 140 字(可選)

圖 3.7 TCP-Connect掃描截圖 TCP Connect 掃描最大的優(yōu)點就是掃描準確,但是會在目標系統(tǒng)日志里留下大量掃描記錄,容易被管理員發(fā)現(xiàn),掃描過程也容易會被防火墻、入侵檢查系統(tǒng)等安全設備阻斷。

  1. TCP SYN 掃描 TCP SYN 掃描不使用完整的 TCP 連接,沒有完整的三次握手。TCP SYN 掃描又稱半連接掃描,掃描過程如下:首先客服端會向目標主機的某個端口發(fā)送 SYN 數(shù)據(jù)包,當服務 器端收到后,會向客服端發(fā)送 SYN 和 ACK 數(shù)據(jù)包,這時客戶端不發(fā)送 ACK 應答數(shù)據(jù)包而 是發(fā)送 RET 連接重置數(shù)據(jù)包。如果端口未開啟,目標主機直接返回 RST 連接重置數(shù)據(jù)包 結束會話。由于沒有完成三次握手的過程,客戶端與服務器端無法建立正常的 TCP 連接。 在 Nmap 掃描工具中,可以通過添加-sS 的選項來進行 TCP SYN 掃描,利用 TCP SYN 掃描 方式掃描某站點,掃描截圖如圖3.8所示:

添加圖片注釋,不超過 140 字(可選)

圖 3.8 TCP-SYN掃描截圖 TCP SYN 掃描的優(yōu)點在于掃描要比 TCP Connect()掃描隱蔽,可能逃脫安全設備的阻斷,發(fā)現(xiàn)更多隱蔽端口信息。

  1. UDP 掃描

UDP 掃描通常與 ICMP 協(xié)議相結合進行,它發(fā)送沒有攜帶任何數(shù)據(jù)的 UDP 數(shù)據(jù)包到服務器端,如果服務器端返回 ICMP 端口不可達時,則表示目標端口是關閉的;如果某服 務響應一個 UDP 報文,則表明該端口是開放的。在 Nmap 掃描工具中,可以通過添加-sU 的選項來進行 UDP 掃描,利用 UDP 掃描方式掃描某站點,掃描截圖如圖3.9所示:

添加圖片注釋,不超過 140 字(可選)

圖 3.9 UDP掃描截圖

  • 性能監(jiān)控 客戶端瀏覽器通過 HTTP 請求來向 Web 服務器請求訪問資源,HTTP 請求通常是由三部分組成,分別是請求行、請求頭、請求內容。常見的 HTTP 請求方法如表3.1所示: 表 3.1 常見HTTP請求方法

方法

說明

GET方法

請求頁面并返回消息

POST方法

提交表單數(shù)據(jù)

HEAD方法

獲取頁面請求頭

OPTIONS方法

查詢可以使用的方法

PUT方法

修改內容,屬于危險方法

DELETE方法

刪除內容,屬于危險方法

服務器端在處理完發(fā)送過來的消息后會進行響應,HTTP 響應消息也是由三部分組成,分別是狀態(tài)碼、消息頭、返回內容,常見的 HTTP 狀態(tài)碼下表 3.2所示。 表 3.2 常見HTTP狀態(tài)碼

狀態(tài)碼

說明

200

請求成功

202

需進一步處理

301

永久移動

302

臨時移動

400

請求包含錯誤

401

未授權訪問

403

禁止訪問

404

頁面未找到

500

服務器內部錯誤

502

網(wǎng)關錯誤

可用性檢測模塊通過HTTP(S)請求、域名解析、Ping等方式分析響應時間,及時發(fā)現(xiàn)出現(xiàn)鏈路異常、訪問延遲、解析錯誤等情況,判斷Web應用的可用性狀況。 3.3.6 插件機制的設計 有許多類型的Web應用程序漏洞。為了確保各種新的Web應用程序漏洞可以集成到系統(tǒng)中,系統(tǒng)有一些可擴展性設計。考慮到每個漏洞的掃描原理具有相同的實現(xiàn)過程,如圖3.6所示。等效于客戶端發(fā)送和接收HTTP消息時,所使用的測試腳本對于不同的掃描漏洞模塊是不同的,并且根據(jù)漏洞的特征,結果會有所不同。 圖3.6 通用漏洞攻擊測試流程圖 具體過程是構造HTTP請求,發(fā)送HTTP請求消息,接受HTTP響應消息,分析響應,并保存結果。為了抽象這個攻擊過程,你可以使用類繼承機制來規(guī)定每個接口的接口。掃描模塊,以便所有掃描模塊類繼承自父類。每個掃描模塊之間的類關系如圖3.7所示。 這種強制約束機制增強了掃描程序的可伸縮性。漏洞掃描程序還采用動態(tài)編程語言實現(xiàn),根據(jù)用戶的需要動態(tài)加載所需的插件。只要這些新的漏洞掃描插件根據(jù)以下內容編寫插件即可。在父類的接口中,它們被放入插件庫中。如果用戶選擇某個漏洞掃描,漏洞掃描程序將自動掃描插件庫并動態(tài)將漏洞的掃描插件加載到掃描中。 圖3.7 攻擊模塊類繼承圖 每個漏洞都有兩種攻擊:提交get請求并提交post請求,分別是攻擊GET()和攻擊POST()接口的責任。如果有新的漏洞,可以直接編寫漏洞掃描插件根據(jù)規(guī)范,繼承Attack類并實現(xiàn)attatck GET()和攻擊POST()接口,然后將文件添加到插件庫.XSSAtack類實現(xiàn)掃描XSS漏洞,SQLAttack類實現(xiàn)SQL漏洞檢測,并且DIRAttack類實現(xiàn)掃描目錄遍歷漏洞。 3.3.6 數(shù)據(jù)庫的設計 數(shù)據(jù)庫位于系統(tǒng)的數(shù)據(jù)層,為結果數(shù)據(jù)提供統(tǒng)一管理,如用戶,漏洞描述信息和Web爬蟲爬行。數(shù)據(jù)庫系統(tǒng)可以比文件系統(tǒng)更好地管理數(shù)據(jù)性能。我的SQL目前在Internet上。最流行的開源數(shù)據(jù)庫,可以很好地連接后端程序,Linux,apache,Pyhon / PHP構成了Internet上最流行的架構LAMP。系統(tǒng)可以使用數(shù)據(jù)庫添加,刪除,更改,檢查,排序和統(tǒng)計數(shù)據(jù)。數(shù)據(jù)庫中只有三個表,用于存儲URL的表t_url和網(wǎng)頁中的字符串參數(shù),表描述表t_漏洞的漏洞描述和管理用戶的表t_users。 (1)用戶表,表名定義為t_user,該表記錄用戶的登錄驗證信息,包括用戶名、密碼、權限、創(chuàng)建時間,具體如表3.1 所示。 表3-1t_user表的字段

列名

類型

是否為空

默認值

主鍵

描述

Id

Int(11)

自增字段

Name

VARCHAR(32)

用戶名

Password

VARCHAR(32)

用戶名密碼

Type

VARCHAR(32)

用戶類型

Time

Date

用戶創(chuàng)建時間

(2)漏洞描述,表名定義為t_vulnerability,該表記錄漏洞的名稱,類型,描述,優(yōu)先級,發(fā)現(xiàn)這個漏洞的數(shù)量,解決這個漏洞的方法法等等信息,具體如表3.2所示。 表 3-2 t_vulnerability 表的字段

列名

類型

是否為空

默認值

主鍵

描述

Id

Text

漏洞類型

Name

Text

漏洞名稱

desription

Text

漏洞描述

priority

Text

漏洞優(yōu)先級

Num

Int(11)

漏洞數(shù)量

Solution

Text

漏洞防御解決方案

2)網(wǎng)絡爬蟲的結果網(wǎng)址記錄,表名定義為t_url,該表記錄網(wǎng)址,提交網(wǎng)址的方法是 GET還是POST方法,網(wǎng)址后面的查詢字符串參數(shù),具體如表3-3所示。 表 3-3 t_url 表的字段

列名

類型

是否為空

默認值

主鍵

描述

Id

Int(11)

自增字段

url

Text

網(wǎng)址

method

Text

請求方法

Type

Text

網(wǎng)址類型

attack_str

Text

測試字符串

3.4 Web應用安全漏洞掃描器系統(tǒng)功能實現(xiàn) 3.4.1 爬蟲模塊的實現(xiàn) 爬蟲模塊的實現(xiàn),使用的編程開發(fā)語言為Python,爬蟲模塊的類關系如圖3.10所示。

添加圖片注釋,不超過 140 字(可選)

圖 3.10 爬蟲模塊類圖 本模塊主要應用以下四個核心技術:

  • urllib 本模塊利用Python中的urllib庫獲取網(wǎng)頁內容,以便html及PhantomJS Render進行解析。urllib是Python自帶的一個抓取網(wǎng)頁信息一個接口,它最主要的方法是 urlopen(),是基于python的open()方法的。下面是主要說明: urllib.urlopen('網(wǎng)址'):這里傳入urlopen()的參數(shù)有特別說要求,要遵循一些網(wǎng)絡協(xié)議,比如 http,ftp,也就是說,在網(wǎng)址的開頭必須要有http://這樣的說明。故可使用url.lower().startswitch()函數(shù)來進行標準url的判斷。 例如:url.lower().startswith("http://") or url.startswith("https://")。 read方法的是獲取相對應的網(wǎng)址的網(wǎng)頁內容。 例如:data=urllib.urlopen('http://www.baidu.com').read()。

  • urlparse 通過 Python 所帶的 urlparse 模塊,其中的 urlparse 方法可以將 URl 分解,并返回元組 (scheme, netloc, path, parameters, query, fragment),這樣可以判斷 netloc 剔除不同域名的 url。 例如: result=urlparse.urlparse(http://localhost/core/ui/templates/login.html)ParseResult=(scheme=’http’,netloc=’localhost’,path=’core/ui/templates/login.html’,parameters=’’, query=’’, fragment=’’)

  • PhantomJS Render 傳統(tǒng)網(wǎng)絡爬蟲都有一個共性,就是只能爬取單純的html代碼,如果頁面是JS渲染的,而進行人工分析后臺請求,手動去摸索JS渲染的一些結果,是不現(xiàn)實的,所以,我們需要有一些好用的工具來幫助我們像瀏覽器一樣渲染JS處理的頁面。PhantomJS是一個無界面的,可腳本編程的WebKit瀏覽器引擎。它原生支持多種web 標準:DOM 操作,CSS選擇器,JSON,Canvas 以及SVG。 本文主要使用PhantomJS Render的Web server模塊的兩個對象,request和response。主要說明如下: request: method:http請求的方法,get、post等 url: 包含http請求URL和get請求的query string(如果有的話) httpVersion:當前采用的http協(xié)議的版本 headers:所有http請求頭部信息,以鍵值對的形式提供 post:請求主體,僅對post和put方法的請求有效 postRaw:如果Content-type為 'application/x-www-form-urlencoded'(表單上傳的默認值)時,post的原始信息會暫存在此屬性中。 response: headers:以鍵值對的形式保存所有的HTTP請求頭部的信息,在第一次調用 write()方法前一定要設置。 setHeader(name, value):設置或添加特定的頭部信息 header(name):獲取特定的頭部信息 statusCode:設置HTTP狀態(tài)碼 setEncoding(encoding): 標明傳給 write()的數(shù)據(jù)需要轉換成什么格式,默認為UTF-8。如果數(shù)據(jù)為二進制字符串,則設置為“binary” write(data):向response中發(fā)送數(shù)據(jù)塊,可以多次調用 writeHead(statusCode, headers):向response中發(fā)送響應頭部。 statusCode是一個3位數(shù)字,表示HTTP狀態(tài)碼(如404)。后一個參數(shù)代碼響應頭部 close():關閉HTTP連接 closeGracefully():功能與 close()一樣,不過更安全可靠,它能保證響應頭部先發(fā)送,并自動在響應最后加上 response.write("")

  • 正則匹配技術[23]

本模塊使用的匹配技術主要是正則表達式技術,它是一種可以用于模式匹配和替換的強有力的工具,可以用它來提取符合要求的 URL。如表3.3所示是一些最常見的字符集及其定義的方式。

表 3.3 常見字符集及定義方式

^

行首匹配

?

0或1個

*

0或多個

+

1或多個

\

將下一個字符標記為一個特殊字符、或一個原義字符、或一個向后引用、或一個八進制轉義符。例如,'\n' 匹配一個換行符,'\\' 匹配 "\",而 "\(" 則匹配 "("

$

匹配輸入字符串的結束位置。如果設置了RegExp 對象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位

.

除 "\n" 之外的任何單個字符,要匹配包括 '\n' 在內的任何字符,請使用象 '[.\n]' 的模式

\s

空白符 制表符

\S

非空白符

\w

匹配包括下劃線的任何單詞字符,等價于 [A-Z a-z 0-9_]

\W

匹配任何非單詞字符,等價于 [^A-Z a-z 0-9_]

()

提取匹配的字符串。表達式中有幾個()就有幾個相應的匹配字符串,(\s*)表示連續(xù)空格的字符串

[]

定義匹配的字符范圍。比如 [a-zA-Z0-9] 表示相應位置的字符要匹配英文字符和數(shù)字。[\s*]表示空格或者*號

{}

一般用來表示匹配的長度,比如 \s{3} 表示匹配三個空格,\s{1,3}表示匹配一到三個空格

3.4.2 SQL注入漏洞掃描的實現(xiàn)

SQL注入漏洞掃描模塊的實現(xiàn),使用的編程開發(fā)語言為Python,SQL注入漏洞掃描模塊的類圖如圖3.11所示。

添加圖片注釋,不超過 140 字(可選)

圖 3.11 SQL注入漏洞掃描類圖

SQL注入漏洞檢測的原理,通過構造SQL注入檢測變量,實現(xiàn)對目標網(wǎng)站上是否存在SQL注入漏洞的檢測。要完成對于一個網(wǎng)站的漏洞檢測任務,涉及下兩個關鍵技術;

  1. 注入代碼動態(tài)生成技術。根據(jù)SQL注入攻擊的各種可能的語法變形方式化及程序員可能的對用戶輸入數(shù)據(jù)的過濾處理方式,我們需要精、構造多個SQL注入漏澗檢測單元;

  2. 注入代碼的響應分析技術。主要分析注入代碼出現(xiàn)的位置,根據(jù)注入代碼出現(xiàn)的位置,確定注入代碼是否可形成攻擊能力。前面我們介紹到,有經(jīng)驗的程序員或者數(shù)據(jù)庫管理人員會利用一個通用錯誤界面來代替數(shù)據(jù)庫錯誤,因此SQL注入漏桐檢測單元包含多條精也、構造的請求數(shù)據(jù),利用這些請求數(shù)據(jù)向服務器發(fā)送請求,接收服務器的應答信息,然后利用一個交叉驗證函數(shù)對返回的多個應答信息進行比較分析,W此來判斷服務器是否存在SQL注入漏洞。

因此SQL注入漏洞掃描模塊可以分為兩個子模塊:SQL注入漏洞掃描單元構造子模塊和SQL注入漏洞檢測子模塊,下面分別介紹下兩個子模塊的主要原理與實現(xiàn)。

  1. 單元構造子模塊 針對不同的輸入?yún)?shù),構造不同的漏洞掃描單元。 整形參數(shù) 當輸入的參數(shù)是整形的時候,如 ID、年齡、個數(shù)等,若是查詢操作,可以猜測 SQL 語句大致如下: Select * from table where 字段名=輸入的值 例如有 http://www.example.com/test.php?id=1 那么構造三個請求的步驟如下: http://www.example.com/test.php?id=1’,將這個請求提交到服務器,會生成SQL 查詢語句 select * from table where id=1’,那么 test.php 會出現(xiàn)運行異常,因為語句中出現(xiàn)了不該出現(xiàn)的單引號分隔符。 http://www.example.com/test.php?id=1 and 1=1,頁面運行正常,而且運行結果與http://www.example.com/test.php?id=1 一致。 http://www.example.com/test.php?id=1 and 1=2 , 運 行 出 現(xiàn) 異 常 或 者 和http://www.example.com/test.php?id=1 運行結果不一致。 如果以上三個步驟全部滿足,則說明一定存在 SQL 注入漏洞。 字符型參數(shù) 當輸入的字符串是字符串類型時,SQL 語句可能如下: Select * from table where 字段名=‘輸入的值’ 例如有 http://www.example.com/test.php?name=username,那么構造三個請求的步驟如下: http://www.example.com/test.php?name=username’,這個請求提交到服務器, 會生成 SQL 查詢語句 select * from table where id=1’,那么 test.php 會出現(xiàn)運行 異常,因為語句中出現(xiàn)了不該出現(xiàn)的單引號分隔符。 http://www.example.com/test.php?name=username’ and name=’name’,頁面運行正常,而且運行結果與 http://www.example.com/test.php?name=name 一致。 http://www.example.com/test.php? name=username and name=norname,運行結果出現(xiàn) 異?;蛘吆?http://www.example.com/test.php? name=usernameand 運行結果相 比較不一致。 如果以上三個步驟全部滿足,則說明一定存在 SQL 注入漏洞。

  2. 漏洞檢測子模塊

在利用檢測單元進行檢測時,檢測單元里面的SQL注入語句將一一添加在正常的訪問語句后面,然后發(fā)送到服務器并接受返回值。將構造出的請求提交給服務器并對結果進行分析,如果服務器返回“500”錯誤,且 SQL注入漏洞檢測模塊,可滿足多種數(shù)據(jù)庫的檢測,如MySQL、PostgreSQL、Microsoft SQL Server、Microsoft Access、Oracle、IBM DB2、SQLite、Sybase等。

如果HTTP響應狀態(tài)碼是200,那么還要繼續(xù)判斷這個頁面是否與正常返回的 頁面一致,所以繼續(xù)發(fā)送一個正常的請求,運用哈希算法比較正常返回的頁面與 發(fā)送攻擊字符串的頁面內容是否一致,如果一致則說明不存在 SQL 注入漏洞漏洞, 如果不一致,則說明數(shù)據(jù)庫的信息存在,存在 SQL 注入漏洞。

3.4.3 XSS漏洞掃描的實現(xiàn)

XSS漏洞掃描模塊的實現(xiàn),使用的編程開發(fā)語言為Python,XSS漏洞掃描模塊的類圖如圖3.12所示。

添加圖片注釋,不超過 140 字(可選)

圖 3.12 XSS漏洞掃描類圖

XSS漏洞檢測子系統(tǒng)主要是發(fā)現(xiàn)一個頁面是否存在XSS漏洞,主要完成功能如下:

1)根據(jù)爬蟲獵取的表單參數(shù),定位到要處理的表單;

2)生成各種不同的payload測試代碼,為了考慮提高測試的準確性和高效性,還需要采取一些了網(wǎng)頁編碼混淆技術,例如改變大小寫字母,URL 編碼,base64 編碼,增加分隔符,單引號,雙引號等,將測試代碼進行混淆編碼。

3)將生成各種不同的測試代碼進行注入并提交,舉一個例子說明如何構造能夠掃描 XSS 漏洞的URL請求,譬如有一個 GET 請求,它的URL 是 http://www.example.com/xss.php?file=article我們采用字符串”<script>alert('XSS')</script>”作為測試代碼,那么構造請求 URL 就為 http://www.example.com/xss.php?file=<script>alert('XSS')</script>。如果有一個 post 請求,則將每一個輸入域的值換成測試字符串,注意所有輸入域的測試字符串不能一樣,這樣找不出那個輸入域可能會有漏洞。findXSS 里面封裝了構建請求和發(fā)送請求。

4)分析添加XSS代碼后的響應頁面,以確定是否成功注入測試代碼,將構造出的 HTTP請求提交給服務器后,服務器處理請求返回一個 HTTP 響 應。首先對 HTTP 響應頭進行分析,如果 HTTP 響應狀態(tài)碼是“500”錯誤,那么 很有可能存在XSS 漏洞;如果 HTTP 響應狀態(tài)嗎是“200”,那么具體情況還得具體分析。HTTP 響應狀態(tài)碼是“200”,說明服務端可以順利地處理 HTTP 請求,并且產(chǎn)生響應返回。對于這樣的頁面,要檢測很多種響應的測試字符串的形式,服務器端很可能對用戶的輸入進行了轉義。檢測的方法就是判斷提交的測試字符串的各種形式是否在頁面中存在,如果存在則說明 XSS 漏洞,還可以再次對服務器發(fā)出正常請求,并且正常請求的響應和構造出來的請求的響應進行哈希值計算。如果哈希值一致則說明不存在 XSS 漏洞,否則存在 XSS 漏洞。

3.3.4 任務調度模塊的實現(xiàn)

根據(jù)本文3.3.4節(jié)對任務調度模塊的設計,任務調度模塊共有如下功能:

1)維護了用戶下達的漏洞掃描任務的所有信息,比如掃描任務的名稱、起止時間 、 所用掃描策略以及漏洞掃描報告等;

2)提供了將用戶下達的漏洞掃描任務切分成合適的粒度的子掃描任務的方法 ,這些子掃描任務將被分配給漏洞掃描器執(zhí)行,這一切分動作對用戶透明;

3)維護了子掃描任務的所有相關信息,為調度系統(tǒng)的其他模塊提供了操作子掃描任務的接口;

4)提供接口供用戶端操作總掃描任務,比如對漏洞掃描任務的增刪改查等。

任務調度模塊的類圖如圖3.13所示。

添加圖片注釋,不超過 140 字(可選)

圖 3.13 任務調度模塊類圖

  • 掃描任務的分類 在本文3.3.4節(jié)已經(jīng)介紹過,一個漏洞掃描任務分為兩類,一類是用戶直接操作的漏洞掃描任務Task;另一類是漏洞掃描器執(zhí)行的任務SubTask; 其中Task根據(jù)完成進度分為兩類: 已完成的總掃描任務; 未完成的總掃描任務。 SubTask根據(jù)是否被分配及掃描進度分為三類: 已完成的子掃描任務; 已分配未完成的子掃描任務; 未分配未完成的子掃描任務。

  • 各類屬性介紹 下面給出本模塊中三三個實現(xiàn)類TaskManager、Task 和SubTask 的屬性介紹3。TaskManager 類中維護了兩個列表: List<Task> completedTasks: 所有已完成總掃描任務的集合。 List<Task> uncompletedTasks: 所有未完成總掃描任務的集合。Task 中維護了的信息為: List<SubTask > unDispatchedTaskList :未分配子掃描任務列表 List<SubTask> beingTackledTaskList: 正在執(zhí)行子掃表任務列表 List<SubTask> completedTaskList :已完成子掃描任務列表 String taskID: 任務ID String taskName: 任務名稱 String targetFrom: 任務起始 IPStringtargetTo: 任務終止 IP double status: 任務執(zhí)行進度 booleanhigher: 若為真,則代表較高優(yōu)先級的漏洞掃描任務 SubTask 中記錄了子掃描任務的具體信息: String taskID: 任務ID String taskName: 任務名稱 String targetFrom: 任務起始 IPString targetTo: 任務終止 IPdouble status: 任務執(zhí)行進度 double isRunning: 該任務是否正在執(zhí)行 Scannerscanner: 當前執(zhí)行該掃描任務的漏洞掃描器實例

  • SubTask 狀態(tài)遷移 當某個子掃描任務被實例化之后,處于未分配狀態(tài),并等待被調度模塊分配給某個漏洞掃描器執(zhí)行。被某個漏洞掃描器執(zhí)行的子掃描任務在初始分配時處于“已分配、未完成”狀態(tài)。需要說明的是,處于這個狀態(tài)的子掃描任務只是被分配給了某個漏洞掃描器執(zhí)行,這個漏洞掃描器內部同樣有一套自身的調度機制,也就是說, 處于該狀態(tài)的子掃描任務只是能夠被漏洞掃描器進行調度執(zhí)行,而不能保證時刻處于被執(zhí)行狀態(tài)。這個任務具體的狀態(tài)有4種,分別為: 等待調度狀態(tài)、正被執(zhí)行狀態(tài)、暫停狀態(tài)和已完成狀態(tài)。“已分配、未完成”狀態(tài)的兩個后繼狀態(tài)分別是“已完成”狀態(tài)和終止狀態(tài)。當某個漏洞掃描任務在漏洞掃描器中成功執(zhí)行完成之后,將轉移到“已完成”狀態(tài)。 3.3.5 可用性檢測模塊的實現(xiàn) 可用性檢測模塊的實現(xiàn),主要借助已有的端口掃描和站點可用性探測工具,將其腳本集成到本文所述的安全漏洞掃描器中,實現(xiàn)站點信息獲取及站點可用性檢測的功能。 3.5 本章小結 本章針對傳統(tǒng)的對網(wǎng)站的每個URL進行每種漏洞類型的遍歷檢測這種效率低下、耗時過長的漏洞檢測機制,提出了基于優(yōu)化爬蟲策略的漏洞掃描器架構。網(wǎng)絡爬蟲在鏈接判重和遍歷策略兩個方面進行優(yōu)化,避免了大量重復無用的爬蟲鏈接,并提高了爬蟲的效率;結合改進的網(wǎng)絡爬蟲技術、SQL注入漏洞檢測方法、XSS注入漏洞檢測方法,介紹了 Web 應用安全漏洞掃描器各部分的詳細設計與實現(xiàn)。 本章分析了Web應用程序漏洞掃描程序的要求,并給出了系統(tǒng)的設計目標和所需的功能模塊。包括漏洞掃描程序體系結構的整體描述。漏洞掃描程序包括網(wǎng)絡爬網(wǎng)程序模塊,漏洞掃描模塊,用戶界面模塊和報告生成模塊。漏洞掃描模塊需要檢測多個漏洞。SQL注入漏洞檢測,XSS漏洞檢測,目錄遍歷漏洞檢測。詳細描述了每個功能模塊的設計。 第四章 Web應用安全漏洞掃描器測試及分析 Web應用安全漏洞掃描器測試是在真實運行環(huán)境中,采用測試用例測試掃描器所定義的功能和質量屬性是否滿足要求。測試的內容包括測試環(huán)境、測試用例、測試過程和測試結果分析等。 4.1 測試環(huán)境 4.1.1 掃描器部署環(huán)境 Web應用安全漏洞掃描器測試部署環(huán)境基于ubuntu系統(tǒng),采用Python語言進行開發(fā)。其物理分布和網(wǎng)絡環(huán)境如圖4.1部署圖所示。

添加圖片注釋,不超過 140 字(可選)

圖 4.1 Web應用安全漏洞掃描器部署圖 Web應用安全漏洞掃描器部署方式簡單,只需將掃描器接入到用戶網(wǎng)絡并確保掃描器與被檢測目標間網(wǎng)絡可達,在使用過程中,用戶通過瀏覽器訪問掃描器即可下達掃描指令和查看掃描結果。 4.1.2 漏洞測試環(huán)境 為了驗證本掃描器是否滿足本文的測試目的,本文選取了公司內部自己搭建的Web應用安全漏洞測試環(huán)境-Evn,作為Web應用程序掃描器的評估工具。Evn是一個包含Web應用程序漏洞的平臺,目的是幫助測試Web應用漏洞掃描器的功能、質量和準確性。Evn收集了很多獨特的包含漏洞的Web頁面,用于測試Web應用程序掃描器的多種特性。 由于本文主要研究的是SQL注入和XSS漏洞,所以將Evn部署在系統(tǒng)中后,對數(shù)據(jù)庫中的漏洞數(shù)目進行了一些調整。現(xiàn)有的漏洞數(shù)目為:SQL注入漏洞24個cases; XSS 漏洞13個 cases。 Evn測試環(huán)境截圖如下圖4.2、4.3所示:

添加圖片注釋,不超過 140 字(可選)

圖 4.2 SQL注入漏洞測試環(huán)境

添加圖片注釋,不超過 140 字(可選)

圖 4.3 XSS漏洞測試環(huán)境 4.2 測試過程 4.2.1 功能測試

  • 爬蟲功能、SQL注入及XSS漏洞檢測功能、可用性檢測功能測試 通過搭建的漏洞測試環(huán)境Evn,進行網(wǎng)絡爬蟲、SQL注入漏洞及XSS漏洞檢測、可用性檢測的功能測試。其測試結果如圖4.4所示。

添加圖片注釋,不超過 140 字(可選)

圖 4.4 掃描結果 由于掃描器的自動化檢測功能,對于用戶來說是透明的,我們可通過掃描結果來判斷功能是否實現(xiàn)。 從圖4.4可以看出,本文設計的Web應用安全漏洞掃描器,掃描出SQL注入漏洞19個,XSS漏洞10個。同時記錄掃描時間為4min53s。 通過UI交互界面的儀表盤,用戶可直觀看出漏洞掃描結果,如圖4.5所示。

添加圖片注釋,不超過 140 字(可選)

圖 4.5 漏洞分布情況展示

  • 任務調度功能

登錄進入后,添加新任務,界面如圖4.6所示。

添加圖片注釋,不超過 140 字(可選)

圖 4.6 添加新任務

添加XSS漏洞及SQL注入漏洞的掃描任務,查看掃描隊列,界面如圖4.7所示。

添加圖片注釋,不超過 140 字(可選)

圖 4.7 掃描隊列

4.2.2 非功能測試

Web應用安全漏洞掃描器是基于B/S架構設計實現(xiàn)的,通過友好的UI交互界面,可直接登錄使用,登錄界面如圖4.8所示。

添加圖片注釋,不超過 140 字(可選)

圖 4.8 登錄界面

掃描完成后,會生成漏洞報告,界面截圖如圖4.9所示。

添加圖片注釋,不超過 140 字(可選)

圖 4.9 漏洞報告

4.3 測試結果分析

上一節(jié)主要列出的是基于優(yōu)化爬蟲策略的漏洞掃描器掃描結果。為了證明其性能的改進,還需對其掃描結果與其他掃描器的掃描情況進行比較。我們主要從兩個方面進行比較:一個是掃描器的掃描速率;另一個是掃描器對漏洞掃描的覆蓋率。

表 4.1 本文設計漏洞掃描器與其他兩款掃描器掃描結果對比表

指標項/掃描器

本文設計漏洞掃描器

WVS

AppScan

掃描時間

4min53s

8min24s

10min5s

SQL注入漏洞數(shù)(個)

19

12

8

XSS漏洞數(shù)(個)

10

7

6

表4.1中,我將本文設計的Web應用安全漏洞掃描器與其他兩款掃描器掃描結果進行對比,驗證了本方設計 的Web應用安全漏洞掃描器在掃描速率及漏洞覆蓋率方面性能更優(yōu)。

4.4 本章小結

本章的主要工作是完成Web應用安全漏洞掃描器的功能性及非功能性測試,在介紹系統(tǒng)部署環(huán)境、漏洞測試環(huán)境的基礎上,使用本文設計實現(xiàn)的Web應用安全漏洞掃描器對主流的Web應用安全漏洞XSS漏洞及SQL注入漏洞進行測試,并選取了兩款業(yè)內常用的Web應用安全漏洞掃描器來進行對比測試,驗證系統(tǒng)的可用性,高效性和結果全面性。

本章介紹了 Web應用漏洞掃描器各個模塊的具體實現(xiàn)過程,首先介紹了掃描器

的用戶界面模塊,然后介紹了網(wǎng)絡爬蟲模塊的實現(xiàn)過程,包括提取所有 URL,URL

標準格式化,URL過濾,URL參數(shù)變換等過程。它能提高漏洞掃描器的性能,接著

介紹了三個典型的web應用漏洞的掃描模塊的實現(xiàn)。最后介紹了如何生成一份格

式良好的安全漏洞報告。

第五章 結束語

本章是本人對論文工作的總結。在給出論文工作結論的基礎上,分條目介紹論文主要完成的工作,并對Web應用安全漏洞掃描器進行客觀評價和分析,提出后續(xù)改進的建議。

5.1 論文工作總結

隨著互聯(lián)網(wǎng)技術的不斷發(fā)展, 安全漏洞的攻擊也愈演愈烈,大量的針對于網(wǎng)絡設備或者服務器的攻擊開始逐漸轉移到Web應用上來,Web應用安全漸漸成為了一種主要的網(wǎng)絡安全問題。與此同時,網(wǎng)絡安全技術也在快速成熟,用戶的安全意識也在不斷增強。越來越多的用戶特別是企業(yè)用戶開始使用漏洞掃描器給系統(tǒng)進行安全掃描。商業(yè)版、家庭版及開源的漏洞掃描器層出不窮。因此,如何提高Web應用漏洞掃描程序的掃描速率及掃描覆蓋率成為了一個熱門的課題,對Web漏洞掃描器進行分析和改進也具有很大的現(xiàn)實意義。

本文設計并實現(xiàn)了Web應用安全漏洞掃描器,以優(yōu)化爬蟲技術作為切入點,主要從以下幾個方面進行研究:

1、對目前的Web應用安全狀況進行了全面的分析,確定對Web漏洞掃描器的研究具有重要的理論意義和實用價值。

2、詳細介紹了網(wǎng)絡爬蟲的基本概念、爬取策略及其在漏洞掃描中的作用;同時對漏洞的基本概念、產(chǎn)生原因、漏洞類型、漏洞檢測技術等進行詳細的闡述,特別是SQL注入漏洞和XSS漏洞。

3、通過對國內外漏洞掃描器三個方面的量化對比,總結出為提升掃描器效率而亟需改進的地方。

4、設計了優(yōu)化爬蟲策略,SQL注入和XSS漏洞的檢測機制,在此基礎上設計并實現(xiàn)了基于插件式擴展的Web應用安全漏洞掃描器。

5、通過對所設計的Web應用安全漏洞掃描器性能的測試對比,證明了掃描器的可用性、高效性及掃描結果的全面性。

5.2 后續(xù)工作展望

?

參考文獻

[1] 王偉軍, 孫晶. Web2. 0 的研究與應用綜述[J]. 情報科學, 2008, 25(12): 1907-1913.

[2]趙鑫,朱東來,楊宏. 高效移動互聯(lián)網(wǎng)網(wǎng)站安全監(jiān)測方法研究與實現(xiàn)[A]. 中國通信學會無線及移動通信委員會.2013全國無線及移動通信學術大會論文集(上)[C].中國通信學會無線及移動通信委員會:,2013:3.

[3]王璇. 基于網(wǎng)絡漏洞的掃描器的研究與應用[D].吉林大學,2012.

[4]丁妮. Web應用安全研究[D].南京信息工程大學,2007.

[5]劉明明. Web應用漏洞掃描器的設計與實現(xiàn)[D].電子科技大學,2014.

[6]楊興春, 牟劍平. 政府門戶網(wǎng)站安全現(xiàn)狀, 原因及其對策研究[J]. 網(wǎng)絡安全技術與應用,2010 (9): 32-34.

[7]尹虹. Web 應用程序漏洞主動掃描器的研究與實現(xiàn)[D]. 國防科技大學, 2005.

[8]付堂歡. 基于網(wǎng)絡的web應用漏洞掃描系統(tǒng)的分析與設計[D].北京郵電大學,2013.

[9]孫群,漆正東.Web聊天室探測系統(tǒng)的網(wǎng)頁獲取和改進研究[J].計算機光盤軟件與應用,2012, 3: 118.

[10]張燁青. Web應用安全漏洞掃描器爬蟲技術的改進與實現(xiàn)[D].北京郵電大學,2014.

[11] 俞小怡,常艷,許捍衛(wèi).Web 應用中的攻擊防御技術的研究與實現(xiàn)[J].計算機安全,2008(6):47-51.

[12] 趙亭,陸余良等.基于表單爬蟲的 Web 漏洞探測[J].計算機工程,2008,34(9):186-188,215.

[13]黃從韜. 面向Web服務安全的漏洞掃描器的設計與實現(xiàn)[D].中南大學,2012.

[14]郭俸明. 漏洞掃描工具原理與實現(xiàn)[D].中國地質大學(北京),2008.

[15]尹虹. Web應用程序漏洞主動掃描器的研究與實現(xiàn)[D].國防科學技術大學,2005.

[16]閆美鳳. 策略驅動的可擴展網(wǎng)絡漏洞掃描研究[D].太原理工大學,2006.

[17]蔣宇. 面向 Web 安全的漏洞檢測系統(tǒng)的研究與實現(xiàn) [D]. 吉林大學, 2011.

[18]陳濤.基于網(wǎng)絡的漏洞掃描器設計與實現(xiàn)[J].電腦知識與技術,2008(11):235-236.

[19]劉欣萍.企業(yè)網(wǎng)絡信息安全問題及策略[J].電子商務,2013,2: 024.

[20]楊新英. 基于網(wǎng)絡爬蟲的Web應用程序漏洞掃描器的研究與實現(xiàn)[D].電子科技大學,2010.

[21]劉莉. 網(wǎng)絡漏洞掃描器的設計與實現(xiàn)[D].西安電子科技大學,2007.

[22]李鵬,楊獻榮,許麗華.網(wǎng)絡漏洞掃描器的設計與實現(xiàn)[J].計算機工程,2003(08):116-117+142.

[23]胡軍偉, 秦奕青, 張偉. 正則表達式在 Web 信息抽取中的應用[J]. 北京信息科技大學學報: 自然科學版, 2012, 26(6): 86-89.

http://aloenet.com.cn/news/43603.html

相關文章:

  • 企業(yè)網(wǎng)站的推廣形式有哪些中國軟文網(wǎng)官網(wǎng)
  • 有沒有做網(wǎng)站的軟件百度快照是什么
  • 貸款超市網(wǎng)站開發(fā)sem優(yōu)化服務公司
  • 如何自己做網(wǎng)站知識網(wǎng)絡營銷類型
  • 廣州專業(yè)網(wǎng)站建設性價比高google學術搜索
  • 佛山建站公司哪家好騰訊云域名注冊
  • 畢業(yè)設計做網(wǎng)站lowseo查詢軟件
  • 河南網(wǎng)站建設價位柳州網(wǎng)站建設哪里有
  • 自己做網(wǎng)站申請域名百度廣告電話號碼是多少
  • 網(wǎng)站代碼優(yōu)化方法廣州信息流推廣公司排名
  • 空濾網(wǎng)站怎么做百度網(wǎng)站排名規(guī)則
  • 企業(yè)網(wǎng)站優(yōu)化方案模板免費發(fā)布廣告
  • 晉中路橋建設集團有限公司網(wǎng)站公司想做網(wǎng)絡推廣貴不
  • 在上面網(wǎng)站上可以做統(tǒng)計圖亞馬遜市場營銷案例分析
  • 楚風網(wǎng)站建設工作室網(wǎng)絡公司網(wǎng)站
  • 自己制作wordpress plugin網(wǎng)站 seo
  • 上海嘉定網(wǎng)站百度網(wǎng)訊科技有限公司官網(wǎng)
  • 屋頂平臺設計效果圖大全淘寶優(yōu)化
  • 單頁面營銷型網(wǎng)站制作網(wǎng)絡推廣方法有哪些
  • 包包網(wǎng)站建設可行性分析網(wǎng)店運營培訓哪里好
  • 成都免費招聘網(wǎng)站溫州seo推廣外包
  • 網(wǎng)站單獨頁面怎么做301重定向小紅書關鍵詞檢測
  • 中職示范校建設網(wǎng)站凡科建站怎么用
  • 騰訊云做網(wǎng)站干什么用優(yōu)化防控措施
  • 網(wǎng)站建設 軟件開發(fā)的公司排名晚上國網(wǎng)app
  • 一級a做愛視頻網(wǎng)站互聯(lián)網(wǎng)推廣方案
  • 簡約創(chuàng)意情人節(jié)海報設計seo關鍵詞優(yōu)化公司哪家好
  • 空間印象商業(yè)空間設計seo公司費用
  • 建站員工網(wǎng)站推廣公司品牌
  • 網(wǎng)站有什么seo在線優(yōu)化工具