• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Python的自動(dòng)代理Web漏洞掃描器的設(shè)計(jì)與實(shí)現(xiàn)

    2020-07-30 14:03:27孟清路賀俊劉對(duì)高雨
    科技視界 2020年17期
    關(guān)鍵詞:掃描器爬蟲漏洞

    孟清 路賀俊 劉對(duì) 高雨

    摘 要

    Web掃描器是提高網(wǎng)站安全性,讓滲透效率快速提升不可或缺的一部分,現(xiàn)有的優(yōu)秀掃描器的掃描功能都很強(qiáng)大,但是代理功能卻并不強(qiáng)。本文開發(fā)了一款基于Python的自動(dòng)代理Web漏洞掃描器,利用爬蟲和asyncio技術(shù)維護(hù)一個(gè)動(dòng)態(tài)的免費(fèi)代理池,通過隨機(jī)調(diào)用代理池里的有效代理進(jìn)行Web掃描。因?yàn)闇y(cè)試全程可以使用隨機(jī)代理,所以即使出現(xiàn)多個(gè)代理被安全設(shè)備發(fā)現(xiàn)的情況下也能繼續(xù)進(jìn)行有效的測(cè)試,這將大大提高授權(quán)情況下的黑盒測(cè)試下的效率。同時(shí)爬蟲還使用了多進(jìn)程,布爾去重,廣度優(yōu)先爬取等技術(shù)進(jìn)一步減少測(cè)試所需要的時(shí)間。

    關(guān)鍵詞

    代理掃描;滲透測(cè)試;Web安全;爬蟲

    中圖分類號(hào): TP393.08 ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼: A

    DOI:10.19694/j.cnki.issn2095-2457 . 2020 . 17 . 14

    Abstract

    Web scanners are an integral part of Web site security and penetration efficiency, and the best existing scanners have powerful scanning capabilities, but not as powerful proxies.This paper develops a python-based automated proxy Web vulnerability scanner, which USES crawler and asyncio technology to maintain a dynamic free proxy pool, and randomly invokes effective proxies in the proxy pool for Web scanning.Because random agents can be used throughout the testing process, effective testing can continue even if multiple agents are discovered by security devices, which will greatly improve the efficiency of black box testing under authorization.The crawler also USES multi-process, Boolean de-weighting, breadth-first crawling and other techniques to further reduce the time required for testing.

    Key Words

    Proxy scanner; Penetration testing; Crawler

    0 引言

    互聯(lián)網(wǎng)的不斷發(fā)展,日新月異的計(jì)算機(jī)技術(shù)使得Web產(chǎn)品的不斷發(fā)展,各個(gè)領(lǐng)域?qū)τ诨ヂ?lián)網(wǎng)的需求也突顯了出來。自十八大以來,習(xí)總書記對(duì)我國(guó)的網(wǎng)絡(luò)安全問題十分看重[1]隨著在2016年《中華人民共和國(guó)網(wǎng)絡(luò)安全法》法案正式通過,并且該法案將于次年6月起開始施行[2],社會(huì)各界對(duì)于網(wǎng)絡(luò)安全也重視了起來,可如何保障Web產(chǎn)品的安全已經(jīng)成了一大難題。

    在網(wǎng)絡(luò)安全測(cè)試中滲透測(cè)試是一個(gè)十分重要的測(cè)試方法,這項(xiàng)技術(shù)已經(jīng)存在數(shù)十年[3]?,F(xiàn)如今雖然市面上有了幾款較為成熟的漏洞掃描檢查工具可以幫助開發(fā)人員和網(wǎng)站維護(hù)人員完成大部分的安全防護(hù)工作,但是幾乎所有的工具的Web代理功能都非常的弱,甚至有些都沒有代理功能。這就導(dǎo)致大部分掃描器對(duì)于防護(hù)弱的網(wǎng)站時(shí)可以肆無忌憚的亂掃,但是面對(duì)安全防護(hù)不錯(cuò)的網(wǎng)站就無能為力了,為了保護(hù)好測(cè)試者,降低測(cè)試者在授權(quán)的黑盒測(cè)試中被現(xiàn)有的安全防護(hù)措施和設(shè)備所發(fā)現(xiàn)的概率,一款可以自動(dòng)代理的Web掃描器就非常重要了。

    1 軟件設(shè)計(jì)

    1.1 軟件需求分析

    此次要設(shè)計(jì)的漏洞掃描器是一個(gè)可以自動(dòng)代理的Web掃描器,掃描器要實(shí)現(xiàn)自動(dòng)代理功能一個(gè)可自行維護(hù)的Web代理池就非常重要,其次作為一款掃描器基本的Web掃描功能是產(chǎn)品的核心,最后要實(shí)現(xiàn)對(duì)掃描的信息進(jìn)行有效的存儲(chǔ)和輸出。需求分析流程圖如圖1。

    1.1.1 代理池模塊需求分析

    在互聯(lián)網(wǎng)高度發(fā)達(dá)的今天,網(wǎng)絡(luò)爬蟲已經(jīng)成為在重復(fù)采集數(shù)據(jù)中不可或缺的一部分[4]。代理池的作用也就越來越大了,為了維護(hù)一個(gè)可用的高質(zhì)量的代理池一般需要大量的時(shí)間和金錢,如果把錢花在維護(hù)代理池,這對(duì)于大部分的滲透測(cè)試來說可謂是本末倒置,所以本軟件所設(shè)想的是一個(gè)可積累,免費(fèi),實(shí)用的代理池模。要實(shí)現(xiàn)這些功能就需要從互聯(lián)網(wǎng)上的免費(fèi)代理網(wǎng)站爬取代理并進(jìn)行測(cè)試、打分,最后存儲(chǔ)起來,下一次使用時(shí)可以在原來的基礎(chǔ)上進(jìn)行再次的測(cè)試從而提高代理池的效率,當(dāng)然為了使用這一模塊用戶在滲透測(cè)試之前都必須花一定的時(shí)間進(jìn)行代理池的維護(hù)。

    1.1.2 自動(dòng)爬取需求分析

    有了一個(gè)可用的代理池之后自動(dòng)爬取功能的實(shí)現(xiàn)也就非常簡(jiǎn)單了,只需要在每次爬取時(shí)獲取一個(gè)隨機(jī)的代理并在爬取時(shí)使用即可。爬蟲爬取目標(biāo)網(wǎng)站時(shí)使用的是廣度優(yōu)先爬取,這樣在爬取網(wǎng)站時(shí)就可以設(shè)置要爬取的網(wǎng)站最大深度。當(dāng)然為了提高爬取的效率,多進(jìn)程是必不可少的,爬取時(shí)要對(duì)爬取出來的url進(jìn)行規(guī)范化和去重處理這樣就可以減少大量非必要的測(cè)試。

    1.1.3 漏洞檢測(cè)功能需求分析

    Web漏洞種類繁多,本掃描器暫時(shí)只支持最常見的漏洞:Sql注入漏洞和Xss注入漏洞。Sql注入是在Web前端同后臺(tái)數(shù)據(jù)庫(kù)之間發(fā)生數(shù)據(jù)交互時(shí)產(chǎn)生的安全漏洞[5]。Xss攻擊指攻擊者將惡意腳本寫入到Web網(wǎng)頁(yè)當(dāng)中,通常這些腳本能夠利用用戶的瀏覽器中的Javascript來執(zhí)行惡意代碼,來獲取用戶的隱私信息以及其他一-些惡意操作[6]。不同的漏洞通過調(diào)用不同的漏洞檢測(cè)模塊,模塊之間不存在相互調(diào)度關(guān)系,在檢測(cè)過程中Sql和Xss注入漏洞都是通過自動(dòng)填充表單并提交的方法獲取對(duì)應(yīng)的含注入點(diǎn)的url。

    1.1.4 報(bào)告生成需求分析

    對(duì)于掃描的結(jié)果一定要有一個(gè)清晰明確的輸出,不然掃描等于沒有掃描,對(duì)于不方便直接顯示的數(shù)據(jù)也要指明文件輸出的詳細(xì)位置,提供多種輸出格式。

    2 系統(tǒng)實(shí)現(xiàn)

    經(jīng)過軟件的需求分析我們可以得知Web掃描器應(yīng)該分為四個(gè)大模塊,分別是代理池模塊,自動(dòng)爬取模塊,漏洞檢測(cè)模塊和生成報(bào)告模塊。

    2.1 代理池模塊實(shí)現(xiàn)

    代理池通過proxy_pool_run.py進(jìn)行代理池的運(yùn)行和控制包括獲取要爬取的有效免費(fèi)ip數(shù)量,并判斷現(xiàn)有的IP數(shù)量是否滿足,從而控制爬蟲的爬取。爬取時(shí)通過crawalers文件下的daili66.py,ip3366.py,kuaidaili.py和xici.py爬取網(wǎng)站的免費(fèi)代理,每次爬取時(shí)都會(huì)隨即產(chǎn)生隨機(jī)值填充到要爬取的網(wǎng)站url中防止重復(fù)爬取,對(duì)爬取的代理進(jìn)行布爾去重后存儲(chǔ)到指定的文件,存儲(chǔ)初時(shí)默認(rèn)代理的分?jǐn)?shù)為0。在proxy_test.py中進(jìn)行代理的檢測(cè),每次成功后代理分?jǐn)?shù)加一,滿9分后分?jǐn)?shù)不再上升但是依然要檢測(cè),對(duì)于檢測(cè)失敗的代理將從代理池中刪除。代理測(cè)試時(shí)為提高測(cè)試效率使用異步協(xié)程的方式,每次測(cè)試100個(gè)代理,當(dāng)然本項(xiàng)目也支持你在代理池存儲(chǔ)文件中按規(guī)范添加自己的代理。代理池模塊流程圖如圖2。

    2.2 爬蟲模塊實(shí)現(xiàn)

    爬蟲模塊是本項(xiàng)目的核心,如何從用戶提交的一個(gè)有效url中高效的爬取出url是最重要的。爬蟲模塊的文件在Scan目錄下的,Craw.py將對(duì)爬取的url鏈接進(jìn)行判斷除去空鏈接,如果不是規(guī)范的url則會(huì)利用urllib庫(kù)的parse模塊獲取絕對(duì)路徑的地址,在使用pybloom_live庫(kù)的BloomFilter模塊對(duì)爬取的url進(jìn)行布爾去重。

    Queue_manager.py會(huì)獲取和判斷用戶要求爬取的網(wǎng)站深度,再使用廣度優(yōu)先爬取的技術(shù)進(jìn)行爬取。如果你要使用本項(xiàng)目的自動(dòng)代理功能,則會(huì)調(diào)用crawlers目錄下的proxy_pool_run.py文件中的getproxy_url()函數(shù)從代理池中隨機(jī)選取一個(gè)代理進(jìn)行使用,通過多進(jìn)程的方式來大幅提高爬蟲模塊的執(zhí)行效率。之所以選擇多進(jìn)程而不是多線程是因?yàn)椤霸诙嗪讼拢?如果想做并行執(zhí)行提升程序效率, 比較常用有效的方法是使用多進(jìn)程[7]。”爬蟲模塊流程圖如圖3。

    2.3 漏洞檢測(cè)模塊實(shí)現(xiàn)

    漏洞檢測(cè)模塊在Attack目錄下,每個(gè)模塊之間功能分離不重復(fù)。

    2.3.1 Sql注入檢測(cè)模塊實(shí)現(xiàn)

    Sql注入的自動(dòng)化判斷難在如何獲取注入點(diǎn),本掃描器通過提煉網(wǎng)頁(yè)中的form表單并進(jìn)行自動(dòng)填充提交在獲取對(duì)應(yīng)的url從而獲得可能存在注入點(diǎn)的url。Url測(cè)試時(shí)craw_url()函數(shù)對(duì)爬取的頁(yè)面進(jìn)行form表單的自動(dòng)填充并拼接上我們所測(cè)試的多個(gè)playload。 _craw()函數(shù)從隊(duì)列中獲取要測(cè)試的url,先提交一個(gè)含有單個(gè)單引號(hào)的playload的url看是否存在報(bào)錯(cuò),如果不報(bào)錯(cuò)則說明可能使用了雙引號(hào),則進(jìn)行雙引號(hào)的字符型Sql注入測(cè)試和搜索型的Sql注入測(cè)試;如果報(bào)錯(cuò)則再提交一個(gè)含有單個(gè)雙引號(hào)playload的url看是否報(bào)錯(cuò),如果在報(bào)錯(cuò)則可能是數(shù)字型的Sql注入漏洞,則利用對(duì)應(yīng)的playload進(jìn)行測(cè)試,如果提交一個(gè)含有單個(gè)雙引號(hào)playload的url不報(bào)錯(cuò)則可能是單引號(hào)的字符型Sql注入測(cè)試和搜索型的Sql注入;如果按對(duì)應(yīng)的playload測(cè)試后不報(bào)錯(cuò),則可能含有Sql注入漏洞,將對(duì)應(yīng)的url存儲(chǔ)起來然后判斷是否測(cè)試完所有的url,有則取出下一個(gè)url,沒有模塊結(jié)束。Sql檢測(cè)模塊流程圖如圖4。

    2.3.2 Xss漏洞檢測(cè)模塊實(shí)現(xiàn)

    Xss和Sql注入一樣注入點(diǎn)都是通過自動(dòng)提交form表單的形式獲取可能含有注入點(diǎn)的url,Xss漏洞檢測(cè)時(shí)先檢測(cè)是否存在dom型Xss,再檢測(cè)是否存在反射型或存儲(chǔ)型Xss注入。

    Dom型的Xss檢測(cè)時(shí)會(huì)根據(jù)正則表達(dá)式去掉含有playload的響應(yīng)包中的內(nèi)容,接著在剩余的內(nèi)容中查找注入點(diǎn),如果存在相吻合的數(shù)據(jù),則可能存在dom型Xss注入。

    反射型Xss和存儲(chǔ)型Xss是通過九個(gè)核心的正則表達(dá)式(正則表達(dá)式常用來按用戶所定義的規(guī)則來檢索或替換符合的文本,從而達(dá)到用戶所預(yù)期的一串特殊字符[8]。)檢測(cè)時(shí)首先是發(fā)送一個(gè)設(shè)定好的特殊payload,在確定pladload在url中的輸出點(diǎn)所對(duì)應(yīng)的dom結(jié)點(diǎn)的位置,比如:注釋內(nèi)、雙引號(hào)內(nèi)、<>內(nèi)……其次再看這個(gè)輸出點(diǎn)對(duì)應(yīng)核心正則表達(dá)式中所描述的哪個(gè)位置。找到pladload所在的位置后就需要查看在這個(gè)位置要利用成功有哪些字符不能被轉(zhuǎn)義,然后在看響應(yīng)中的payload,從此時(shí)顯示payload的表現(xiàn)形式判斷那些‘不可被轉(zhuǎn)義的特殊字符前要被加上轉(zhuǎn)義符重新發(fā)送修改后的playload,直到每個(gè)不可被轉(zhuǎn)義的字符都成功的繞過一次才會(huì)認(rèn)為存在Xss漏洞。當(dāng)然不同的dom位置的攻擊方法也不同。Xss注入漏洞檢測(cè)模塊流程圖如5。

    2.4 報(bào)告生成模塊實(shí)現(xiàn)

    報(bào)告生成模塊實(shí)現(xiàn)的腳本是Output文件下的out_web.py,此腳本有add_list()函數(shù)以列表的形式添加到對(duì)應(yīng)的字典中,在通過build_html()函數(shù)進(jìn)行輸出,一般情況下add_list()函數(shù)所獲取的列表全部來源于掃描出來的各類.txt文件,最后把這些數(shù)據(jù)全部整合起來輸出為一個(gè)頁(yè)面。

    3 項(xiàng)目展示

    3.1 項(xiàng)目主界面展示

    本軟件是使用的是pyhton3.7版本,啟動(dòng)時(shí)直接在命令行下運(yùn)行主程序即可。程序啟動(dòng)的提示中會(huì)顯示是否要使用免費(fèi)代理功能,如果輸入No,則會(huì)顯示出本軟件的命令行參數(shù),如果選擇Yes,則會(huì)先進(jìn)行代理池的初始化,初始化結(jié)束后會(huì)顯示本軟件的命令行參數(shù)。

    3.2 基礎(chǔ)功能演示

    3.2.1 代理池功能演示

    在直接運(yùn)行主程序Hugh.py,即輸入“python Hugh.py”都會(huì)提醒是否使用免費(fèi)代理功能如果需要在命令行中輸入Yes即可。

    3.2.2 網(wǎng)頁(yè)爬取功能演示

    假如我們僅需要爬取的網(wǎng)站是“http://192.168.111.141:8081/”在命令行輸入命令“python Hugh.py -u http://192.168.111.141:8081/”就可以進(jìn)行網(wǎng)頁(yè)爬取,爬取時(shí)默認(rèn)爬取深度為 3,如果需要更改爬取深度請(qǐng)?jiān)诿钪屑尤雂epth選項(xiàng),假設(shè)要修改的深度為4,則此時(shí)完整的的命令為“python Hugh.py -u http://192.168.111.141:8081/ --depth=4”。

    3.2.3 漏洞檢測(cè)模塊功能演示

    (1)Sql注入檢測(cè)模塊演示

    如果我們要對(duì)爬取的網(wǎng)站進(jìn)行Sql注入檢測(cè)時(shí),假設(shè)要爬取的網(wǎng)站是“http://192.168.111.141:8081/”,默認(rèn)爬取深度,則爬取的命令是“python Hugh.py -u http://192.168.111.141:8081/--sql=1”,即可對(duì)整個(gè)網(wǎng)站進(jìn)行Sql注入檢測(cè)。

    (2)Xss注入檢測(cè)模塊演示

    如果我們要對(duì)爬取的網(wǎng)站進(jìn)行Xss注入檢測(cè)時(shí),假設(shè)要爬取的網(wǎng)站是“http://192.168.111.141:8081/”,默認(rèn)爬取深度,則爬取的命令是“python Hugh.py -u http://192.168.111.141:8081/--xss=1”,即可對(duì)整個(gè)網(wǎng)站進(jìn)行Xss注入檢檢測(cè)。

    (3)Sql注入和Xss注入同時(shí)檢測(cè)模塊演示

    如果我們要對(duì)爬取的網(wǎng)站進(jìn)行Xss和Sql注入檢測(cè)時(shí),假設(shè)要爬取的網(wǎng)站是“http://192.168.111.141:8081/”,默認(rèn)爬取深度,則爬取的命令是“python Hugh.py -u http://192.168.111.141:8081/--xss=1 ?--sql=1”,即可對(duì)整個(gè)網(wǎng)站進(jìn)行檢測(cè),如圖6。

    3.2.4 掃描報(bào)告結(jié)果展示

    在爬取網(wǎng)站后打開掃描結(jié)果所在的文件夾即可看到各種掃描結(jié)果,其中.html文件就是所有掃描結(jié)果的匯總,如圖7所示。如果要修改輸出文件的位置,請(qǐng)?jiān)趌ib.config.py中更改。

    4 結(jié)束語(yǔ)

    本項(xiàng)目實(shí)現(xiàn)了一個(gè)基于Python的自動(dòng)代理Web漏洞掃描器,成功維護(hù)了一個(gè)簡(jiǎn)易的代理池,讓自動(dòng)化代理功能成功地加入到了Web掃描器中,而且能成功檢測(cè)出網(wǎng)站的安全漏洞,讓黑盒測(cè)試有了更大的隱蔽性,具有一定的實(shí)用價(jià)值。當(dāng)然本掃描器還是有許多不足之處,比如支持檢測(cè)的漏洞不夠多,支持的代理協(xié)議不夠多,掃描報(bào)告頁(yè)面相對(duì)簡(jiǎn)陋等,需要繼續(xù)改進(jìn)。

    參考文獻(xiàn)

    [1]張?zhí)N昭.中國(guó)特色治網(wǎng)之道: 理念與成就——十八大以來我國(guó)網(wǎng)絡(luò)空間治理的回顧與思考[J].中國(guó)行政管理,2019,1:28.

    [2]鄧若伊.以法制保障網(wǎng)絡(luò)空間安全構(gòu)筑網(wǎng)絡(luò)強(qiáng)國(guó)—— 《網(wǎng)絡(luò)安全法》和《國(guó)家網(wǎng)絡(luò)空間安全戰(zhàn)略》解讀[J].電子政務(wù),2017,2:2-35.

    [3]牛詠梅.面向Web應(yīng)用的漏洞掃描器的設(shè)計(jì)與實(shí)現(xiàn)[J].南陽(yáng)理工學(xué)院學(xué)報(bào),2018,10(06):66-69.

    [4]王佳鵬,徐海蛟,許培宇,何佳蕾,林冠成.面向網(wǎng)絡(luò)爬蟲的高可用動(dòng)態(tài)池系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].福建電腦,2019,35(06):8-11.

    [5]李鑫.基于Web滲透測(cè)試的SQL注入研究[J].信息與電腦(理論版),2020,32(03):164-166.

    [6]谷家騰. 基于動(dòng)態(tài)分析的XSS漏洞檢測(cè)方法研究[D].北京郵電大學(xué),2019.

    [7]唐琳,董依萌,何天宇.基于Python的網(wǎng)絡(luò)爬蟲技術(shù)的關(guān)鍵性問題探索[J].電子世界,2018(14):32-33.

    [8]苻玲美.正則表達(dá)式在python爬蟲中的應(yīng)用[J].電腦知識(shí)與技術(shù),2019,15(25):253-254.

    猜你喜歡
    掃描器爬蟲漏洞
    利用網(wǎng)絡(luò)爬蟲技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說
    漏洞
    基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
    利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
    大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
    電子制作(2017年9期)2017-04-17 03:00:46
    三明:“兩票制”堵住加價(jià)漏洞
    漏洞在哪兒
    高鐵急救應(yīng)補(bǔ)齊三漏洞
    SICK TIM351迷你型激光掃描器
    戒指掃描器
    永仁县| 黄浦区| 申扎县| 河间市| 古田县| 镇雄县| 阿瓦提县| 成都市| 韩城市| 广平县| 津南区| 花莲县| 游戏| 托克逊县| 合山市| 黎城县| 香河县| 东丽区| 麦盖提县| 通江县| 丰城市| 朝阳市| 吴忠市| 江华| 丘北县| 孟州市| 湘阴县| 德保县| 武鸣县| 确山县| 东阿县| 扶余县| 尖扎县| 鹿邑县| 兴海县| 偏关县| 邵阳县| 珲春市| 桐城市| 日土县| 沽源县|