版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
-12-基于網(wǎng)絡(luò)爬蟲的高校Web應(yīng)用漏洞檢測與分析摘要在如今這個網(wǎng)絡(luò)飛速發(fā)展的時代,網(wǎng)絡(luò)信息安全問題受到社會極高的重視。在其中,高校網(wǎng)絡(luò)安全又尤其引人關(guān)注。對于高校而言,要實現(xiàn)信息化和現(xiàn)代化網(wǎng)絡(luò)的發(fā)展不受到影響,就必須要重視網(wǎng)絡(luò)安全問題。我認為高校網(wǎng)絡(luò)安全的重要作用,是能提高系統(tǒng)建設(shè)水平,并且能夠進一步提高對數(shù)據(jù)安全性的管理,關(guān)鍵還有他可以拉近師生之間的距離。高校校園網(wǎng)在方便了師生的日常工作與學習的同時,也由于校園網(wǎng)本身擁有共享性、交互性、接觸性等特點而頻繁遭受攻擊,已經(jīng)嚴重影響到學校和師生的利益,所以這就讓如何保證網(wǎng)絡(luò)通暢、信息完整顯得尤為重要。因此,本文將通過網(wǎng)絡(luò)爬蟲技術(shù),對出現(xiàn)較多的常見漏洞進行特征提取和分析并進行統(tǒng)計,制定合適的檢測方法并應(yīng)用于高校網(wǎng)絡(luò)中。關(guān)鍵字:網(wǎng)絡(luò)安全;網(wǎng)絡(luò)爬蟲;Web漏洞目錄TOC\o"1-3"\h\u第1章緒論 11.1課題設(shè)計的背景、意義及目的 11.1.1課題背景和意義 11.1.2設(shè)計目的 11.2課題現(xiàn)狀 11.2.1爬蟲技術(shù)現(xiàn)狀 11.2.2web應(yīng)用漏洞檢測現(xiàn)狀 21.3設(shè)計內(nèi)容 31.4本章小結(jié) 3第2章需求分析 4第3章核心技術(shù)介紹 53.1網(wǎng)絡(luò)爬蟲技術(shù)的原理 53.2WEB漏洞介紹 63.2.1SQL注入漏洞 63.2.2XSS漏洞 73.3漏洞掃描技術(shù)介紹 83.4本章小結(jié) 9第4章詳細設(shè)計 104.1爬蟲主體部分設(shè)計 104.2.1url管理器 104.2.1網(wǎng)頁下載器 114.2.1爬蟲主函數(shù)部分 124.2漏洞掃描檢測相關(guān)設(shè)計 134.2.1插件系統(tǒng) 134.2.2插件系統(tǒng)的調(diào)用 134.2.3sql注入漏洞檢測 144.2.4sql注入檢測腳本融入插件系統(tǒng) 144.2.5e-mail掃描插件 154.2.6XSS漏洞檢測插件 154.2.7web指紋識別掃描器 164.2.8端口掃描與系統(tǒng)指紋分析 174.2.9敏感目錄爆破 184.2.10CDN檢測 194.2.11自動生成網(wǎng)頁報告 194.3本章小結(jié) 19第5章漏洞檢測程序運行測試 205.1程序的運行環(huán)境 205.2程序所完成的工作 205.3程序的運行結(jié)果 205.4本章小結(jié) 22結(jié)論 23參考文獻 24第1章緒論1.1課題設(shè)計的背景、意義及目的1.1.1課題背景及意義:隨著現(xiàn)代科技的發(fā)展,網(wǎng)絡(luò)普及已經(jīng)是當今社會的一種現(xiàn)狀,中國的信息化網(wǎng)絡(luò)也處于一個重要的變革階段,但在網(wǎng)絡(luò)極大的方便人們的同時,也會存在一些安全漏洞。現(xiàn)在各大高校都擁有自己獨具特色的校園網(wǎng)站和師生數(shù)據(jù)庫,而web漏洞會造成這些隱私信息的泄露,導(dǎo)致教師與學生的學習和工作面臨著巨大的風險。Python腳本語言,由于其具有優(yōu)秀的解釋性、交互性以及運用方便等特性,使其成為如今應(yīng)用十分廣泛的程序設(shè)計語言。也由于python語言擁有獨特的結(jié)構(gòu)化代碼在大大提高程序開發(fā)維護的效率的同時,又具有良好的可讀性,因此成為了編程初學者的不二選擇,由此讓python腳本語言迅速發(fā)展成為了熱門程序開發(fā)語言之一。使用Python腳本語言所編寫的網(wǎng)絡(luò)爬蟲設(shè)計具有獨特的優(yōu)勢,Scraping自動爬蟲框架就是基于Python腳本語言開發(fā)出來并封裝的,利用此框架可以實現(xiàn)定向的數(shù)據(jù)爬取任務(wù)。在實際運行過程中,想要運用此自動爬蟲框架來快速獲取所需要的準確網(wǎng)頁數(shù)據(jù),就只需要提前填入設(shè)計好的爬蟲規(guī)則,便可以執(zhí)行。1.1.2設(shè)計目的:Web應(yīng)用安全問題日益惡化,當務(wù)之急是為其制定一個盡可能完善的安全策略,使其能夠進行及時有效的安全管理。在信息安全技術(shù)發(fā)展迅速的當下,web漏洞掃描技術(shù)在信息安全中的地位正日益高升,其中,網(wǎng)絡(luò)爬蟲技術(shù)是至關(guān)重要的一部分。網(wǎng)絡(luò)爬蟲作為分析網(wǎng)絡(luò)數(shù)據(jù)的得力工具,也一直在不斷發(fā)展著,越來越多的網(wǎng)絡(luò)安全技術(shù)人員不斷加緊摸索著網(wǎng)絡(luò)爬蟲技術(shù)如何應(yīng)用到web漏洞掃描中,這樣能夠在拓新發(fā)展網(wǎng)絡(luò)爬蟲技術(shù)應(yīng)用的同時,也能使web應(yīng)用安全技術(shù)同步進展。1.2課題現(xiàn)狀1.2.1爬蟲技術(shù)現(xiàn)狀互聯(lián)網(wǎng)承載著龐大的數(shù)據(jù)信息和無數(shù)網(wǎng)頁,當我們需要從中查詢我們需要的、感興趣的信息時,我們不可能只依靠眼睛和雙手來反復(fù)查看每個網(wǎng)頁,因此我們需要能夠幫助我們快速獲取網(wǎng)頁內(nèi)容并能按照需求提取信息的程序,也就是網(wǎng)絡(luò)爬蟲。網(wǎng)絡(luò)爬蟲技術(shù)是搜索引擎的核心技術(shù)之一,在1993年第一個網(wǎng)絡(luò)爬蟲誕生以來經(jīng)歷了二十多年的發(fā)展,這項技術(shù)也越來越開發(fā)應(yīng)用于多種領(lǐng)域。如今已是AJAX/Web2.0的流行時期,已然使用爬的方式已經(jīng)無法解決抓取動態(tài)頁面的問題,因此接下來所需開發(fā)的爬蟲引擎必然是要基于驅(qū)動的。1.2.2web應(yīng)用漏洞檢測現(xiàn)狀漏洞又被稱為脆弱性,它是程序中存在的不符開發(fā)者、維護者本意的特性。如果有攻擊者以漏洞作為突破點,便可以執(zhí)行非法操作甚至獲取一些敏感信息。Web應(yīng)用攻擊的主要來源是用戶輸入?;ヂ?lián)網(wǎng)飛速發(fā)展的現(xiàn)在,web應(yīng)用程序也已從開始的只提供靜態(tài)資源,發(fā)展到現(xiàn)在的能夠結(jié)合使用數(shù)據(jù)庫與用戶進行動態(tài)交互。由于Web應(yīng)用程序是必須要接受用戶輸入的服務(wù)模式,因此而為攻擊者提供了可乘之機,使攻擊者可以發(fā)現(xiàn)并利用漏洞進行非法操作。隨著近些年來網(wǎng)絡(luò)層安全技術(shù)的發(fā)展,web應(yīng)用程序漏洞也越來越受到人們的關(guān)注。對于web應(yīng)用程序的漏洞掃描技術(shù)的,國內(nèi)已經(jīng)出現(xiàn)了很多大能進行了研究:①黃從韜曾經(jīng)針對web應(yīng)用漏洞的成因以及相應(yīng)的檢測方法做出了深入的探討與研究,利用了漏洞發(fā)掘技術(shù)的不斷更新變化的特點,設(shè)計出并實現(xiàn)了一種能夠基于規(guī)則與插件的可擴展漏洞檢測方案,此方案靈活應(yīng)用了動態(tài)鏈接庫技術(shù),其通過對掃描插件的重新規(guī)劃定義,實現(xiàn)了插件的擴展,并于此同時研發(fā)了編譯碼和http請求響應(yīng)與解析等此類基礎(chǔ)工具,大大方便了操作又提高了web應(yīng)用程序漏洞掃描的檢測效率。②孫曉飛曾發(fā)表過對于web應(yīng)用漏洞分析與檢測的研究,其研究了如何將網(wǎng)絡(luò)爬蟲對web網(wǎng)站的頁面信息爬取融入到漏洞掃描系統(tǒng)的整體架構(gòu)設(shè)計中,并且還運用了爬蟲的多線程技術(shù),在網(wǎng)絡(luò)的爬蟲率得到改善的同時,有采用漏洞檢測插件化技術(shù)大大提高了它的可擴展性。如今,國內(nèi)外都已有不少對于web應(yīng)用漏洞的檢測研究設(shè)計。Web應(yīng)用漏洞檢測大體上分為兩種方式,一種是動態(tài)檢測方式即黑盒檢測,它通過獲取程序的輸入、輸出等具體運行狀況信息,對其進行分析檢測,來查找應(yīng)用程序中存在的安全隱患;另一種就是靜態(tài)檢測方式即白盒檢測,它是通過對程序的源代碼和程序的執(zhí)行流程進行分析,以建立相應(yīng)的數(shù)據(jù)模型,對此進行分析檢測來發(fā)現(xiàn)程序中存在的漏洞。1.3設(shè)計內(nèi)容本論文將使用python語言設(shè)計一種基于網(wǎng)絡(luò)爬蟲技術(shù)的web漏洞分析檢測方案,以實現(xiàn)其對web應(yīng)用程序掃描檢測出SQL注入漏洞、跨站點腳本漏洞這兩種web應(yīng)用常見的漏洞。本設(shè)計的大致流程如下:(1)頁面過濾:通過爬蟲的自動化程序抓取頁面,對其中所包含的web頁面進行url提取。(2)url檢測與去重:對從網(wǎng)頁中所爬取出來的url進行檢測匹配,提取其中的未進行漏洞檢測的url加入隊列,并將重復(fù)的url剔除,進行去重,以便執(zhí)行下一步。(3)漏洞檢測:將未檢測且去重后的url從隊列中提取出來,由已經(jīng)編譯好的漏洞檢測程序?qū)υ趗rl的參數(shù)部分進行參數(shù)變更,以進行漏洞檢測,也就是對服務(wù)器進行模擬漏洞攻擊。然后根據(jù)服務(wù)器返回的結(jié)果,來判斷其中是否存在需要檢測的某種漏洞。1.4本章小結(jié)本章主要介紹了基于網(wǎng)絡(luò)爬蟲的web漏洞檢測技術(shù)對于網(wǎng)絡(luò)安全的重要意義及web漏洞檢測技術(shù)的現(xiàn)狀,并簡要介紹了本文的主要設(shè)計內(nèi)容。
第2章需求分析據(jù)統(tǒng)計,截至2017年底時,我國就已經(jīng)有526.06萬個網(wǎng)站和2604億個網(wǎng)頁,而這只是距今三年多以前的數(shù)據(jù),現(xiàn)在是網(wǎng)絡(luò)飛速發(fā)展的時期,到現(xiàn)在我國到底有多少網(wǎng)站和網(wǎng)頁,由于沒有具體統(tǒng)計暫不可知,但可以想象出這個數(shù)字必然是極其龐大的。而隨著這些網(wǎng)站網(wǎng)頁呈指數(shù)增長的同時,也帶來了管理方面的嚴峻挑戰(zhàn)。如今人們在上網(wǎng)時,經(jīng)常會看到很多帶有虛假、色情、暴力的廣告信息,這嚴重的影響著網(wǎng)民們的日常工作與學習,這其中有很多是攻擊者利用網(wǎng)頁的漏洞輸入的。這種行為時刻影響著整個社會,給個人、公司與社會造成了嚴重的威脅。以某些即時消息應(yīng)用程序為例,其平臺每天都會有大量的用戶訪問,擁有極高的閱讀量和發(fā)送量,這就使得用戶的個人行為不當會被無數(shù)人傳播,影響會被不斷放大,成為集體性的社會行為,最終會形成輿論風暴。因此,對于一個這種類型的公司來講,如何控制網(wǎng)絡(luò)平臺上的各種輿論消息,并對其進行疏導(dǎo)、化解以及事后處理是非常關(guān)鍵的。在這其中就會使用到爬蟲技術(shù),像是微博、微信、QQ這些國內(nèi)知名的社交平臺,一個完善的反爬蟲機制是必須的,而且為了準確又高效的收集相關(guān)信息,也是需要應(yīng)用爬蟲技術(shù)的。在這個網(wǎng)絡(luò)安全問題嚴峻的態(tài)勢下,我們急需針對網(wǎng)絡(luò)安全方面進行一系列的攻防演習,用以加強防范手段,例如在2016年時,我國就曾進行過“護網(wǎng)行動”,讓網(wǎng)絡(luò)安全防范意識深入人們的心中。本設(shè)計就是通過模擬漏洞攻擊,來達到檢測漏洞的目的。目前常見的web漏洞有SQL注入、跨站點腳本(XSS)、緩沖區(qū)溢出、cookies修改、上傳漏洞、命令行注入(webshell)這幾種。其中SQL注入漏洞是黑客對數(shù)據(jù)庫進行入侵的常用攻擊手段之一;XSS是經(jīng)常在web應(yīng)用中出現(xiàn)的一種漏洞,他能夠讓惡意web用戶將惡意代碼植入到供他人使用的頁面中。本文將主要介紹這兩種種漏洞。
第3章核心技術(shù)介紹3.1網(wǎng)絡(luò)爬蟲技術(shù)的原理網(wǎng)絡(luò)爬蟲本質(zhì)上是一種能夠自動下載網(wǎng)頁數(shù)據(jù)并根據(jù)設(shè)定的規(guī)則采集篩選數(shù)據(jù)等功能的計算機程序,它也是搜索引擎用來抓取系統(tǒng)的重要部分,因此能夠應(yīng)用于各個領(lǐng)域的用途,比如網(wǎng)頁開發(fā)、數(shù)據(jù)處理等等。在如今互聯(lián)網(wǎng)數(shù)據(jù)不斷增長的時代,網(wǎng)絡(luò)爬蟲技術(shù)能夠很好的解決如何在互聯(lián)網(wǎng)中獲取指定信息的問題。在我們平時上網(wǎng)時都是使用瀏覽器在網(wǎng)絡(luò)中進行查詢信息,而爬蟲就像是瀏覽器一樣,對目標服務(wù)器發(fā)出請求信息,收到響應(yīng)后再對其進行解析以獲取所需要的信息。爬蟲的類型可以根據(jù)其功能分為通用網(wǎng)絡(luò)爬蟲、聚焦網(wǎng)絡(luò)爬蟲、增量式網(wǎng)絡(luò)爬蟲和深層網(wǎng)絡(luò)爬蟲等。接下來對這幾種爬蟲類型進行較詳細的介紹:(1)通用網(wǎng)絡(luò)爬蟲:此類型在根據(jù)url指向爬行的過程中,一般都會采用廣度優(yōu)先或深度優(yōu)先策略,然后通過url補充到web中,每一級每一層的進行網(wǎng)頁鏈接訪問。此方式適用于對某單一信息的大范圍搜索,通常是應(yīng)用于大部分搜索引擎,也有一些大型的web服務(wù)商會需要應(yīng)用此方式。通用網(wǎng)絡(luò)爬蟲所常用的兩種策略:①廣度優(yōu)先策略(BFS):也可以將其稱為寬度優(yōu)先搜索策略或者橫向優(yōu)先搜索策略。廣度優(yōu)先策略在最初是將它作為一種利用圖形的具有直觀特點的搜索算法而被提出來的,可以說是將其看作像是樹根一樣的節(jié)點開始搜索,然后順著樹的寬度來將每一層的節(jié)點遍歷,當整個樹上存在的節(jié)點都遍歷過后就會停止搜索。此策略一般都是使用open-closed表來實現(xiàn)的。接下來介紹一下廣度優(yōu)先策略的具體搜索流程:首先根據(jù)爬取得到的頁面結(jié)構(gòu),將網(wǎng)頁的所有站點依次劃分為不同的層次,然后自上而下按照分好的順序?qū)⒚繉佣歼M行爬取。先將之前已經(jīng)分好的上層的鏈接爬取,在把這一層次的網(wǎng)頁數(shù)據(jù)全都爬取完成之后,再接著向下,對下一個已經(jīng)劃分好的層次進行爬取。BFS當然也是可以進行多線并行爬取的,如此做能過大大加快整個程序的工作速度,從而提升整體效率。這樣就可以在較大的程度上提高網(wǎng)絡(luò)爬蟲系統(tǒng)爬取網(wǎng)站上的信息的效率,與此同時也可以對網(wǎng)絡(luò)爬蟲系統(tǒng)在爬取網(wǎng)頁上的站點的深度進行人為地自定義和控制,從而能夠避免網(wǎng)絡(luò)爬蟲系統(tǒng)由于太過深入網(wǎng)頁當中,致使網(wǎng)絡(luò)爬蟲程序無法通過正常方式終止運行;②深度優(yōu)先策略:在網(wǎng)絡(luò)爬蟲技術(shù)剛剛開始發(fā)展的時期,深度優(yōu)先策略是最常用的策略,采用這種策略想要達到的結(jié)果,是要讓網(wǎng)頁中的站點的最底層中,沒有重復(fù)url的網(wǎng)頁。這種策略的運行方式,就是當網(wǎng)絡(luò)爬蟲爬取到一個html文件中的一個鏈接時,立刻對該鏈接指向的網(wǎng)頁進行深度優(yōu)先搜索,由此先建立一條完整的路徑,在對網(wǎng)頁中的其他鏈接繼續(xù)爬取??傮w來說,深度優(yōu)先策略就是先沿著從網(wǎng)頁中爬取解析的一個鏈接進入下一個鏈接,如此循環(huán)直到無法繼續(xù)深入為止,形成一條由鏈接組成的線路,然后回到第一個鏈接所在的網(wǎng)頁,再從中選擇一個不與之前重復(fù)的鏈接,進行與先前一致的操作操作繼續(xù)爬取,一直到第一個網(wǎng)頁中已經(jīng)沒有其他可再進行爬取的鏈接,至此說明本次搜索已結(jié)束。深度優(yōu)先策略最大的最明顯的缺點就是如果爬取的網(wǎng)頁節(jié)點結(jié)構(gòu)太深的話,會造成爬取效率低下,資源浪費嚴重的問題。因此此方法適用于那些網(wǎng)頁節(jié)點結(jié)構(gòu)不太復(fù)雜不太深的網(wǎng)站。(2)聚焦網(wǎng)絡(luò)爬蟲:它是根據(jù)鏈接結(jié)構(gòu)評價和內(nèi)容評價,并按照設(shè)定的目標進行選擇性爬去。使用這種方式進行查詢時,它會將輸入的查詢詞作為主題,所查找或下載的信息都是圍繞著主題提取的。而在對鏈接進行評價的過程中,是需要運用半結(jié)構(gòu)化的文檔web頁面的,并且會使用到PageRank算法。因此,建立語境圖和引入增強學習都能夠在使用聚焦網(wǎng)絡(luò)爬蟲方式時,有效的進行爬行策略制定。(3)增量式網(wǎng)絡(luò)爬蟲:使用此方式是根據(jù)網(wǎng)頁更新頻率的差別來制定不同的策略的一種爬蟲策略,它會對已爬取過的網(wǎng)頁采取增量式更新策略進行數(shù)據(jù)存儲,按照網(wǎng)頁更新頻率進行爬取,也就是只會爬取剛剛更新的數(shù)據(jù)。這種策略相較于優(yōu)先策略它能夠避免浪費硬件、網(wǎng)絡(luò)等資源,不會發(fā)生爬取大量重復(fù)信息,導(dǎo)致系統(tǒng)利用效率下降的狀況。(4)深層網(wǎng)絡(luò)爬蟲:經(jīng)過靜態(tài)鏈接和傳統(tǒng)的搜索引擎得到的一般都是表層網(wǎng)頁信息,而利用深層網(wǎng)絡(luò)爬蟲方式可以獲取深層次網(wǎng)頁的數(shù)據(jù)。使用深層網(wǎng)絡(luò)爬蟲進行爬取時,首先會根據(jù)領(lǐng)域知識來進行表單填寫,然后再執(zhí)行語義分析以此獲取關(guān)鍵詞,最后提交關(guān)鍵詞之后就能夠獲取web頁面。也可以進行根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)的分析來填寫表單,然后使用DOM樹的形式來表示html網(wǎng)頁。3.2WEB漏洞介紹3.2.1SQL注入漏洞:sql注入漏洞一種最常見且危害甚大的漏洞。Web應(yīng)用為用戶服務(wù)的流程一般都是通過利用數(shù)據(jù)庫實現(xiàn)的,web應(yīng)用程序收到用戶的輸入后,將其作為數(shù)據(jù)項或者條件項來嵌入sql語句中,然后用戶就可以通過這種方式執(zhí)行sql語句來對數(shù)據(jù)庫進行各種操作。因為SQL是一種解釋性語言,由于其在執(zhí)行中的機器代碼是由SQL解釋器生成,這就讓一些承載SQL程序片段的攻擊荷載未經(jīng)處理就能被解釋為程序指令,從而使得程序的邏輯發(fā)生變化以達到攻擊者的目的。由此可以大致總結(jié)此漏洞的形成原因有兩點:①程序員在對程序與數(shù)據(jù)庫交互時的處理,是用字符串拼接的方式構(gòu)造的SQL語句,采用此方法構(gòu)造的SQL語句安全性不足;②沒有對用戶可以操控的可變更參數(shù)進行細致的篩選過濾,就將其納入到SQL語句中,也就是安全防范意識不足。對付這種常見的漏洞的方法也是有很多的:①使用自帶的設(shè)置好的預(yù)編譯來處理輸入的參數(shù);②仔細檢測用戶所輸入的sql關(guān)鍵詞,并對這些關(guān)鍵詞進行攔截、過濾或轉(zhuǎn)義等操作;③限制用戶的操作權(quán)限,使用戶對于每種操作都只能使用僅能完成此操作的最低權(quán)限賬號;④制定計劃,周期地審計數(shù)據(jù)庫的執(zhí)行日志,檢測其中是否有異常的SQL語句執(zhí)行過;⑤刪掉一些不必要的數(shù)據(jù)庫功能,以防止被攻擊者利用。3.2.2XSS漏洞:XSS漏洞即跨站腳本漏洞,這是一種利用瀏覽器的一些特性以程序的使用者為目標的攻擊漏洞。因為web應(yīng)用程序的服務(wù)器是用有限的和可控制的方式進行的,而且客戶端的數(shù)據(jù)極其龐大,還可以應(yīng)用多種瀏覽器,這就導(dǎo)致會有大量的攻擊向量針對客戶端。XSS漏洞的產(chǎn)生原因是web應(yīng)用對于用戶輸入的管理不嚴格,導(dǎo)致攻擊者利用這一點將惡意代碼注入網(wǎng)頁中,使其呈現(xiàn)給其他訪問用戶并被觸發(fā)執(zhí)行。當攻擊成功,攻擊者就可以獲得更高的權(quán)限以進行各種非法操作。XSS跨站腳本攻擊有三種類型:①反射式XSS,使用這種方式的攻擊者會利用郵件、即時通信等途徑將帶有惡意攻擊的url發(fā)送給被害者,一旦被害者點擊觸發(fā),它就會立刻通過服務(wù)器漏洞為被害者傳送帶有攻擊腳本的頁面,并在其瀏覽器中運行,使被害者受到XSS攻擊;②存儲式XSS,使用這種方式的攻擊者首先會將攻擊腳本上傳到web應(yīng)用程序中的一個頁面里,等待被害者訪問。當被害者訪問該頁面后,攻擊腳本就會立刻執(zhí)行,使被害者受到攻擊。如果攻擊者上傳的網(wǎng)頁是需要用戶認證登錄的,會造成用戶會話身份信息泄露的風險。由于此方式不需要攻擊者主動參與過多,因此很難防范,威脅甚大;③DOM式XSS,這種攻擊方式是攻擊者使用JavaScript腳本動態(tài)創(chuàng)建并上傳至網(wǎng)頁中的,被害者訪問后,會由用戶本地的JavaScript腳本來觸發(fā)攻擊。此方法的隱蔽性很高,很難被發(fā)現(xiàn),只能通過人工手動發(fā)現(xiàn)。關(guān)于XSS漏洞的防御手段:①利用轉(zhuǎn)義函數(shù),比如htmlentities()函數(shù),可以用來轉(zhuǎn)義頁面的文本;②添加httponly,可以在cookie里添加httponly屬性,這樣能夠?qū)ΡWo用戶cookie起到作用,能夠降低被XSS攻擊的損失;③基于黑名單、白名單過濾,基于白名單的過濾效果會更好一些,可以直接忽略白名單以外的用戶的輸入,但是關(guān)鍵點是要如何在保證用戶體驗的同時建立白名單。3.3漏洞掃描技術(shù)介紹漏洞掃描技術(shù)是一種用于主動防御的重要網(wǎng)絡(luò)安全技術(shù),與防火墻和入侵檢測系統(tǒng)配合,就能夠達到一個很高的網(wǎng)絡(luò)安全防護水平。漏洞掃描的工作過程是通過模仿黑客攻擊,在正常http請求中植入攻擊腳本,由此來通過各種技術(shù)檢測,將測試結(jié)果與受到攻擊的服務(wù)器返回結(jié)果對比來判斷漏洞的類型。相比于防火墻和入侵檢測系統(tǒng),漏洞掃描能夠更早更準確的找出問題所在,針對發(fā)現(xiàn)的安全漏洞,可以提前做好預(yù)防措施,降低網(wǎng)絡(luò)安全風險。(1)漏洞掃描的檢測技術(shù)可以大致分為四種:①基于主機的檢測技術(shù),這種技術(shù)是掃描器與應(yīng)用程序處于同一宿主環(huán)境中,掃描器中已經(jīng)設(shè)置了應(yīng)用程序的安全規(guī)范,其通過掃描服務(wù)器的權(quán)限、配置以及運行狀況等,與自身設(shè)置的安全規(guī)范進行對比,就可以檢測出其中的問題所在。此種技術(shù)的缺點就是由于它與應(yīng)用程序相關(guān)聯(lián),升級更新很繁瑣、復(fù)雜。②基于應(yīng)用的檢測技術(shù),這種技術(shù)采用的是一種被動的且不會使目標發(fā)生破壞的檢測方式,它是通過對應(yīng)用軟件包的設(shè)置進行一系列檢測,來檢測出其中的漏洞。③基于目標的漏洞檢測技術(shù),它也是同樣采用了被動的但不會對目標造成破壞的檢測方式,它是通過檢測數(shù)據(jù)庫、注冊賬號等這一類系統(tǒng)屬性和文件屬性的來進行判斷的。它是通過使用消息文摘算法對文件加密數(shù)進行檢測的,就這樣不停地檢測文件和屬性,將檢測結(jié)果與原來的檢測結(jié)果相對比,如果發(fā)生變化,就說明出現(xiàn)了漏洞。④基于網(wǎng)絡(luò)的檢測技術(shù),這種方式采用的是一種積極的且不會對目標進行破壞的檢測方式,掃描器與應(yīng)用程序不處于同一宿主環(huán)境中,其通過網(wǎng)絡(luò)來交流通信,掃描器會發(fā)送模擬攻擊腳本,接受服務(wù)器返回的信息并進行檢測,以此判斷是否有漏洞產(chǎn)生。在這四種技術(shù)當中,最適用于web應(yīng)用漏洞檢測的技術(shù)是基于主機的檢測技術(shù)和基于網(wǎng)絡(luò)的檢測技術(shù)。將兩種技術(shù)進行比較,基于主機的檢測技術(shù)的優(yōu)點是它的檢測范圍更大、占用網(wǎng)絡(luò)帶寬小、系統(tǒng)集中化管理部署配置,不足的地方是第一次設(shè)置部署時間較長,可擴展性差,掃描工具自身的安全問題會影響檢測結(jié)果等;再來看看基于網(wǎng)絡(luò)的檢測技術(shù),他的優(yōu)點是可擴展性好、易于維護,不會直接接觸目標,安全性高。缺點就是占用帶寬大,可能會影響目標的正常運行,而且檢測范圍小、掃描覆蓋率低。(2)基于網(wǎng)絡(luò)的web應(yīng)用漏洞掃描器的工作流程:①首先要以域名或者IP的方式確定要掃描的目標;②編寫合適的爬蟲程序爬取網(wǎng)站的頁面信息,然后建立起網(wǎng)站拓撲,用來提取用戶與網(wǎng)站之間的動態(tài)交互點信息;③根據(jù)想要檢測的漏洞的特征,創(chuàng)建模擬攻擊腳本;④將爬蟲發(fā)現(xiàn)的動態(tài)交互點信息全部提取出來,然后用http/https的請求方式向目標web應(yīng)用程序發(fā)送攻擊腳本;⑤接下來就可以等待web應(yīng)用程序的響應(yīng),根據(jù)響應(yīng)的內(nèi)容可以判斷出其中是否有該種漏洞,但是不論發(fā)現(xiàn)還是未發(fā)現(xiàn)漏洞,都會在本次動態(tài)交互點檢測結(jié)束后回到第三步,繼續(xù)對其他的動態(tài)交互點進行檢測。如果發(fā)現(xiàn)了疑似該種漏洞的情況,則會根據(jù)響應(yīng)信息的內(nèi)容進行調(diào)整,調(diào)整好新的攻擊腳本用來繞過目標的網(wǎng)絡(luò)防護,然后回到第四步繼續(xù)進行檢測;⑥按照上述步驟不斷重復(fù)檢測各種類型的漏洞,一直到將整個web應(yīng)用程序的動態(tài)交互點全部檢測完,然后統(tǒng)計結(jié)果用來生成檢測報告。3.4本章小結(jié)本章主要介紹了網(wǎng)絡(luò)爬蟲技術(shù)的原理以及爬蟲技術(shù)的分類,介紹了各種類型web漏洞的產(chǎn)生原因和一些防范措施,并且對漏洞掃描技術(shù)進行了詳細的分析講解。
第4章詳細設(shè)計4.1爬蟲主體部分設(shè)計本設(shè)計的爬蟲模塊采用的是多線程的并行爬蟲,采用了Python語言中的threading模塊來進行搭建。多線程的優(yōu)點在于能夠快速地獲取網(wǎng)頁鏈接,還可以提前設(shè)置所啟用的線程數(shù)量,使每一個線程都能單獨運行。圖4.1多線程代碼4.1.1url管理器編寫url管理器的任務(wù)是將已經(jīng)爬取過的url存儲在已爬取集合中,將未爬取過的url存儲在未爬取集合中,將兩種url區(qū)分開,以防止發(fā)生將爬取過的url再次進行爬取,造成資源浪費的狀況。Url管理器代碼編寫如下:圖4.2url管理器代碼Url管理器的工作過程:將剛剛獲取的url存放入等待爬取的集合中,然后判斷正在等待添加入集合的url是否已在容器中,再獲取等待爬取的url。最后一步是由url管理器來對等待爬取的url進行判斷是否已爬取,若已爬取則將其存放到已爬取的集合里。4.1.2網(wǎng)頁下載器網(wǎng)頁下載器的作用是,通過網(wǎng)絡(luò)請求的方式,將通過網(wǎng)絡(luò)爬蟲從互聯(lián)網(wǎng)上爬取到的url所指向的網(wǎng)頁下載到本地。圖4.3網(wǎng)頁下載器工作流程圖4.4網(wǎng)頁下載器代碼Python有兩種網(wǎng)頁下載器,一種是Python官方提供的urllib基礎(chǔ)模塊,另一種是第三方提供的requests模塊,而我所采用的是功能更強大的第三方requests模塊。兩中模塊的區(qū)別:①首先是兩種模塊的構(gòu)建參數(shù)方式不同,urllib要先用urlencode方法對編碼進行預(yù)處理,將其中的字典型請求轉(zhuǎn)換成URL編碼,然后通過urlopen方式來訪問處理后的url,對讀取出的返回數(shù)據(jù)用read和decode方法進行解碼來獲得字符串;requests則直接用get方法,無需提前進行處理,讀取的返回數(shù)據(jù)也無需解碼,直接用text方法來獲得字符串。也可使用json方法將返回數(shù)據(jù)處理轉(zhuǎn)換為字典型。②兩種模塊的連接的方式也不相同,采用urllib模塊,返回數(shù)據(jù)的頭部信息connection會處于close狀態(tài),這表示在每次請求完成后都會將socket通道關(guān)閉;而采用requests模塊,返回數(shù)據(jù)的頭部信息connection則是處于keep-alive狀態(tài),這表示每次請求都是使用同一個socket通道,這樣會減少資源的消耗。③兩者對響應(yīng)的處理方式不同,urllib模塊在對消息的頭部、響應(yīng)狀態(tài)碼和響應(yīng)正文進行處理時,是采用info()、getcode()和read()方法的;而requests模塊在對這些進行處理時,是采用headers、status_code和text方法的,這樣能夠更直觀、更便于理解和使用。圖4.5get請求頁面,返回頁面文本圖4.6post請求頁面,返回頁面文本4.1.3爬蟲主函數(shù)部分爬蟲程序首先通過craw()調(diào)用方法來進入目標網(wǎng)站,通過多線程方式對目標網(wǎng)站的源碼進行爬取,并將其下載到本地,然后再采用_parse方法調(diào)用beautifulsoup來對剛剛下載下來的源碼進行解析,隨后再將其解析出的url導(dǎo)入url管理器中,讓url管理器進行后續(xù)工作。如此循環(huán),直到將網(wǎng)站的數(shù)據(jù)全部爬取完,爬蟲程序才停止運行。圖4.7爬蟲主函數(shù)代碼4.2漏洞掃描檢測相關(guān)設(shè)計4.2.1插件系統(tǒng)插件系統(tǒng)的運行需要先進行幾方面的操作:①首先要獲取插件,要通過對目錄中的一個.py文件進行掃描來獲得;②然后就可以將插件目錄加入到sys.path環(huán)境變量中;③爬蟲程序?qū)呙杼幚砗玫膗rl以及網(wǎng)頁的源碼一同發(fā)送給插件;④插件進行運轉(zhuǎn)并工作,當工作完成后就會將主動權(quán)歸還給掃描器。圖4.8插件系統(tǒng)代碼4.2.2插件系統(tǒng)的調(diào)用因為插件需要傳輸url和網(wǎng)頁的源碼這幾個參數(shù),所以要在爬蟲主體部分開頭添加importplugin,然后在結(jié)尾處添加圖4.9中所示的這幾條代碼。disallow表示不允許的插件列表。圖4.9插件系統(tǒng)調(diào)用代碼4.2.3sql注入漏洞檢測(1)首先用字典來存儲數(shù)據(jù)庫特征:圖4.10sql注入漏洞數(shù)據(jù)庫特征(2)編寫正則語句,通過正則語句來判斷是屬于哪個數(shù)據(jù)庫。圖4.11正則(3)采用報錯語句BOOLEAN_TESTS=("AND%d=%d","ORNOT(%d=%d)")對返回的正確內(nèi)容與錯誤內(nèi)容進行比較。4.2.4sql注入檢測腳本融入插件系統(tǒng)只要在已完成的sql注入漏洞檢測腳本中添加并實現(xiàn)classspider與defrun(self,url,html),就可以讓掃描器運行了。圖4.12sql注入漏洞檢測插件代碼4.2.5e-mail掃描插件e-mail掃描插件,用來掃描網(wǎng)頁中的所有e-mail郵件。利用插件系統(tǒng)會傳輸網(wǎng)頁源碼的工作過程,采用([\w-]+@[\w-]+\.[\w-]+)+正則表達式來掃描出所有郵件。圖4.13e-mail插件代碼4.2.6XSS漏洞檢測插件由于XSS的原理就是將代碼作為html執(zhí)行,所以首先要創(chuàng)建一個文本文檔,在文檔中編輯XSS漏洞的檢測原理,也就是將XSS的payload添加到url參數(shù)中,再將url的源碼與其進行對比,查找是否有這種參數(shù)存在于url中,若存在就說明該url有XSS漏洞。接下來要編寫一個用來提取url參數(shù)的函數(shù),這個函數(shù)的返回數(shù)據(jù)是一個元組,他會將每一個參數(shù)都用my_Payload來標記。最后還需要一段代碼用來讀取已經(jīng)編輯好的XSS檢測原理文件。圖4.14url參數(shù)提取圖4.15讀取檢測文件4.2.7web指紋識別掃描器web指紋識別,也就是CMS識別,中文全稱是網(wǎng)站內(nèi)容管理系統(tǒng)。CMS識別的原理是通過一些CMS的固有特性(應(yīng)用程序所含有的特征代碼,即指紋)來判斷CMS的類型。指紋識別的作用,就是識別出CMS或web容器后,才能查找出相關(guān)漏洞。在本次設(shè)計中我所使用的識別方法是MD5識別和正則表達式識別,就是采用特殊的文件路徑來訪問網(wǎng)站,從而獲取該文件的中用MD5或正則表達式方式匹配成功的關(guān)鍵詞,也說明了該網(wǎng)站的指紋就是這個CMS。我將指紋保存為了json格式,此處拿出一部分指紋演示。{"url":"/install/","re":"aspcms","name":"AspCMS","md5":""},{"url":"/chs/images/favicon.ico","re":"","name":"VOS3000","md5":"ec48166d7be37e8d50b132b07fdd2af6"}由于指紋數(shù)量較多,要訪問的網(wǎng)頁也會很多,這樣一來單步速度很慢,所以進行優(yōu)化使用多線程。我采用了run方法來創(chuàng)建線程,代碼如下,圖4.16指紋多線程4.2.8端口掃描與系統(tǒng)指紋分析端口掃描是對攻擊目標進行的信息搜集的重要步驟,通過端口掃描可以知曉目標開放的服務(wù),并且根據(jù)其開放的服務(wù)來判斷到其可能存在的漏洞。對于查找對應(yīng)端口的指紋的方法,我采用了一個簡單但容錯率低的方式,就是每個端口都對應(yīng)一個服務(wù),這樣若掃描到一個端口,其對應(yīng)的服務(wù)也會是那個。為此收集的端口服務(wù)指紋:PORT={80:"web",8080:"web",3311:"kangle",3312:"kangle",3389:"mstsc",4440:"rundeck",5672:"rabbitMQ",5900:"vnc",6082:"varnish",7001:"weblogic",8161:"activeMQ",8649:"ganglia",9000:"fastcgi",9090:"ibm",9200:"elasticsearch",9300:"elasticsearch",9999:"amg",10050:"zabbix",11211:"memcache",27017:"mongodb",28017:"mondodb",3777:"dahuajiankong",50000:"sapnetweaver",50060:"hadoop",50070:"hadoop",21:"ftp",22:"ssh",23:"telnet",25:"smtp",53:"dns",123:"ntp",161:"snmp",8161:"snmp",162:"snmp",389:"ldap",443:"ssl",512:"rlogin",513:"rlogin",873:"rsync",1433:"mssql",1080:"socks",1521:"oracle",1900:"bes",2049:"nfs",2601:"zebra",2604:"zebra",2082:"cpanle",2083:"cpanle",3128:"squid",3312:"squid",3306:"mysql",4899:"radmin",8834:'nessus',4848:'glashfish'}接下來,先用隊列編入要檢測的端口,然后創(chuàng)建一個線程函數(shù),讓每個線程都調(diào)用這段函數(shù)(圖4.17),此函數(shù)是用來讀取隊列端口的,并進行掃描。圖4.17讀取隊列中的端口至此,程序還只能檢測單獨IP端口的開放狀況,由于最后要得到的結(jié)果是域名,所以需要再編寫一個能將域名對應(yīng)的IP地址獲取到的函數(shù)。這里我采用了urlparse模塊來對目標url進行解析,通過解析能夠獲得netloc的值,最后再用socket.gethostbyname函數(shù)來獲得域名的對應(yīng)的IP地址。圖4.18獲取域名IP4.2.9敏感目錄爆破敏感目錄爆破,就是通過字典來爆破并獲取網(wǎng)站的敏感目錄結(jié)構(gòu)。采用調(diào)用字典訪問url的方式,來觀察網(wǎng)頁的回應(yīng)狀態(tài),以此判斷是否存在該敏感目錄。首先創(chuàng)建一個文本文檔,編入所要查找的url目錄字典,再編寫將字典讀取到隊列中并初始化數(shù)值的代碼。圖4.19裝載字典文件然后關(guān)于檢測網(wǎng)頁狀態(tài)部分,我采用了head方法訪問網(wǎng)頁頭,同時也能夠提升了檢測網(wǎng)站的速度。再使用線程函數(shù)來調(diào)取隊列的內(nèi)容,并進行循環(huán)訪問。圖4.20從隊列提取數(shù)據(jù)4.2.10CDN檢測CDN即內(nèi)容分發(fā)網(wǎng)絡(luò),英文全稱ContentDeliveryNetwork。其工作原理就是在用戶和服務(wù)器之間增加一層Cache層,這樣用戶在請求數(shù)據(jù)時,請求會被引導(dǎo)到Cache層上,然后CDN系統(tǒng)根據(jù)網(wǎng)絡(luò)的負載狀況、用戶的與各個服務(wù)器之間的距離以及服務(wù)器響應(yīng)的時間等綜合信息,選取離用戶最近的服務(wù)節(jié)點,向用戶返回數(shù)據(jù)。這樣做的目的是讓用戶能夠以最短的距離和最短的時間取得信息,并且還能同時解決Internet網(wǎng)絡(luò)擁擠的問題,以此降低網(wǎng)絡(luò)訪問時間。通過檢測網(wǎng)站是否使用CDN來判斷其是否為源站。先用url=urlparse.urlparse(url).netloc解析域名,然后對網(wǎng)頁進行訪問,這樣就能夠獲取到token,再組合POST包所用的數(shù)據(jù)。圖4.21組合數(shù)據(jù)然后再發(fā)送兩個POST包,其中最后一個的返回信息就是所需要的數(shù)據(jù)了。這些數(shù)據(jù)可以用正則表達式匹配得出,我選擇的是用json方式來解析。其中,ans=list(set(ips))是用來過濾重復(fù)的IP的。4.2.11自動生成網(wǎng)頁報告由于信息是輸出在控制臺上,顯示空間有限,這里需要一個將數(shù)據(jù)信息輸出到文件中存儲下來的方法,也就是網(wǎng)頁報告,它可以將輸出結(jié)果保存為一個html文件。所需的定義函數(shù)如下:classoutputerdefadd(self,key,data):#通過字典方式添加數(shù)據(jù)defadd_list(self,key,data):#通過列表方式添加數(shù)據(jù)defget(self,key):#獲取某個數(shù)據(jù)defshow(self):#顯示加入的數(shù)據(jù)defbuild_html(self,name):#生成網(wǎng)頁name為保存的文件名4.3本章小結(jié)本章節(jié)中介紹了設(shè)計的具體設(shè)計內(nèi)容,將其分為爬蟲主體函數(shù)部分和其他的插件函數(shù)部分兩部分來講述。其中插件部分又詳細的介紹了SQL注入
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑消防設(shè)施質(zhì)量檢測與維護合同3篇
- 二零二五年度影視作品分紅合同模板(含衍生品開發(fā))3篇
- 2025年度年度養(yǎng)豬場租賃與養(yǎng)殖廢棄物回收利用合同3篇
- 二零二五年度電商包裹公路運輸合同3篇
- 二零二五年度公廁保潔與智慧環(huán)衛(wèi)平臺建設(shè)合同范本3篇
- 2024年中國生態(tài)咖啡具市場調(diào)查研究報告
- 2025年度制造業(yè)員工勞動合同樣本匯編與解讀3篇
- 2025年度乙方租房個性化定制服務(wù)合同3篇
- 2024年中國滑板門市場調(diào)查研究報告
- 2025年度年度果樹種植與果園土地承包技術(shù)創(chuàng)新協(xié)議3篇
- QC成果解決鋁合金模板混凝土氣泡、爛根難題
- 管線管廊布置設(shè)計規(guī)范
- 提升教練技術(shù)--回應(yīng)ppt課件
- 招聘與錄用選擇題
- 《工資、薪金的個人所得稅的計算》教學設(shè)計
- 精品洲際酒店集團皇冠酒店設(shè)計標準手冊
- 周視瞄準鏡的初步設(shè)計-北京理工大學-光電學院小學期作業(yè)
- Writing寫作教學設(shè)計
- 心房起搏電極的位置選擇ppt課件
- 四川省南充市2019-2020學年九年級上期末數(shù)學試卷(含答案解析)
- 上海市寶山區(qū)2019屆高三英語一模含答案
評論
0/150
提交評論