基于Python的web漏洞挖掘掃描技術的實現與研究【附源碼,文檔】

博主介紹:?Java老徐、7年大廠程序員經歷。全網粉絲12w+、csdn博客專家、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和畢業項目實戰?

🍅文末獲取源碼聯系🍅

👇🏻 精彩專欄推薦訂閱👇🏻 不然下次找不到喲

Java基于微信小程序的校園外賣平臺設計與實現,附源碼
Python基于Django的微博熱搜、微博輿論可視化系統,附源碼
Java基于SpringBoot+Vue的學生宿舍管理系統

感興趣的可以先收藏起來,還有大家在畢設選題,項目以及文檔編寫等相關問題都可以給我留言咨詢,希望幫助更多的人

文章目錄

  • 第一章 項目簡介
  • 第二章 技術棧
  • 第三章 Web應用程序漏洞檢測技術
    • 3.1 網絡爬蟲
      • 3.1.1 網絡爬蟲原理
      • 3.1.2 爬取策略
      • 3.1.3 Scrapy爬蟲架構
    • 3.2 SQL注入漏洞
    • 3.3 XSS漏洞
  • 第四章 系統設計與實現
    • 4.1 系統整體設計
    • 4.2 爬蟲模塊的設計與實現
      • 4.2.1 爬蟲模塊的設計
      • 4.2.2 爬蟲模塊的實現
    • 4.3 XSS掃描模塊的設計與實現
    • 4.4 應用中SQL注入
    • 4.5 相關報告生成
  • 第五章 系統的實現與漏洞挖掘
    • 5.1 系統的首頁面
    • 5.2 web漏洞挖掘網站首頁
    • 5.3 漏洞總覽頁面
    • 5.4 漏洞詳情頁面
  • 第六章 推薦閱讀
  • 第七章 源碼獲取:

第一章 項目簡介

本次技術通過利用Python技術來開發一款針對web漏洞挖掘掃描的技術,通過web漏洞的挖掘掃描來實現對網站URL的漏洞檢測,通過高中低風險的判斷來實現對一款網站中存在的漏洞進行可視化的分析,從而能夠找到問題并且盡快的實現問題的解決。
網絡漏洞掃描技術能夠通過以攻擊者的視角出發,通過模擬對程序的攻擊來認識到程序可能存在的風險,從而更快速的找到問題的所在,實現有效的漏洞補丁完善等功能實現。漏洞挖掘掃描技術是一種主動的防御過程,是未雨綢繆的一種防護手段。這種手段能夠通過提前對web進行滲透掃描來了解到網頁的運行參數、時間參數等信息內容,從而通過掃描形成的檢測報告來查找到系統中可能存在的威脅情況。而本次就是通過了Python技術來打造一款能夠實現有效的網頁漏洞掃描的主要功能實現,通過對網頁的提前掃描來主動的進行安全的檢測,之后再通過可視化的圖表方式來對查找到的漏洞情況進行直觀的展示,從而能夠有效的為用戶提供提醒或者警示的作用,告訴用戶該網站是否安全,做好提前的使用判斷。

第二章 技術棧

Python Django

MySql

HTML,Javascript

第三章 Web應用程序漏洞檢測技術

3.1 網絡爬蟲

3.1.1 網絡爬蟲原理

網絡爬蟲是通過對網頁中的URL加以利用,進而獲得網頁內的資料信息,通過模仿正常的網頁登錄方式來對網頁中的內容進行下載以及深層次的內容分析。網絡爬蟲通過以數據源的地址為爬取的起始點,通過搜集URL,篩選出有關的連接信息,通過特定的規則來進行連接的篩選,通過將連接保存在隊列中來完成下一步的搜索,直至搜索的隊列內容為空為止。下圖是一個網絡爬蟲的基本操作流程圖:

3.1.2 爬取策略

