




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
相關技術介紹2.1Web常見漏洞Web漏洞是指在Web應用程序中(包括數據庫,中間件等)存在的未被發現或未被修復的缺陷,這些漏洞可能是由于設計上的缺陷、不安全編程、配置錯誤或未及時修補的已知問題而導致的。圖2-1展示了由開放式Web應用程序安全項目(OWASP)2021年發布的十大最嚴重的Web應用程序安全風險REF_Ref5382\r\h[18](OWASPTOP10),其中的SQL注入漏洞相比于2017年降低了三位,XSS跨站腳本攻擊在2017年在第七位,2021年中,XSS跨站腳本攻擊和SQL注入漏洞都是屬于注入類漏洞,這兩個漏洞依然可以對Web應用程序造成嚴重的影響。圖2-12021年OWASP發布的OWASPTOP10本文的主要研究是針對注入類型的漏洞。注入漏洞是指用戶輸入的數據被Web應用程序解析成了代碼,即,用戶輸入的數據就是代碼,改變了原本執行代碼的意思。注入攻擊可能會導致數據泄露、蠕蟲攻擊和拒絕服務攻擊等。注入漏洞的主要原因是對用戶輸入的數據太過于信任,沒有進行過濾用戶的惡意請求。本文主要以XSS跨站腳本攻擊和SQL注入來進行研究。2.1.1SQL注入攻擊漏洞SQL注入是網站向數據庫查詢信息時,其中的URL參數被后端獲取,并對這些參數拼接到SQL語句中;然后,SQL語句對數據庫進行查詢。如果這些參數用戶可控并且沒有對這些參數進行過濾,用戶可能會將惡意SQL語句輸入到參數中,后端在進行解析并且查詢。其中常見的SQL注入危害有:獲取數據庫中的敏感信息、偽造用戶登錄和獲取計算機權限等。如果服務器的數據庫用戶權限是DBA,將具有破壞性比如進行刪除整個數據庫等。以下用PHP代碼舉例來介紹SQL注入的形成原理:$query="selectid,emailfrommemberwhereusername='$_GET[name]'";假設用戶請求http://xxx.xxx.xxx/sql.php?name=1,上面的PHP代碼會接收name這個參數的值并拼接在SQL語句里,然后向數據庫進行查詢。如果后端沒有進行對用戶傳入的值進行過濾,用戶傳入的數據可能會變成代碼進行數據庫查詢。例如用戶輸入http://xxx.xxx.xxx/sql.php?name=1’or1=1--數據庫將會查詢所有的用戶信息,這樣子就造成了敏感信息泄露。用戶輸入’號來分割username的值,后面的or1=1代表永真,--注釋了多余的‘號。這樣這個SQL語句代表著永真查詢。同理如果是在登錄框用’or1=1--這個萬能語句即可造成偽造用戶登錄。常見的SQL注入類型分為字符型注入和數字型注入。這兩個的區別是字符型注入要閉合符號,數字型注入不用閉合。從常見的注入方式來看又分為兩大類,分別是報錯注入和無顯盲注。下面進行詳細說明:報錯注入是指用戶故意輸入錯誤的信息讓數據庫解析,數據庫返回錯誤的信息到前端,即可證明存在報錯注入。通過指定函數來運行SQL語句,數據庫就會報錯并返回需要的數據到前端。無顯注入又分為布爾盲注和時間盲注,這兩個適用于在沒有回顯的情況下使用。具體來說,布爾盲注主要是構造永真語句和永假語句,然后觀察前端這兩個頁面是否一樣,如果不一樣則存在漏洞。時間盲注主要通過使用sleep函數來判斷響應的時間差別,如果正常請求在幾毫秒就響應了,使用了時間盲注語句后明顯發現頁面響應時間變長,則存在時間盲注。在2021年的OWASPTOP10中,SQL注入攻擊排名第三,但是目前有免費的SQL注入工具和簡單的使用教程,SQL注入還有極大的破壞性,這對于企業來說仍然是一個巨大的威脅。2.1.2XSS跨站腳本攻擊漏洞XSS跨站腳本攻擊漏洞和SQL注入攻擊很像,同樣都是用戶輸入的數據被當作代碼解析并運行,用戶通常輸入惡意的JS代碼,服務器解析后返回前端,然后用戶的JS代碼就會被注入到HTML里然后被執行。同樣是服務器沒有對用戶輸入的數據進行過濾從而造成的注入。用戶在訪問被植入XSS惡意代碼的網頁時,可能會被劫持賬號、盜取個人信息、進行XSS蠕蟲攻擊等操作,同樣也可以把當前的頁面覆蓋掉換成非法信息或者廣告讓用戶訪問。XSS根據攻擊可以分為三種類型:反射型XSS、存儲型XSS和DOM型XSS。下面進行詳細說明:反射型XSS是指攻擊者構造一個包含惡意JS腳本的URL,當用戶點擊惡意URL時,惡意JS腳本會被瀏覽器執行。這類攻擊需要與用戶的交互,攻擊者通過誘導用戶點擊惡意URL來實現攻擊。存儲型XSS是指攻擊者將惡意JS腳本存儲到目標網站的數據庫中。當其他用戶訪問包含惡意JS腳本的網頁時,瀏覽器會解析執行這些腳本。這類攻擊危害比較大,因為惡意腳本是存儲在網站數據庫中的,所以持久性強,隱蔽性強,容易造成蠕蟲攻擊和賬號劫持。DOM型XSS是指攻擊者通過修改頁面的DOM(文檔對象模型)結構,將惡意JS腳本注入到HTML頁面中。這類攻擊和其它兩類的區別最主要是不經過服務器。在本地執行代碼并由瀏覽器解析。在2021年的OWASPTOP10中,XSS跨站腳本攻擊和SQL注入排名第三,都是屬于注入類型的漏洞。這兩種攻擊的危害和隱蔽性對于一個Web應用程序來說都是一個很大的威脅。2.2網絡爬蟲網絡爬蟲是一種按照指定的規則去采集互聯網上公開信息的程序,通常用于收集網頁、文檔、文字等信息。其基本工作原理是通過自動化程序模擬瀏覽器行為,從互聯網上搜集和提取信息,爬蟲的工作流程如下:確定爬取的目標網站。模擬瀏覽器發送HTTP請求。獲得響應內容。解析內容。2.2.1爬蟲類型爬蟲主要分為兩種類型分別是動態爬蟲和靜態爬蟲。靜態爬蟲主要是對網頁的響應體來進行正則表達式、BeautifulSoup和XPath選擇器等技術匹配URL,然后把這些URL加入待爬取隊列,然后對這些隊列進行重復的爬取,直到爬取到指定的深度。動態爬蟲主要是爬取動態網頁,因為現在越來越多的網站使用AJAX(AsynchronouseJavaScriptAndXML)技術這導致了靜態爬蟲無法全面的爬取網站的信息,因此我們本文使用Selenium框架進行動態爬蟲。2.2.2爬取策略爬取策略是網絡爬蟲在執行網頁爬取時所遵循的規則或策略。主要分為以下兩種策略,分別是深度優先和廣度優先策略。深度優先策略(DFS)是一種盡可能深地搜索樹的策略。對初始目標頁面進行爬取,爬取到新的鏈接后繼續對新的鏈接進行爬取,一直爬取到指定的深度或規則后,返回到上一個鏈接進行新鏈接的爬取,以此類推。廣度優先策略(BFS)是一種逐層遍歷樹的策略。對初始目標頁面進行爬取,先爬取該頁面的所有鏈接,然后再爬行這些鏈接所指向的頁面的所有鏈接,爬取到指定的深度或規則停止。以此類推,因此也被成為層序遍歷,一層接著一層進行爬取。本論文采取廣度優先策略,因為這個策略可以爬取更多的網頁URL。2.3本章小結本章主要說明了本文中基于網絡爬蟲的漏洞掃描工具所涉及到的相關技術的介紹。介紹了Web常見的漏洞,如XSS跨站腳本攻擊漏洞和SQL注入漏洞的形成原理和危害,還有網絡爬蟲的基本流程、爬取類型和爬取策略3基于網絡爬蟲的漏洞掃描工具的設計3.1工具需求分析隨著互聯網技術的發展和普及,在我國使用互聯網的人日益增多。根據第52次《中國互聯網絡發展狀況統計報告》顯示,截至2023年6月,我國網民規模達10.79億人,較2022年12月增長1109萬人,互聯網普及率達76.4%[1]。Web網站應用的范圍已經覆蓋到了我們生活的方方面面比如:日常交流、游戲娛樂、上網購物、辦公、學習、出行等等。但是web安全意識的普及沒有像web那樣快速的被覆蓋,黑客攻擊、病毒、木馬等安全威脅不斷增多。而漏洞掃描器可以掃描自身的網站來減少網站被其他人拿到敏感數據和被種下木馬和植入病毒的可能性,幫助減少網站被侵入和被其它網站漏洞利用的風險。3.1.1設計目標根據需求分析,本研究旨在探究基于網絡爬蟲的漏洞掃描技術,漏洞掃描技術可以幫助個人和企業發現網站的安全漏洞和缺陷、提高安全性和可靠性、評估自身網站的安全風險。通過這種方式可以幫助減少網絡攻擊的風險,保護重要的數據和資源。該研究項目提供了一套的漏洞評估解決方案,包括用戶交互、任務管理、爬取、PoC管理和模糊測試等功能。通過這些功能,用戶可以掃描出網站的XSS跨站腳本攻擊漏洞、SQL注入漏洞和JS文件中泄露的AccessKey和AccessSecret。3.1.2功能需求分析根據設計目標,基于網絡爬蟲的漏洞掃描工具的主要功能包括用戶交互、任務管理、爬取、PoC管理和模糊測試這五個功能點,如圖3-1所示。圖3-1漏洞掃描工具的功能結構圖(1)用戶交互功能:用戶輸入要進行安全評估站點的網址,同時可以設置線程數、Http請求的頭字段、服務器超時時間等。(2)任務管理功能:在進行多個網址的安全評估時,任務管理功能發揮著至關重要的作用。用戶可以清晰地查看每個網址的評估進度和狀態,同時擁有新建、刪除、查詢、開始和停止任務等便捷操作。這種全面的任務管理使得用戶能夠輕松管理多個檢測任務,提高工作效率。(3)爬取功能:爬取功能允許用戶根據設定的爬取深度,通過網頁源代碼進行匹配正則和自動化點擊表單自動收集目標網址下的URL,對這些URL進行過濾,收集出帶有參數的URL在進行GET、POST類型劃分。通過有效地收集這些信息,工具能夠擴大攻擊面,為后續的漏洞檢測提供更為全面的數據支持。這一功能是模糊測試功能的重要支撐,因為它不僅提高了檢測效率,還能夠發現更多潛在的安全風險。(4)PoC(ProofofConcept)管理功能:PoC管理功能使得用戶可以方便地收集、新增、修改和刪除已知漏洞的PoC。這些PoC是驗證漏洞存在性的關鍵證據,對于安全評估工作至關重要。通過有效的PoC管理,用戶可以更加準確地識別漏洞類型。(5)模糊測試功能:模糊測試功能是本工具的核心功能。它根據不同類型的攻擊選取相應的攻擊載荷,比如進行掃描XSS跨站腳本攻擊漏洞和SQL注入攻擊漏洞。這種智能化的模糊測試能夠模擬各種潛在的攻擊場景,有效發現目標站點的安全漏洞。通過模糊測試,用戶可以全面了解站點的安全狀況,及時發現并修復潛在的安全風險。3.2掃描工具模塊的分析與設計根據以上漏洞掃描工具的功能結構圖可知,可以將掃描工具分為5個功能模塊,用戶交互模塊、任務管理模塊、爬取功能模塊、PoC管理模塊、模糊測試模塊。以下具體介紹爬取功能模塊和模糊測試模塊。3.2.1爬取模塊爬取模塊是整個掃描器里面最重要的一個部分,它是模糊測試模塊的數據源。爬取模塊主要功能是對目標網站的爬取、JavaScript代碼解析執行、頁面URL提取以及頁面表單觸發。爬取模塊流程圖如圖3-2所示。圖3-2爬取模塊流程圖對目標站點進行頁面請求爬取數據:從輸入的URL開始,采用廣度優先遍歷的方式,一層一層的抓取目標網站上的URL,直到到達指定的最大深度。解析頁面獲得URL:對于目前的互聯網,大部分都是采用AJAX動態技術,所以我們采用Selenium框架,模擬用戶的操作,盡可能的把網頁的URL全部爬取。URL提取:使用BeautifulSoup庫獲取網頁中a標簽的href屬性,然后用urllib.parse函數里面的urljoin函數進行拼接獲取完整的URL。如果集合里面不存在拼接后的URL,將進入集合中等待爬取。并且使用Selenium進行網頁的表單點擊,獲取發往服務器的URL,并對這些URL進行判斷,如果不是靜態文件并且包含著參數傳遞,這些URL將會保存到集合里等待爬蟲完畢后進行XSS跨站腳本攻擊漏洞掃描和SQL注入漏洞掃描。URL去重:為了避免模糊測試模塊對同一個URL發送大量的測試請求,我們必須要對相同的URL去重,比如如果爬取到了以下這兩個URL:(1)http://xxx.xxx.xxx/count.php?id=1(2)http://xxx.xxx.xxx/count.php?id=2可以看到這兩個URL雖然不同,但是后端的count.php對id的處理邏輯是一樣的。如果沒有對這兩個相似的URL進行去重,那么模糊測試模塊將大量地發送Payload進行測試,這會目標服務器造成很大的負擔,也會影響掃描器的效率。所以對這樣相似的URL,我們只保存一個進行測試。3.2.2XSS跨站腳本攻擊漏洞檢測模塊模糊測試模塊包括了XSS跨站腳本攻擊漏洞掃描和SQL注入漏洞掃描,這個模塊同樣也是掃描器重要的一部分,它能夠有效發現目標站點的XSS跨站腳本攻擊反射型漏洞掃描。XSS跨站腳本攻擊漏洞檢測用例XSS跨站腳本攻擊是一種危害比較大,而且比較常見的一種漏洞。漏洞的原理是用戶輸入的內容被注入到了HTML中,所以也叫HTML注入。它可以隱蔽地執行JS代碼,對用戶造成嚴重的危害和影響。現如今,網站開發人員大多數都對用戶輸入的內容進行了過濾,例如使用對關鍵字進行過濾,以及對特殊字符的處理。對于以上的問題,我們在生成payload的時候使用對關鍵字隨機大小寫和采用不常見的字符代替空格以及使用罕見的函數來執行JS代碼,用來混淆防止匹配到我們的payload。例如以下payload:<IFRAme+SRc%0c=%0ajavascript:confirm``%0d><VIDeO%09onmOuSelEaVE%09=%0ajavascript:confirm()+-=+-><linSN%2foNMOuseeNTeR%09=%09prompt()%0a>XSS跨站腳本攻擊漏洞檢測方法XSS跨站腳本攻擊漏洞檢測方法需要爬取到有參數的URL,然后傳遞給XSS檢測模塊進行掃描。首先先分別對URL的參數進行探子試探,把URL的參數分別輸入正常的數據,這些正常數據可以是字母、數字、特殊字符等,但不應包含任何惡意JS腳本或代碼。之后請求服務器查看返回包,如果返回包中出現了正常的數據,這通常說明該參數點可能存在XSS跨站腳本攻擊的風險。這是因為,如果服務器能夠原封不動地將我們的輸入返回給我們,那么也可能能夠注入惡意JS腳本。XSS跨站腳本攻擊漏洞檢測流程如果探子試探的內容有出現在返回包,那么將對探子試探的參數進行帶有惡意JS代碼的攻擊,XSS跨站腳本攻擊漏洞檢測流程圖如圖3-3所示:先對探子試探的內容進行返回包的查詢,查看是出現在標簽屬性值里還是在標簽內容里。如果是在標簽屬性值則需要對屬性值進行閉合然后才能對惡意代碼執行,如果是在標簽內容則不需要進行閉合。然后根據閉合符生成對應的Payload,先對標簽的內容進行大小寫變換,然后使用罕見的填充字符進行填充用于代替空格混淆對關鍵字的匹配規則,在對事件進行大小寫變換,在隨機填充字符然后最后挑選函數閉合當前惡意代碼。構造HTTP請求包,發送到服務器,對服務器的響應包進行惡意代碼的查找,如果惡意代碼出現在返回包中,則存在XSS跨站腳本攻擊漏洞。圖3-3XSS跨站腳本攻擊漏洞檢測流程圖3.2.3SQL注入漏洞檢測模塊SQL注入模塊在也是在模糊測試功能中,它能夠有效發現目標站點的報錯型和時間盲注型和寬字節型的SQL注入漏洞掃描。SQL注入漏洞檢測用例SQL注入漏洞是一個對企業和用戶威脅極大的漏洞;它對企業可以刪除掉所有數據庫,在一定條件下甚至可以拿到計算機權限;它對用戶可以拿到用戶的賬號密碼甚至個人信息。漏洞的原理是和XSS漏洞很像,都是注入類型的漏洞,它主要的原因是開發人員沒有對用戶輸入的數據進行過濾,從而直接拼接到要查詢數據庫的SQL語句當中。所以它被稱作為SQL注入。對于安全意識比較差的開發人員,我們使用報錯型和時間盲注型和寬字節型的SQL注入對目標服務器進行SQL注入漏洞掃描。以下給出三種類型的部分檢測用例:'符號用于閉合SQL語句,可能會引起前端頁面的報錯。orBENCHMARK(20000000,SHA1(11111111111111))--用于對11111111111111進行SHA1加密運算20000000次,這個操作通過返回包所用的時間可以用于判斷是否存在時間盲注。%df'orBENCHMARK(20000000,SHA1(11111111111111))--判斷方法和時間盲注一樣,區別是在前面加了個%df用于合并字符,如果用戶對'號進行了\在前面加上的操作,\和%df就會進行合并成一個字符,從而'就會逃逸出來閉合sql語句。這是由于編碼轉換問題導致的漏洞。SQL注入漏洞檢測方法SQL注入漏洞檢測方法和XSS漏洞類似,都是通過爬蟲獲取帶有參數的URL,然后依次替換參數內容成Payload發往目標服務器進行檢測,通過響應包有沒有出現關鍵字或者查看響應時間是否明顯變長。本文針對SQL注入采用了三種檢測方法,以下分別介紹這三種方法。假設http://xxx.xxx.xxx/sql.php?id=1'存在注入點。基于報錯型注入的檢測假如使用http://xxx.xxx.xxx/sql.php?id=1'對目標服務器進行發送假設服務器那邊的SQL語句是這樣子如下:$query="selectusername,passwordfromuserswhereid='$_GET[id]'";那么要對數據庫查詢的數據將會變成如下:selectusername,passwordwhereid='1'';那這樣子就會報錯,因為是按最近原則來閉合的,那么這個語句會多了一個'號沒有閉合,導致語法錯誤報錯,如果前端有類似于“checkthemanualthat(correspondsto|fits)yourMySQLserverversion”或者“Unclosedquotationmarkafterthecharacterstring”等報錯信息,那么就可以判斷存在報錯型注入,因為可能會導致攻擊者會使用特定的函數進行SQL語句報錯執行后的回顯,如圖3-4所示。圖3-4報錯型注入回顯基于時間盲注型注入的檢測當基于報錯型注入的payload都使用后,前端頁面仍然沒有顯示報錯。那么當前頁面可能無注入點或者語句報錯了不回顯。此時,就要考慮使用基于時間盲注型注入的payload。它的原理主要通過使用對數據庫產生時間延遲的函數來判斷頁面的響應時間。如果使用了payload后頁面的響應時間明顯變長了,那么該網站可能存在時間盲注型SQL注入漏洞。在進行時間盲注檢測之前會發送一次正常的請求,該正常請求的頁面響應時間將會作為我們的基準時間。在本地經過測試BENCHMARK(20000000,SHA1(11111111111111))的運行時間起碼需要三秒。那么,通過使用payload請求頁面的響應時間如果大于3秒加上基準時間,就可以判斷該頁面存在時間盲注型SQL注入漏洞。基于寬字節型注入的檢測寬字節的注入檢測其實和報錯型注入、時間盲注型的檢測類似,但是也有所區別。寬字節注入是SQL注入攻擊中的一種特殊形式,它利用了某些字符編碼(如GBK)的特性。在GBK編碼中,一個漢字可能由兩個字節組成,且前一個字節的ASCII碼要大于128。這種特性在某些情況下可以被攻擊者利用來繞過應用程序的安全措施。如果目標服務器使用的是GBK編碼,但由于使用了不正確的函數進行對單引號進行轉義變成了\',那么,我們傳入參數%df'。當單引號經過轉移后,%df和\會變成一個中文漢字,從而單引號就會逃逸出來進行注入。SQL注入漏洞檢測流程這個模塊依賴爬取模塊的URL,等待爬取模塊結束后在進行SQL注入檢測。和XSS的檢測很像都是通過修改參數的內容成payload然后發往服務器進行測試,SQL注入漏洞檢測流程圖如圖3-5所示,具體流程如下:拿到爬取模塊返回的結果后,一個個順序執行報錯型注入、時間盲注型注入以及寬字節型注入檢測。根據不同的類型選擇不同的payload,將payload依次替換參數的值,然后發送到服務器。根據返回的響應包和響應時間判斷該頁面是否存在SQL注入漏洞;若存在,則繼續進行下一個類型的檢測,直到把三種類型檢測完畢后進行對下一個URL測試;若不存在,則直接進行下一個URL測試。圖3-5SQL注入漏洞檢測流程圖3.3本章小結本章對工具的實現做出了大概的框架,說明了工具實現的基本概念,并給出了爬取模塊、XSS跨站腳本攻擊模塊以及SQL注入模塊的流程圖。同時,還說明了XSS跨站腳本攻擊模塊以及SQL注入模塊的檢測用例和方法。4基于網絡爬蟲的漏洞掃描工具的實現本章基于對第三章的模塊的設計進行爬取模塊、XSS跨站腳本攻擊模塊以及SQL注入模塊進行代碼實現。4.1爬取模塊的實現該模塊主要是對目標站點的URL進行爬取,用URL過濾規則獲取有效的URL,并通過標簽定位點擊頁面下的input和button標簽,通過selenium點擊這些交互點,我們可以得到發往服務器的請求,對這些URL進行去重。保存這些請求然后交給模糊測試模塊進行漏洞掃描。4.1.1爬取模塊初始化爬蟲模塊初始化代碼如圖4-1所示,該模塊主要定義了用于存儲post和get型URL的列表,使用visited集合存儲已經爬取過的URL,定義了默認的爬取深度5,使用webdriver啟動瀏覽器,如果命令行有接受到URL這個參數將進入dfs_crawl()這個方法進行爬蟲。圖4-1爬蟲模塊初始化代碼4.1.2廣度優先爬蟲實現廣度優先核心代碼如圖4-2所示,使用了全局變量tag_sum和visited。tag_sum的作用是記錄已經打開的標簽頁數量,如果達到了10個那么就關閉之前打開的標簽頁。visited是記錄已經爬取過的URL,以免重復爬取。接下來開始判斷深度,判斷是否爬取過,判斷是不是相同的域名。如果其中一個為False就跳出當前爬取,因為這不符合爬取策略。Find_Event()方法用于點擊頁面上的表單。之后得到a標簽里面的href鏈接和當前頁面的URL拼接到一起,如果這個頁面沒有被爬取那么將會被進行爬取。圖4-2廣度優先核心代碼4.1.3事件點擊實現事件點擊核心代碼如圖4-3所示。這些函數用于解析HTML響應中的表單元素,并模擬用戶與表單的交互。具體流程是,找到返回包的form標簽,對form標簽里面的input標簽、button標簽、textarea標簽進行查找,之后加入event列表進入Event函數進行判斷所屬類型,通過這些類型進入到對于的函數進行點擊或者輸入內容。圖4-3事件點擊核心代碼4.2XSS跨站腳本攻擊漏洞檢測模塊實現該模塊主要是對XSS跨站腳本攻擊漏洞進行檢測。本小結介紹了XSS跨站腳本攻擊漏洞檢測的實現代碼。4.2.1注入點檢測實現注入點檢測核心代碼如圖4-4所示。這個模塊主要是進行參數提取,然后將參數依次替換成探子字符linshuning,構造請求包對目標服務器進行請求。對請求的響應包進行搜索,如果探子字符不存在響應包中說明沒有XSS跨站腳本攻擊漏洞;如果探子字符存在于響應包中,說明可能疑似XSS跨站腳本攻擊漏洞。之后用html_parser()方法進行判斷探子字符出現的具體位置以判斷類型;FindClose()方法用于查找閉合符號來閉合標簽。然后,生成對應的payloads對目標服務器進行請求。圖4-4注入點檢測核心代碼4.2.2反射類型和閉合符判斷實現反射類型和閉合符判斷核心代碼如圖4-5所示。這段代碼定義了兩個函數,html_parser()用于解析HTML響應以找到探子字符出現的位置用來檢測反射型漏洞的類型。FindClose()用于找到探子字符前一個位置的字符,用來閉合標簽執行JS代碼。圖4-5反射類型和閉合符判斷核心代碼4.2.3payload生成實現payload生成核心代碼如圖4-6所示。這段代碼定義了一個名為Gen的函數,用于生成反射型XSS攻擊的payload。函數中使用了一些預定義的變量和列表,包括random_string和random.choice函數用于隨機字符大小寫和隨機挑選列表中的元素,以及多個列表,用于構建不同類型的payload。整個過程中,通過隨機選擇填充字符、隨機大小寫標簽和事件,增加了payload的多樣性和隨機性,以提高測試的成功率。圖4-6payload生成核心代碼4.2.4判斷是否存在XSS漏洞實現判斷是否存在XSS漏洞核心代碼如圖4-7所示。這段代碼使用了requests庫來發送HTTP請求到目標服務器,并使用了response.text來獲取響應內容,然后檢查是否包含了當前payload。如果存在將漏洞信息記錄到vlun_point列表中,不存在將進行下一個payload。圖4-7判斷是否存在XSS漏洞核心代碼4.3SQL注入漏洞檢測模塊實現該模塊主要是對SQL注入漏洞進行檢測。本小結介紹了SQL注入漏洞檢測的實現代碼。4.3.1初始化代碼實現初始化代碼核心代碼如圖4-8所示,定義了報錯注入和時間盲注型payloads,以及閉合符和注釋符,通過從文件中獲取了SQL報錯的信息,來判斷是否存在報錯型注入。圖4-8初始化代碼核心代碼4.3.2報錯型注入檢測實現報錯型注入檢測核心代碼如圖4-9所示,這個函數用于檢測網站是否存在報錯型SQL注入漏洞。它用error_payloads里面存儲好的內容依次替換參數的值然后構造HTTP請求發往目標服務器,如果響應內容里面包括存儲在sql_errors的錯誤信息,那么就判斷存在報錯型注入。圖4-9報錯型注入檢測核心代碼4.3.3時間盲注型注入檢測實現時間盲注型注入檢測核心代碼如圖4-10所示,這個函數用于檢測網站是否存在時間盲注型SQL注入漏洞。這個函數主要也是用內置好的payloads依次替換參數的內容構造HTTP請求目標服務器,但是它的檢測原理和報錯型注入不一樣,它主要是通過響應包中的時間延時來進行判斷是否存在漏洞。在每次請求之后,它計算請求的響應時間,并與基準時間相比較。如果響應時間大于基準時間加上一個閾值(這里設定為3秒),則認為存在時間盲注SQL注入漏洞。圖4-10時間盲注型注入檢測核心代碼4.3.4寬字節型注入檢測實現寬字節型注入檢測核心代碼如圖4-11所示,這個函數用于檢測網站是否存在寬字節型SQL注入漏洞。它的檢測原理和時間盲注型類似,都是通過頁面的響應時間來判斷的。區別在于它使用%df作為payload的前綴,目的是為了假如目標服務器使用的編碼或者函數不正確導致的注入。圖4-11寬字節型注入檢測核心代碼4.4本章小結本章根據第三章的設計,對爬取模塊、XSS跨站腳本攻擊漏洞檢測模塊以及SQL注入漏洞檢測模塊實現,通過給出核心的代碼和具體實現細節做出了詳細的說明。5工具測試結果5.1功能測試功能測試主要對基于網絡爬蟲的漏洞掃描工具的各個模塊進行測試,主要測試模塊爬取模塊和模糊測試模塊(模糊測試模塊包括XSS跨站腳本漏洞功能和SQL注入漏洞功能)。經過第三章的設計思路和第四章的代碼實現,我們編寫出crawler工具,這款工具基于python進行編寫,其中的-u參數表示對后面的URL進行爬蟲,-xss參數代表對URL進行XSS跨站腳本漏洞測試,-sql參數代表對URL進行SQL注入漏洞測試。在接下來中我們使用本地環境PHP+Apache+MySQL搭建的Pikachu靶場對工具的有效性進行測試,對網站進行爬蟲有效性測試,爬蟲功能對目標URL無害,只是進行頁面URL采集。5.1.1爬取模塊測試執行爬蟲腳本pythoncrawler.py-u"",以為初始URL。爬取了13806個URL,經過過濾和去重,沒有發現POST型URL,但是發現了8個get型URL。如圖5-1所示,可以證明該爬取模塊的有效性。圖5-1爬取模塊測試圖5.1.2XSS跨站腳本攻擊漏洞檢測模塊測試模糊測試里面包含了XSS跨站腳本攻擊漏洞檢測。使用本地的靶場pikachu進行XSS跨站腳本攻擊漏洞,執行執行爬蟲腳本pythoncrawler.py-u"/pikachu-master/index.php"-xss,意思是對這個網站進行爬蟲和xss測試。用爬蟲到的結果進入XSS模塊進行掃描。XSS漏洞測試結果如圖5-2所示,XSS漏洞證明結果如圖5-3所示。可以證明XSS跨站腳本攻擊漏洞檢測的有效性。圖5-2XSS漏洞測試結果圖5-3XSS漏洞證明結果5.1.3SQL注入漏洞檢測模塊測試模糊測試里面包含了SQL注入漏洞檢測。使用本地的靶場pikachu進行SQL注入漏洞,執行執行爬蟲腳本pythoncrawler.py-u"/pikachu-master/index.php"-sql,意思是對這個網站進行爬蟲和SQL注入測試。用爬蟲到的結果進入SQL注入模塊進行掃描。SQL注入測試結果如圖5-4所示,使用正常的數據發送到目標服務器,看到響應時間只有333毫秒,如圖5-5所示。但是用了帶有時間盲注的payload后響應時間變成了4.62秒,如圖5-6所示。說明該URL存在SQL注入漏洞。圖5-4SQL注入測試結果圖5-5正常數據輸入圖5-6時間盲注payload數據輸入5.2本章小結為了驗證本工具的可用性,我們使用了/進行爬蟲測試,還有本地的靶場pikachu進行XSS跨站腳本漏洞測試和SQL注入漏洞測試,全程自動化無需人工參與。經過測試我們爬取到了URL,也成功的在靶場測試出了漏洞。6總結與展望6.1論文總結本論文主要研究了基于網絡爬蟲的漏洞掃描工具的設計與實現。通過對國內外研究現狀的分析,我們發現隨著網絡的日益普及,Web應用的安全性成為了重要的關注點。SQL注入和XSS跨站腳本攻擊是常見的Web安全漏洞,針對這些漏洞進行掃描對于提高系統的安全性具有重要意義。在相關技術介紹部分,論文對Web常見漏洞進行了介紹,包括SQL注入攻擊漏洞和XSS跨站腳本攻擊漏洞。這些漏洞是網絡安全領域的重要
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 擺地攤教學合同協議書
- 競業合同協議書模板
- 家政代理合同協議書模板
- 運營和老板合作合同協議書
- 2025年中國納米水滑石項目創業計劃書
- 中國3,3-二甲基-1-丁酸項目創業計劃書
- 中國境外油田服務項目創業計劃書
- 直播游戲運營方案
- 常熟POCT試劑項目商業計劃書
- 病人陪護合同協議書范本
- 2025-2030全球及中國網絡訪問控制(NAC)解決方案行業市場現狀供需分析及市場深度研究發展前景及規劃可行性分析研究報告
- 委托收款協議書模板
- 2025年山東省青島大學附屬中學九年級中考模擬數學試題
- 《工業網絡與組態技術》課程標準
- 中醫理療合同范本
- 小學經典誦讀社團活動計劃、安排、記錄
- 中職高教版(2023)語文基礎模塊下冊-第五單元寫作-說明的關鍵在于說得“明”【課件】
- 手機售后培訓方案
- 2025年度全國大學生創新創業競賽項目保密承諾書3篇
- DB33T 2288-2020 淡水池塘養殖尾水處理技術規范
- GB/T 44880-2024因果矩陣
評論
0/150
提交評論