爬取數據是需要有策略導向的,在URL隊列匯總通過對搜索次序的排列來完成對整個爬取策略的訂制,爬蟲的相關策略有以下的幾種方式:
(1)深度優先策略
通過以種子URL為起始點,從七點到下一個訪問點之間不再有任何的訪問節點,通過這種路徑方式來實現深度的數據爬取,指導兩個節點中間再無節點位置。深度優先的策略是一項能夠完完整整的從網頁上將所有的信息進行爬取的一種技術,但是這種技術也有著不足之處,如果爬取的內容過深,則該技術會進行無限的爬取,影響到爬取數據的準確度。
(2)廣度優先策略
在這種優先策略的使用上,是以盡可能的覆蓋整個網絡來實現寬優先的搜索策略,通過這種搜索的過程能夠從平行的起點開始,通過同一深度來進行有效的數據攀爬過程實現,反復攀爬直至全部的連接完成。
(3)最佳優先策略
最佳優先,是通過在傳統的算法之中加入一系列特殊的算法,通過以算法為基礎來進行一個可擴展的策略制定,通過將網頁分析算法進行頁面的分析,通過預測連接的需求來實現在通過思考之后將有必要爬取的連接放置在隊列中,這種方式后期也是對隊列中的信息進行不斷的掃描紙質隊列為空位置。這種算法的針對性更強,爬取的效率也更快。

3.1.3 Scrapy爬蟲架構

本次在網絡爬蟲的選擇上,由于系統的功能模塊開發選擇了Python技術,所以此次的爬蟲架構也選擇了Python語言下的Scrapy來進行爬蟲功能的實現,在此次的設計上,該技術的主要由七大部分組成,通過scrapy作為主引擎,通過下載器來進行頁面的相關內容的獲取,通過蜘蛛和爬蟲中間件來完成對數據的爬取功能。

3.2 SQL注入漏洞

SQL注入是現在通過數據庫漏洞而造成的一項安全隱患巨大的漏洞,由于直面數據庫,這種漏洞十分的危險,對于國家的安全、個人的信息安全等均可以造成巨大的損失。這種注入方式難易被察覺,和普通用戶在使用網站是的數據存取基本相同,防火墻等安全措施無法進行報警,使得該注入漏洞有著極強的隱蔽性。SQL注入能夠將常規的數值進行修改,改成SQL不敏感的一個字符串,通過這種修改來讓字符串錄入數據庫是難易被察覺。這種漏洞出現的原因是在程序的開發過程中,在SQL語句的編譯上,沒有進行用戶參數的嚴格全面的檢查,使得SQL語句拼接的過程中存在問題,并將這種帶有問題的語句提交到數據庫匯總記性了運行。
SQL的注入方式通常會通過以用戶輸入的方式進行注入,這種方式下由于不嚴格的進行用戶的輸入參數值的篩選,從而造成含有特定含義的參數植入到SQL語句中,會實現數據庫的侵入。Cookie的注入方式是通過輸入cookie值的方式來進行SQL的注入。第三種方式是通過服務器的變量注入的方式通過以HTTP報頭的環境變量,通過插入進行設計的敏感字符串,來實現注入運行。

3.3 XSS漏洞

跨站腳本攻擊的方法也是常見的漏洞東之一,被簡稱為XSS漏洞,這種漏洞是在開發人員在提交用戶數據時沒有進行篩選和過濾,使得攻擊腳本被傳至瀏覽器中,并且在瀏覽器中被觸發,從而產生安全的漏洞,這種方式下,通常有三種漏洞的形式,分別為反射型、存儲型以及DOM型。
反射型的XSS漏洞中,攻擊者通過將帶有惡意腳本的網頁返回給用戶,并且通過在瀏覽器上進行惡意的腳本出發,從而使得攻擊者能夠獲取個人用戶的信息,如下圖所示:

DOM型的漏洞攻擊與XSS相似,都是通過這種方式來尋找網頁中的反射型的缺陷。DOM是能夠通過JavaScript的腳本動態來進行模型的修改。而存儲型的XSS相對于前兩者而言更加具有隱蔽性,其危害性也更加,通過對網頁上存儲的矢量進行攻擊,使其在網頁上執行攻擊代碼,從而獲取用戶的個人信息。這種方式的結構如下所示:

第四章 系統設計與實現

4.1 系統整體設計

此次在漏洞挖掘技術的使用上,主要通過以四個部分來進行相應的內容組成,分別為信息采集、輸入參數分析、缺陷檢測、缺陷報告產生等來進行設計,其主要的整體設計圖如下所示:

通過上圖可以看出此次的系統設計需要通過三大部分來實現有效的功能設計實現,分別為爬蟲、漏洞探測、SQL注入,通過這三個步驟之后在網頁端形成報告的生成。
(1)爬蟲模塊是以主題爬蟲為最為基礎的內容設計,通過對URL的相關數據爬取來實現有效的信息的下載獲取;
(2)缺陷探測過程中,通過對正常的URL、帶有缺陷的URL等進行檢測,將檢測出的內容存儲在數據庫匯總。
(3)通過SQL注入來進行數據庫的SQL語句的內容測試。

4.2 爬蟲模塊的設計與實現

4.2.1 爬蟲模塊的設計

此次在爬蟲模塊的設計上,需要體現出爬蟲爬取速度快、能夠為用戶快速的得到結果的處理方式來進行漏洞挖掘掃描技術的推進。所以本次通過采用廣度優先的方式能夠很好的通過覆蓋頁面的爬取方式來制定一個策略性的深度爬取過程,通過對系統的有效爬取來實現對相關信息的提取實現。主要分為了以下的幾個步驟:
(1)網頁下載
網頁下載是通過將HTTP的請求發送到目的地,通過HTTP響應的方式來對頁面進行分析,從最初的URL為起始點,將所有頁面進行快速的瀏覽并且將其全部的存儲到本地數據庫中。
(2)提取URL
這種方式是通過抽取URL連接,通過正規運算規則,以字符串的排列來對字符串進行在線的匹配。通過對URL的規范、標準進行檢測,將符合本次測試要求條件的URL保存到需要爬取的URL隊列之中。
(3)提取可能的注入點信息
這種方式是通過從form表格中進行相關信息的查找,通過輸入域< input>選擇域> select>多行文本域的方式來進行相應的名稱和價值屬性管理的排列。通過以method作為請求的提交范式來進行get和post的獲得。通過這種方式來檢測使用者的表單中是否加入了惡意代碼,如果加入了惡意代碼則會在產生程式上產生缺陷。此次設計的爬蟲整體的設計圖展示如下:
爬蟲模塊設計圖如下:

4.2.2 爬蟲模塊的實現

本次設計的爬蟲模塊的設計如下圖所示:

4.3 XSS掃描模塊的設計與實現

本次在XSS的檢測設計上,是此次搭建的漏洞挖掘技術軟件的一個非常關鍵的功能,通過該功能能夠模擬惡意代碼的注入,通過靜態的掃描方式來找到可能存在缺陷的代碼及模塊,本次的設計如下:
此次的XSS設計是通過在服務器上建立一個特定的編碼,通過對特定的編碼進行標記,將其鑲嵌在服務器中,通過返回的數據信息來進行漏洞的判定以及漏洞的挖掘實現。
XSS模塊的流程如圖。

(1)使用者在網站或者搜尋模組中通過獲取目標網站來對目標網址進行判定,判定其是否滿足搜尋目標的選定,如果滿足則進入下一步的測試環節。
(2)在URL的參數分解上,通過自定義的key來代替相應的參數信息,從而向數據庫發送請求,通過對得到的返回的請求信息進行判斷來進行URL的保存。
(3)在參數的搜集過程中,如果出現清單不為空,則需要對該類表進行請求的判定,通過關鍵字來查找到key所標記的位置,通過位置屬性的查找來實現URL的存儲。
(4)通過在詞典中讀取每一個URL通過在payload中進行注入碼的加載,來發送到服務器,通過服務器來判斷是否返回,如果存在注入代碼則代表著存在XSS威脅。

4.4 應用中SQL注入

在URL、cookie參數以及from窗體中都是出現SQL注入的常見地帶。在SQL注入的掃描過程中,要通過工具的探測來實現服務器交互的實現。該工具能夠探測到與服務器交互的各個位置,通過觀察服務器的反應過程來判斷SQL的注入漏洞缺陷。
SQL注入最為基本的方式是利用了網絡應用不會對用戶輸入的數據及西寧篩選,從而通過在用戶輸入的內容中形成一個動態的SQL語句來實現特定字符的注入。SQL注入檢測過程如下圖:


本次設計的SQL注入漏洞挖掘技術的主要操作步驟展示如下:
(1)通過確定URL的需求,通過向服務器發送請求,在得到的信息中進行form標簽的查看,然后再進行下一項內容的查詢。
(2)在網頁的分析中,通過返回的信息獲取用戶名和密碼的標簽名稱。
(3)通過整體的運算操作,以大量的URL詞典來進行下一步的請求發送,再一次的得到服務器的反饋分析。
(4)通過用戶的身份驗證,通過黑盒的方式來不斷的輸入信息來進行惡意的登錄過程。
(5)在每一次都輸入錯誤的過程中,查找一些其他方面的信息統計,通過status來進行信息的確認實現。

4.5 相關報告生成

本次的系統設計上,最終反饋給用戶的如果僅僅是一串代碼,很難滿足大眾的使用需求,因此需要將生成的報告形成可視化的方式來進行很好的內容展示工作完成。
在報告的生成上,通過以XML的方式來進行信息的轉化有著很好的使用效果,XML是一種開放的、不依賴平臺也不依賴于供應商的一種技術標準,這種技術標準可以在網頁中進行直接的使用,因此具有很強的跨平臺特點,能夠在各類平臺上進行XML文檔的讀寫、處理等工作的實現,可以通過純粹的文字文檔來實現有效的通訊傳輸的功能實現,是一種純粹的、有著很好的通信方式實現的長文本傳送的格式。其體積輕便,能夠通過很小的空間占用來實現高效的信息存儲的工鞥那服務。能夠實現有效的自我描述,通過標簽、符號、自定義內容等方式來進行很好的內容組件,將電腦中的操作數據進行可視化的展示服務。

第五章 系統的實現與漏洞挖掘

本次的系統開發是建立在Python技術、django框架下來進行的頁面模塊開發,通過以scrapy爬蟲技術來進行漏洞挖掘功能的實現,通過爬蟲技術所爬取的數據信息全部存儲在MySQL數據庫中。

5.1 系統的首頁面

此次的系統首頁面是登錄的頁面,需要用戶完成登錄后才能夠在網站中實現爬蟲的功能應用。

5.2 web漏洞挖掘網站首頁

在登錄完成后,系統會進入到web漏洞挖掘的網站首頁,在該頁面中有爬取的總URL數、高危漏洞數、中危漏洞數以及低危漏洞數等。并且其他的功能菜單還有漏洞總覽、漏洞詳情等功能,配合有個人信息的維護管理的功能模塊。如下圖所示:

5.3 漏洞總覽頁面

在漏洞總覽頁面中,能看到掃描歷史的主要URL情況,包括掃描的狀態,出現的高危、中危、低危的漏洞個數,掃描完成的時間等內容,并且在對話框中也能夠進行新的URL地址的輸入并且進行搜索。如下圖所示:

5.4 漏洞詳情頁面

在漏洞詳情中,能夠看到逐條顯示的URL漏洞的名字、關聯編號以及漏洞的危險等級等,通過這些信息的歸類可以完成對漏洞的詳細內容展示的功能實現,如下圖所示:

第六章 推薦閱讀

基于Python的循環神經網絡的情感分類系統設計與實現,附源碼

Python基于人臉識別的實驗室智能門禁系統的設計與實現,附源碼

Java基于微信小程序的講座預約系統的研究與實現,附源碼

Java基于微信小程序的校園訂餐系統

Java基于SpringBoot的在線學習平臺

2023年Java畢業設計題目如何選題?Java畢業設計選題大全

基于Python的機器學習的文本分類系統

基于Python dlib的人臉識別的上課考勤管理系統(V2.0)

Java 基于 SpringBoot+Vue 的公司人事管理系統的研究與實現(V2.0)

第七章 源碼獲取:

大家點贊、收藏、關注、評論啦 、查看👇🏻獲取聯系方式👇🏻

👇🏻 精彩專欄推薦訂閱👇🏻 不然下次找不到喲

Python畢業設計

Java 大學生實戰精品項目

Java微信小程序精品項目

感興趣的可以先收藏起來,還有大家在畢設選題,項目以及文檔編寫等相關問題都可以給我留言咨詢,希望幫助更多的人

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11244.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11244.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11244.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue3 項目

創建 Vue3 項目的步驟如下&#xff1a; 安裝 Node.js Vue3 需要依賴 Node.js 環境&#xff0c;因此需要先安裝 Node.js。可以從官網下載 Node.js 的安裝包并安裝&#xff0c;也可以使用包管理器安裝&#xff0c;例如在 Ubuntu 上可以使用以下命令安裝&#xff1a; sudo apt-get…

C語言筆記13

字符數組與字符串常量區別 #include <stdio.h> int main() {char str1[] "hello bit.";char str2[] "hello bit.";char *str3 "hello bit.";char *str4 "hello bit.";if(str1 str2)printf("str1 and str2 are same\n…

【生信技能樹】拿到表達矩陣之后,如何使用ggplot2繪圖系統繪制箱線圖?

拿到表達矩陣之后&#xff0c;如何使用ggplot2繪圖系統繪制箱線圖&#xff1f; 目錄 預備知識 繪制箱線圖示例 預備知識 1.pivot_longer函數 pivot_longer 是tidyr包中的一個函數&#xff0c;用于將數據框&#xff08;data frame&#xff09;從寬格式轉換為長格式。在寬格…

一文掌握gRPC

文章目錄 1. gRPC簡介2. Http2.0協議3. 序列化-Protobuf4. gRPC開發實戰環境搭建5. gRPC的四種通信方式&#xff08;重點&#xff09;6. gRPC的代理方式7. SprintBoot整合gRPC 1. gRPC簡介 gRPC是由google開源的高性能的RPC框架。它是由google的Stubby這樣一個內部的RPC框架演…

reactJs動態執行js代碼

參考了這篇文章 js——new Function 一個可以隨時動態執行字符串js代碼的神器 因為一些原因&#xff0c;想要js代碼塊配置在數據庫中返回&#xff0c;例如時間&#xff0c;我需要用到第三方庫 moment。然后動態的得到startDate 和 endDate 配置在數據庫中的startDate值是$mom…

Java日志總結

開發中&#xff0c;日志記錄是不可或缺的一部分&#xff0c;應用日志的記錄主要用于&#xff1a;記錄操作軌跡數據、監控系統運行情況、系統故障定位問題&#xff0c;日志的重要性不言而喻&#xff0c;想要快速定位問題&#xff0c;日志分析是個重要的手段&#xff0c;Java也提…

JAVA 集合(單列集合)

集合框架 1.集合的特點 a.只能存儲引用數據類型的數據 b.長度可變 c.集合中有大量的方法,方便我們操作 2.分類: a.單列集合:一個元素就一個組成部分: list.add(“張三”) b.雙列集合:一個元素有兩部分構成: key 和 value map.put(“濤哥”,“金蓮”) -> key,value叫做鍵值…

Docker各版本的新特性

Docker 作為流行的容器化平臺&#xff0c;會定期發布新版本以引入新特性、改進和修復。根據提供的搜索結果&#xff0c;以下是一些 Docker 版本及其新特性的概覽&#xff1a; Docker Desktop v4.12 Containerd 的集成&#xff1a;更深入集成 containerd 以管理容器生命周期&a…

鎖和MVCC如何實現mysql的隔離級別

概述 MVCC解決讀的隔離性&#xff0c;加鎖解決寫的隔離性。 讀未提交 讀未提交&#xff0c;更新數據大概率使用的是獨享鎖吧。 讀已提交 在 Read Committed&#xff08;讀已提交&#xff09;隔離級別下&#xff0c;每次執行讀操作時都會生成一個新的 read view。這是因為在讀…

英譯漢早操練-(二十)

hello大家好&#xff0c;這篇跟隨十九&#xff0c;繼續真題學習。如果想看全部請返回到第十九篇。 英譯漢早操練-&#xff08;十九&#xff09;-CSDN博客 The political upheaval in Libya and elsewhere in North Africa has opened the way for thousands of new migrants to…

【C++學習第15天】STL

一、種類 vector&#xff1a;變長數組&#xff0c;倍增的思想。給數組申請空間所耗費的時間取決于申請次數&#xff0c;而不是申請空間的大小&#xff0c;即a[1]和a[10000]兩個數組的申請時間是基本一致的。pair<int, string>&#xff1a;存儲一個二元組&#xff0c;前后…

AI 圖像生成-環境配置

一、python環境安裝 Windows安裝Python&#xff08;圖解&#xff09; 二、CUDA安裝 CUDA安裝教程&#xff08;超詳細&#xff09;-CSDN博客 三、Git安裝 git安裝教程&#xff08;詳細版本&#xff09;-CSDN博客 四、啟動器安裝 這里安裝的是秋葉aaaki的安裝包 【AI繪畫…

【GlobalMapper精品教程】081:WGS84/CGCS2000轉Lambert投影

參考閱讀:ArcGIS實驗教程——實驗十:矢量數據投影變換 文章目錄 一、加載實驗數據二、設置輸出坐標系三、數據導出一、加載實驗數據 打開配套案例數據包中的data081.rar中的矢量數據,如下所示: 查看源坐標系:雙擊圖層的,圖層投影選項卡,數據的已有坐標系為WGS84地理坐標…

MySQL創建存儲過程函數

DDL CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT COMMENT 學號,createDate datetime DEFAULT NULL,userName varchar(20) DEFAULT NULL,pwd varchar(36) DEFAULT NULL,phone varchar(11) DEFAULT NULL,age tinyint(3) unsigned DEFAULT NULL,sex char(2) DEFAU…

[初學rust] 05_ rust struct

rust struct 其實這也算復合類型&#xff0c;但是其他語言都有&#xff0c;所以抽取出來單獨看的時候會很簡單&#xff0c;更容易學 1. 定義結構體 結構體的定義和其他語言沒啥區別。 struct User {name: String,age: i32, }2. 創建實例 創建實例的過程就跟js類似 let us…

【3dmax筆記】021:對齊工具(快速對齊、法線對齊、對齊攝影機)

文章目錄 一、對齊二、快速對齊三、法線對齊四、對齊攝影機五、注意事項3dmax提供了對齊、快速對齊、法線對齊和對齊攝像機等對齊工具: 對齊工具選項: 下面進行一一講解。 一、對齊 快捷鍵為Alt+A,將當前選擇對象與目標對象進行對齊。 最大對最大:

【小筆記】neo4j用load csv指令導入數據

【小筆記】neo4j用load csv指令導入數據 背景 很久沒有用load CSV的方式導入過數據了因為它每次導入有數量限制&#xff08;印象中是1K還是1W&#xff09;&#xff0c;在企業中構建的圖譜往往都是大規模的&#xff0c;此時通常采用的是Neo4j-admin import方式。最近遇到了一些…

振弦式表面應變計怎么安裝

振弦式表面應變計是一種用于測量結構表面應變的高精度傳感器&#xff0c;廣泛應用于工程和科研領域。正確安裝振弦式表面應變計對于確保測量結果的準確性至關重要。以下是安裝振弦式表面應變計的步驟和注意事項&#xff1a; 1. 準備工作 在開始安裝前&#xff0c;需要準備以下工…

whisper之初步使用記錄

文章目錄 前言 一、whisper是什么&#xff1f; 二、使用步驟 1.安裝 2.python調用 3.識別效果評估 4.一點封裝 5.參考鏈接 總結 前言 隨著AI大模型的不斷發展&#xff0c;語音識別等周邊內容也再次引發關注&#xff0c;通過語音轉文字再與大模型交互&#xff0c;從而…

【Gitlab遠程訪問本地倉庫】Gitlab如何安裝配置并結合內網穿透實現遠程訪問本地倉庫進行管理

文章目錄 前言1. 下載Gitlab2. 安裝Gitlab3. 啟動Gitlab4. 安裝cpolar5. 創建隧道配置訪問地址6. 固定GitLab訪問地址6.1 保留二級子域名6.2 配置二級子域名 7. 測試訪問二級子域名 前言 GitLab 是一個用于倉庫管理系統的開源項目&#xff0c;使用Git作為代碼管理工具&#xf…