亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        智能微電網(wǎng)中具有可擴(kuò)展性的Web漏洞掃描工具研究與實(shí)現(xiàn)

        2022-12-10 12:44:28
        信息安全研究 2022年12期
        關(guān)鍵詞:漏洞頁(yè)面框架

        廖 微

        (軍事科學(xué)院系統(tǒng)工程研究院軍事新能源技術(shù)研究所 北京 102300) (nyyth2019@163.com)

        5G的普及使得人類(lèi)社會(huì)步入了新的發(fā)展階段,電子設(shè)備遍及國(guó)民生活的方方面面.伴隨著智能化出現(xiàn)的是迅速增長(zhǎng)的電力需求.在這種趨勢(shì)下,現(xiàn)有的集中式發(fā)電系統(tǒng)結(jié)構(gòu)復(fù)雜、成本高,而且遠(yuǎn)距離傳輸和高強(qiáng)度運(yùn)行難以滿足更加多樣化和高質(zhì)量的供電需求[1-2].為了充分利用可再生能源發(fā)電的技術(shù)優(yōu)勢(shì),分布式的微電網(wǎng)模式成為人們的關(guān)注熱點(diǎn).智能微電網(wǎng)是與傳統(tǒng)的集中式電網(wǎng)系統(tǒng)相對(duì)的概念.它在傳統(tǒng)的輸配電基礎(chǔ)上,將可再生能源發(fā)電技術(shù)作為新型分布式電源,通過(guò)部署集成能源管理系統(tǒng)(EMS)和物聯(lián)網(wǎng)技術(shù)實(shí)現(xiàn)了一種新的環(huán)境友好型發(fā)電模式[3].按照一定的拓?fù)浣Y(jié)構(gòu),多個(gè)分布式電源及負(fù)載等可以形成獨(dú)立、小型的網(wǎng)絡(luò)并關(guān)聯(lián)至傳統(tǒng)的主網(wǎng)中,由靜態(tài)開(kāi)關(guān)作為中間樞紐.其中,微電網(wǎng)能量管理系統(tǒng)(MGEMS)需要借助互聯(lián)網(wǎng)技術(shù)收集和處理大量的實(shí)時(shí)數(shù)據(jù),進(jìn)行調(diào)度決策和管理控制,是整個(gè)系統(tǒng)的控制中樞.一旦其中的Web應(yīng)用存在漏洞,攻擊者就能夠攻擊系統(tǒng)服務(wù)器,竊取電力數(shù)據(jù)甚至擾亂電能的正常傳輸與配送.因此,針對(duì)MGEMS設(shè)計(jì)和實(shí)現(xiàn)完備的Web應(yīng)用漏洞檢測(cè)工具進(jìn)行測(cè)試并提前發(fā)現(xiàn)漏洞,必然能夠提高整個(gè)智能微電網(wǎng)系統(tǒng)的安全性.

        2020年,國(guó)家信息安全漏洞共享平臺(tái)(CNVD)共收錄19 964個(gè)漏洞,其中,中高危漏洞共計(jì)17 542個(gè),所占比重高達(dá)87.9%,相較于2019年同比增加24.39%.圖1是不同漏洞類(lèi)型的分布圖.

        圖1 2020年不同類(lèi)型漏洞占比

        可以看出,Web應(yīng)用程序漏洞位居第2位,僅次于未詳細(xì)列出的其他所有漏洞類(lèi)型總和.不僅如此,這些漏洞數(shù)量并不包括未被發(fā)現(xiàn)或者黑客團(tuán)隊(duì)發(fā)現(xiàn)自行利用的,這種隱藏的漏洞可能才是最影響Web安全性的.比如2015年Hacking Team數(shù)據(jù)泄露事件就造成了很大的影響.Hacking Team是一家專(zhuān)門(mén)從事監(jiān)視技術(shù)的公司,主要協(xié)助政府監(jiān)控公民,被某組織攻擊后,包括多個(gè)0day漏洞的exp,公民信息文件在內(nèi)的400 G的數(shù)據(jù)在網(wǎng)絡(luò)上公開(kāi).其中的幾個(gè)flash漏洞可以影響幾乎所有的Web應(yīng)用并無(wú)法在短時(shí)間內(nèi)修復(fù),這使得許多用戶的信息被竊取.此外,由于Web應(yīng)用的用戶群體龐大,信息傳播速度更快,造成的危害難以想象.

        在智能微電網(wǎng)系統(tǒng)中,MGEMS包含大量的物聯(lián)網(wǎng)數(shù)據(jù)交互和操縱過(guò)程,不可避免地要大規(guī)模應(yīng)用Web技術(shù),這使其面臨更多的潛在漏洞[4].一旦被不法分子發(fā)現(xiàn)和利用,不僅用戶的用電數(shù)據(jù)和個(gè)人隱私信息被泄露和推斷,整個(gè)電力調(diào)配系統(tǒng)也很容易被惡意操縱,影響國(guó)民生產(chǎn)生活的整個(gè)過(guò)程.因此,本文針對(duì)智能微電網(wǎng)系統(tǒng)中涉及的Web安全,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)較為全面的漏洞檢測(cè)框架,以增強(qiáng)智能微電網(wǎng)系統(tǒng)的安全性和可靠性.

        1 智能微電網(wǎng)與Web安全

        1.1 智能微電網(wǎng)

        智能微電網(wǎng)是相對(duì)于傳統(tǒng)智能電網(wǎng)的一個(gè)概念,它將可再生能源技術(shù)、分布式電源、儲(chǔ)能裝置、能源管理系統(tǒng)和輸配電基礎(chǔ)設(shè)施高度集成[5].它既可以看作是電力系統(tǒng)中一個(gè)可控制的調(diào)度單元,能在數(shù)秒內(nèi)對(duì)中央控制系統(tǒng)的指令作出反應(yīng).同時(shí)也可以看作是針對(duì)用戶的可定制電源,以滿足多樣化的用電需求.其智能化主要體現(xiàn)在微電網(wǎng)中采用多樣化的傳感技術(shù)和物聯(lián)網(wǎng)設(shè)備來(lái)監(jiān)測(cè)底層運(yùn)行數(shù)據(jù)并進(jìn)行有效控制,通過(guò)模型仿真進(jìn)行實(shí)時(shí)分析,挖掘電力特征并制定合理的輸配電策略.如圖2所示,這一切的控制中樞就是其內(nèi)部的微網(wǎng)能量管理系統(tǒng),是保證微網(wǎng)安全運(yùn)行、有效調(diào)度決策的最重要組成部分.

        微電網(wǎng)的概念最早由美國(guó)提出,因此美國(guó)在相關(guān)領(lǐng)域的研究和實(shí)踐起步更早,發(fā)展更快,成果更突出.歐洲自1998年逐步開(kāi)始對(duì)微電網(wǎng)進(jìn)行研發(fā),針對(duì)相關(guān)的能源集成、協(xié)調(diào)控制等管理方案形成了一套基本的理論體系.我國(guó)微電網(wǎng)雖然仍處于起步階段,但也吸引了大量的人力物力資源,通過(guò)在研究項(xiàng)目中不斷實(shí)踐和摸索,取得了一定成果并確定了基本的技術(shù)路線和發(fā)展目標(biāo).其中,促進(jìn)微電網(wǎng)系統(tǒng)智能化、安全化是主要研究方向之一.

        圖2 微電網(wǎng)控制結(jié)構(gòu)

        1.2 Web漏洞

        Web應(yīng)用中的漏洞主要可以分為2大類(lèi):

        一類(lèi)是Web應(yīng)用所依托的服務(wù)器和數(shù)據(jù)庫(kù)軟件自身的漏洞[6].這些漏洞和桌面應(yīng)用程序的漏洞比較類(lèi)似,主要有緩沖區(qū)溢出、遠(yuǎn)程代碼執(zhí)行、拒絕服務(wù)等.現(xiàn)在比較受歡迎的Apache,IIS,Nginx等服務(wù)器以及常用的數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL,MS SQL Server,Oracle等都或多或少出現(xiàn)過(guò)一些比較嚴(yán)重的漏洞.由于幾乎每個(gè)Web應(yīng)用中都會(huì)用到服務(wù)器和數(shù)據(jù)庫(kù)軟件,一旦這些軟件出現(xiàn)問(wèn)題,就很可能被攻擊者批量利用,影響會(huì)非常大.

        另一類(lèi)是Web應(yīng)用本身出現(xiàn)的漏洞,可以分為以下4類(lèi):

        1) SQL注入漏洞.

        SQL注入漏洞是Web應(yīng)用中最常見(jiàn)的一種漏洞,通過(guò)該漏洞可以獲取數(shù)據(jù)庫(kù)中的信息,讀取本地文件,甚至執(zhí)行一些命令.SQL注入漏洞在1999年就已出現(xiàn),并在2003年前后危害到達(dá)頂峰[7].即使到現(xiàn)在它仍然是OWASP TOP10上的前幾位.

        2) 跨腳本攻擊(XSS)漏洞.

        跨站腳本攻擊(cross site script, CSS)漏洞主要在前端出現(xiàn),但同樣也是由于后臺(tái)程序過(guò)濾不嚴(yán)導(dǎo)致的.為了避免與層疊樣式表CSS命名沖突,將其簡(jiǎn)稱為XSS[8].

        3) 跨站請(qǐng)求偽造(CSRF)漏洞.

        CSRF是一種欺騙用戶的瀏覽器跨站點(diǎn)去訪問(wèn)一個(gè)需要認(rèn)證的網(wǎng)站,并執(zhí)行非自愿操作的攻擊手段[9].在實(shí)際攻擊中,CSRF漏洞常常和XSS漏洞配合使用,特別是當(dāng)網(wǎng)站存在同源策略的限制時(shí).

        4) 未授權(quán)訪問(wèn)漏洞.

        在Web應(yīng)用中用戶需要登錄才能訪問(wèn)頁(yè)面中的某些內(nèi)容.但當(dāng)不同的用戶僅僅是通過(guò)URL中的ID參數(shù)來(lái)區(qū)分而不添加訪問(wèn)控制時(shí),他們彼此之間就可以相互查看或修改個(gè)人信息[10].

        以上只是列舉的Web應(yīng)用中常見(jiàn)的漏洞,并不局限于此.因此,能夠檢測(cè)和識(shí)別Web系統(tǒng)中潛在的漏洞威脅對(duì)維護(hù)整個(gè)網(wǎng)絡(luò)空間的安全是至關(guān)重要的.

        1.3 現(xiàn)有Web漏洞檢測(cè)工具

        為了減少Web應(yīng)用漏洞的危害,國(guó)內(nèi)外已有許多面向企業(yè)的Web漏洞檢測(cè)工具出現(xiàn).這些工具主要是向網(wǎng)站服務(wù)器發(fā)送不同的HTTP數(shù)據(jù)包,通過(guò)分析響應(yīng)結(jié)果,探測(cè)網(wǎng)站服務(wù)器版本和數(shù)據(jù)庫(kù)版本,然后根據(jù)探測(cè)的信息向網(wǎng)站服務(wù)器發(fā)送已知類(lèi)型漏洞的payload,同樣,分析返回結(jié)果判斷是否存在漏洞,最后生成結(jié)果報(bào)表.

        在國(guó)外相對(duì)比較成熟的如Acunetix[11], Web Vulnerability Scanner[12],由Java開(kāi)發(fā),支持ajax解析、flash內(nèi)容檢索,有業(yè)內(nèi)較為先進(jìn)的SQL注入和XSS漏洞測(cè)試引擎,穩(wěn)定性較好,有豐富的報(bào)告功能.

        在國(guó)內(nèi),各大安全公司也推出了不少相關(guān)產(chǎn)品,如:360推出的網(wǎng)站安全檢測(cè)平臺(tái);保護(hù)傘網(wǎng)絡(luò)開(kāi)發(fā)的Safe3 Scanner;知道創(chuàng)宇公司推出的Websaber網(wǎng)站應(yīng)用安全評(píng)估系統(tǒng).這些系統(tǒng)能夠發(fā)現(xiàn)常見(jiàn)類(lèi)型的Web應(yīng)用漏洞,提出解決方案,適合常規(guī)的自動(dòng)化測(cè)試.

        然而Web漏洞的成因和利用方式都是多種多樣的,用戶的需求也是不同的,這些工具仍存在以下局限性[13]:

        1) 較為臃腫,多個(gè)功能集成在一起,用戶不易選擇;

        2) 速度和掃描的深入度不足;

        3) 靈活性較差,不易配合人工的測(cè)試使用.

        針對(duì)以上問(wèn)題,本文設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)完備的漏洞檢測(cè)框架,可以由用戶自由選擇掃描引擎,用于輔助安全人員進(jìn)行漏洞檢測(cè)或自動(dòng)化地漏洞掃描.整個(gè)框架包含站點(diǎn)地圖繪制、HTTP代理、請(qǐng)求重放和入侵等多個(gè)程序模塊,以輔助智能微電網(wǎng)系統(tǒng)的人工測(cè)試,便于安全人員把握Web應(yīng)用結(jié)構(gòu),完成HTTP流量分析和Fuzzing測(cè)試等;自動(dòng)化掃描的程序模塊既包括單頁(yè)面掃描也包括整站掃描,其中單頁(yè)面掃描可以選擇調(diào)用Sqlmap,nmap等安全工具,支持輸入命令與安全工具交互,也可以用框架自帶的引擎進(jìn)行掃描,并返回發(fā)現(xiàn)的漏洞詳情.最后,使用PyQt的樣式設(shè)計(jì)語(yǔ)言QSS設(shè)計(jì)了整個(gè)程序的界面,優(yōu)化用戶使用感,并將各模塊封裝在單獨(dú)的API文件中,便于后續(xù)的擴(kuò)展和功能完善.

        2 系統(tǒng)框架

        本文設(shè)計(jì)的漏洞檢測(cè)框架如圖3所示,該框架包括站點(diǎn)地圖、HTTP代理、請(qǐng)求重放、入侵、掃描5個(gè)功能模塊.各模塊之間既可以獨(dú)立使用,也可以相互調(diào)用輸出結(jié)果.

        圖3 漏洞檢測(cè)框架總體設(shè)計(jì)

        3 模塊設(shè)計(jì)

        3.1 站點(diǎn)地圖繪制

        該模塊通過(guò)用戶輸入域名,選擇需要使用的協(xié)程數(shù)等參數(shù)后會(huì)掃描該域名下的所有頁(yè)面,并以目錄樹(shù)的形式展現(xiàn).當(dāng)使用者點(diǎn)擊目錄樹(shù)中爬取到的URL時(shí),可以在內(nèi)嵌的瀏覽器中預(yù)覽每個(gè)頁(yè)面以及爬取時(shí)的請(qǐng)求/響應(yīng)包.

        3.1.1 高效判重?cái)?shù)據(jù)結(jié)構(gòu)Bloom Filter

        URL爬取的難點(diǎn)是URL的去重[14].本文框架使用Python的一個(gè)擴(kuò)展包BitVector實(shí)現(xiàn)了高效判重的Bloom Filter數(shù)據(jù)結(jié)構(gòu).該結(jié)構(gòu)在1970年由Bloom提出.Bloom Filter的核心思想是利用多個(gè)Hash函數(shù)將URL映射到某些集合里.因?yàn)閱蝹€(gè)Hash函數(shù)出現(xiàn)沖突的可能性比較高,遇到?jīng)_突時(shí)就用另外的Hash函數(shù)再次映射,從而減少了沖突[15].但它有一定的誤判率,在判斷某元素是否存在集合中時(shí)可能誤判,誤判率會(huì)隨著元素個(gè)數(shù)的增多而增大.如果應(yīng)用在該模塊的爬蟲(chóng)URL去重中,較低的誤判率是可以接受的,誤判1次只是多爬1個(gè)頁(yè)面而已.為了減少空間的占用,Bloom Filter使用位數(shù)組對(duì)元素的Hash進(jìn)行存儲(chǔ),占用的內(nèi)存比其他數(shù)據(jù)結(jié)構(gòu)要小得多.

        3.1.2 并發(fā)

        為了提高爬取的速度,本文框架使用協(xié)程進(jìn)行并發(fā),將每個(gè)耗時(shí)的IO操作封裝成一個(gè)協(xié)程.協(xié)程類(lèi)似于一個(gè)個(gè)函數(shù),一個(gè)函數(shù)執(zhí)行到一半時(shí)可以跳到另一個(gè)函數(shù)執(zhí)行,這種特性非常適合IO密集型程序的迸發(fā),實(shí)現(xiàn)非阻塞的異步IO[16].IO密集型的程序耗時(shí)主要發(fā)生在發(fā)出請(qǐng)求等待響應(yīng)的那段時(shí)間,有了協(xié)程就可以在剛發(fā)送完請(qǐng)求后跳到另一個(gè)協(xié)程執(zhí)行,收到響應(yīng)后再回來(lái)繼續(xù)執(zhí)行接下來(lái)的任務(wù),也就是同時(shí)可以并發(fā)幾個(gè)鏈接.協(xié)程實(shí)際上只在1個(gè)線程中運(yùn)行,主要利用線程內(nèi)任務(wù)的切換,一般不需要加鎖,并且占用資源較少.

        3.1.3 模塊實(shí)現(xiàn)

        算法1是針對(duì)站點(diǎn)地圖的并發(fā)式爬蟲(chóng)算法,使用Bloom Filter數(shù)據(jù)結(jié)構(gòu)進(jìn)行去重,并設(shè)計(jì)了一些正則表達(dá)式來(lái)匹配和抓取頁(yè)面中的鏈接.

        算法1.站點(diǎn)地圖爬蟲(chóng)算法.

        輸入:域名dname、協(xié)程數(shù)目n.

        ① 初始化爬取成功的URL隊(duì)列q,Bloom Filter數(shù)據(jù)結(jié)構(gòu)seen_url;

        ② 將域名的首頁(yè)URL放入q和seen_url;

        ③ 創(chuàng)建協(xié)程;

        ④ WHILE 隊(duì)列q非空

        ⑤ 從q中取出爬取到的url,輸出并發(fā)送請(qǐng)求;

        ⑥ IF響應(yīng)為重定向

        ⑦ THEN 添加其到q和seen_url中;

        ⑧ ELSE

        ⑨ 利用正則表達(dá)式從返回頁(yè)面中找到所有鏈接;

        ⑩ IF 域名協(xié)議符合要求且不在seen_url中

        對(duì)于該模塊中的頁(yè)面預(yù)覽功能,通過(guò)PyQt的QWebView類(lèi)實(shí)現(xiàn).使用者點(diǎn)擊URL后,通過(guò)QWebView的load方法將其加載出來(lái),并根據(jù)程序界面大小調(diào)整頁(yè)面比例.請(qǐng)求/響應(yīng)包分析則需要通過(guò)Python的requests包獲得請(qǐng)求頭和響應(yīng)對(duì)象,并按HTTP包的規(guī)范重新組合請(qǐng)求頭部和主體部分,得到規(guī)范的HTTP請(qǐng)求包和響應(yīng)包,將其顯示在對(duì)應(yīng)文本框中.

        3.2 HTTP代理

        首先瀏覽器需要設(shè)置好代理服務(wù)器地址,打開(kāi)本文框架HTTP代理功能,可以攔截瀏覽器的HTTP請(qǐng)求包,支持修改和釋放.攔截的HTTP請(qǐng)求包可以選擇發(fā)送到請(qǐng)求重放或入侵模塊,進(jìn)行后續(xù)處理.

        3.2.1 Socket編程

        Socket是網(wǎng)絡(luò)中主機(jī)間通信必不可少的部分,如果把網(wǎng)絡(luò)中的主機(jī)比喻為一部部電話機(jī),那么Socket就是電話線插口.本文只涉及用戶客戶端和Web服務(wù)器之間的通信,所以下面只簡(jiǎn)要說(shuō)明1個(gè)客戶端和1個(gè)服務(wù)器間的通信過(guò)程[17].

        假設(shè)A是服務(wù)器,B是客戶端,那么A會(huì)將Socket綁定到1個(gè)端口,然后監(jiān)聽(tīng)這個(gè)端口,等待接受客戶端的連接.每當(dāng)有1個(gè)客戶端發(fā)送請(qǐng)求就會(huì)新開(kāi)1個(gè)Socket,用于和該客戶端通信.客戶端只要知道服務(wù)器的地址就可以新建1個(gè)Socket來(lái)請(qǐng)求連接服務(wù)器.兩者連接后,使用send,recv等函數(shù)進(jìn)行通信,完畢后可以用close關(guān)閉連接.

        3.2.2 模塊實(shí)現(xiàn)

        該模塊的核心部分是HTTP請(qǐng)求的攔截和釋放,使用Python的套接字模塊Socket實(shí)現(xiàn)與瀏覽器及目標(biāo)服務(wù)器的通信,并用Select模塊實(shí)現(xiàn)IO多路復(fù)用,防止線程一直等待1個(gè)Socket降低整個(gè)程序的效率.這里使用Select而不是poll或epoll主要是考慮到可移植性,因?yàn)镾elect既可用于Windows平臺(tái)也可用于Linux平臺(tái).

        首先,給定host和port為(“127.0.0.1”,6666),并將瀏覽器HTTP代理服務(wù)器地址也設(shè)置為(“127.0.0.1”,6666).服務(wù)器端會(huì)新建1個(gè)Socket綁定在這個(gè)地址并監(jiān)聽(tīng),等待接收請(qǐng)求.當(dāng)用戶訪問(wèn)網(wǎng)頁(yè)時(shí),瀏覽器會(huì)將請(qǐng)求發(fā)送到本程序,服務(wù)器端接收請(qǐng)求后,新建1個(gè)Socket并新開(kāi)啟1個(gè)線程Proxy用于和瀏覽器傳輸數(shù)據(jù),從而避免當(dāng)1個(gè)線程有多個(gè)Socket在通信時(shí),程序不知道將接收到的請(qǐng)求傳給哪一個(gè)Socket.新開(kāi)啟的線程Proxy會(huì)接收瀏覽器發(fā)來(lái)的請(qǐng)求并解碼,然后提取出請(qǐng)求目標(biāo)的主機(jī)號(hào)、端口、請(qǐng)求主體內(nèi)容等信息,和通信用的Socket一起用字典存儲(chǔ)起來(lái),并放到隊(duì)列中,交給主進(jìn)程處理.主進(jìn)程會(huì)從隊(duì)列中取出該請(qǐng)求,并顯示到文本框中.

        3.3 請(qǐng)求重放

        請(qǐng)求重放模塊可以接收由HTTP代理模塊發(fā)過(guò)來(lái)的請(qǐng)求,或由使用者自行輸入請(qǐng)求包,由此發(fā)送請(qǐng)求后可以得到響應(yīng)包.

        該模塊中主要用到Python的http.client模塊,首先和目標(biāo)服務(wù)器建立連接,連接對(duì)象為conn,然后根據(jù)HTTP請(qǐng)求包的特點(diǎn)提取出請(qǐng)求的路徑、請(qǐng)求頭部、POST參數(shù)等,然后用http.client的request方法向目標(biāo)服務(wù)器發(fā)送請(qǐng)求,并得到響應(yīng)對(duì)象.響應(yīng)對(duì)象中有狀態(tài)碼、響應(yīng)HTTP協(xié)議版本、響應(yīng)主體等信息,需要將其重新組合成標(biāo)準(zhǔn)形式的響應(yīng)字符串,然后顯示在文本框內(nèi).程序執(zhí)行流程如圖4所示:

        圖4 請(qǐng)求重放模塊程序執(zhí)行流程

        3.4 入 侵

        可以用一系列測(cè)試字符串替換請(qǐng)求包中的某位置字符串并發(fā)送請(qǐng)求,用于密碼爆破或Fuzzing測(cè)試.因?yàn)檩d荷位置標(biāo)記、載荷設(shè)置等都是比較基礎(chǔ)的字符串操作,故該模塊的核心在開(kāi)始攻擊后的部分,如算法2所示:

        算法2.站點(diǎn)入侵算法.

        輸入:目標(biāo)服務(wù)器地址target、目標(biāo)服務(wù)器端口號(hào)port、請(qǐng)求包、相應(yīng)隊(duì)列deque.

        ① 標(biāo)記載荷位置、輸入或?qū)胼d荷集;

        ② IF 攻擊類(lèi)型為“Sniper”

        ③ THEN 使用載荷集中的載荷逐一替換請(qǐng)求包中被標(biāo)記的位置(即每次只替換1個(gè)位置);

        ④ ELSE IF 攻擊類(lèi)型為“Battering ram”

        ⑤ THEN使用載荷集中的載荷同時(shí)替換被標(biāo)記的所有位置(即每次替換多個(gè)位置);

        ⑥ END IF

        ⑦ 使用SocketHTTP函數(shù)發(fā)送修改后的請(qǐng)求;

        ⑧ 將得到的響應(yīng)以及關(guān)鍵信息放入deque中;

        ⑨ 主進(jìn)程從deque中取出響應(yīng)信息,以表格形式顯示;

        ⑩ IF 結(jié)果存在異常

        由于每個(gè)發(fā)送的請(qǐng)求相互獨(dú)立,沒(méi)有需要共享的變量,也不需要加鎖,所以可以將載荷集劃分成幾個(gè)部分,交給不同的線程處理,效率比較高.

        3.5 漏洞掃描

        前4個(gè)模塊屬于輔助人工測(cè)試的模塊,漏洞掃描模塊主要是自動(dòng)化的漏洞掃描,分為單頁(yè)面的漏洞掃描和整站漏洞掃描,其中單頁(yè)面掃描可以選擇調(diào)用其他安全工具如Sqlmap.主要檢測(cè)的漏洞有SQL注入和XSS跨站腳本攻擊.

        3.5.1 外部工具調(diào)用

        在該模塊中,我們使用PyQt的QProcess新建1個(gè)子進(jìn)程,這個(gè)子進(jìn)程會(huì)執(zhí)行預(yù)設(shè)的或用戶自行輸入的命令,打開(kāi)所選擇的工具,將該子進(jìn)程輸出的信號(hào)綁定到1個(gè)槽中,一旦輸出緩沖區(qū)中有字符串就會(huì)將緩沖區(qū)內(nèi)的內(nèi)容添加到文本框中.另外,由于有時(shí)需要與工具進(jìn)行交互,所以在界面中保留1個(gè)輸入框,用QProcess的write方法將命令通過(guò)管道寫(xiě)入子進(jìn)程,當(dāng)子進(jìn)程結(jié)束時(shí)輸入無(wú)效.

        以Sqlmap的調(diào)用為例,預(yù)設(shè)的命令是“python2 sqlmap.py -u [url]”,這里[url]要用輸入框中的URL替換,Sqlmap會(huì)檢測(cè)該URL對(duì)應(yīng)頁(yè)面的所有SQL漏洞.

        3.5.2 單頁(yè)面漏洞掃描

        和外部工具的調(diào)用類(lèi)似,單頁(yè)面漏洞掃描同樣需要開(kāi)啟1個(gè)子進(jìn)程調(diào)用對(duì)應(yīng)文件.單頁(yè)面掃描時(shí)間復(fù)雜度不大,所以無(wú)需使用并行的方法加速.子進(jìn)程每檢測(cè)到1個(gè)漏洞就將輸出通過(guò)管道傳遞給主進(jìn)程,主進(jìn)程再將其顯示在文本框內(nèi).掃描的主要原理是將攻擊載荷加到請(qǐng)求的GET參數(shù)或POST參數(shù)中,通過(guò)分析響應(yīng)結(jié)果判斷頁(yè)面是否存在漏洞.

        針對(duì)不同類(lèi)型的漏洞有不同的檢測(cè)方法,該模塊主要檢測(cè)SQL注入漏洞和XSS跨站腳本攻擊漏洞.SQL注入漏洞主要分為bool型盲注、報(bào)錯(cuò)注入等[18],它們的檢測(cè)方式也各不相同.對(duì)于bool型盲注,主要是通過(guò)在GET和POST參數(shù)部分加上或者替換類(lèi)似于and 1=1和and 1=2這樣的載荷,如果2次請(qǐng)求返回的頁(yè)面長(zhǎng)度不同,可以認(rèn)為2個(gè)載荷成功插入SQL查詢并且執(zhí)行,因此頁(yè)面存在bool型盲注漏洞.對(duì)于報(bào)錯(cuò)注入,通過(guò)在GET和POST參數(shù)部分加上可使Web后臺(tái)報(bào)錯(cuò)的載荷,例如單引號(hào).返回的頁(yè)面中如果有相關(guān)錯(cuò)誤信息則認(rèn)為存在報(bào)錯(cuò)注入.至于延時(shí)盲注,由于對(duì)程序效率影響比較大,這里不進(jìn)行檢測(cè).對(duì)于XSS漏洞的檢測(cè)與之類(lèi)似,在GET和POST參數(shù)中加上XSS攻擊載荷,然后發(fā)送請(qǐng)求,如果返回的頁(yè)面載荷被成功植入,則說(shuō)明頁(yè)面存在XSS漏洞.

        所有掃描需要的載荷以及對(duì)應(yīng)的測(cè)試方式都存放在1個(gè)XML文件里,框架已經(jīng)有一些基本的載荷,使用者也可以自行添加,攻擊載荷形式如下:

        〈bool〉

        〈p1〉 OR 1=1〈/p1〉

        〈p2〉 OR 1=2〈/p2〉

        〈type〉0〈/type〉

        〈/bool〉

        bool表示該攻擊載荷用于檢測(cè)bool型盲注,p1和p2內(nèi)是攻擊載荷,需要分別添加到請(qǐng)求參數(shù)中,并判斷響應(yīng)長(zhǎng)度是否一樣.type標(biāo)簽表明載荷的使用規(guī)則,type為0時(shí)表明該載荷需要追加到參數(shù)后面,type為1時(shí)則表明需要用載荷替換參數(shù)內(nèi)容.

        〈error〉

        〈p〉′〈/p〉

        〈grep〉語(yǔ)法錯(cuò)誤〈/grep〉

        〈type〉0〈/type〉

        〈/error〉

        error表示檢測(cè)報(bào)錯(cuò)注入,與bool型盲注不同的是p內(nèi)是攻擊載荷,grep內(nèi)是需要從響應(yīng)中尋找的錯(cuò)誤信息.

        〈xss〉

        〈p〉lt;script>alert(1)</script>

        〈/p〉

        〈grep〉lt;script>alert(1)<

        /script>〈/grep〉

        〈type〉1〈/type〉

        〈/xss〉

        XSS表示檢測(cè)XSS漏洞,和報(bào)錯(cuò)注入檢測(cè)方式比較類(lèi)似.

        3.5.3 整站漏洞掃描

        實(shí)現(xiàn)整站掃描分為2部分:整站頁(yè)面的爬取和單頁(yè)面漏洞掃描.整站頁(yè)面的爬取用的是站點(diǎn)地圖模塊所使用的爬蟲(chóng)算法,單頁(yè)面漏洞掃描已經(jīng)在前文中進(jìn)行詳細(xì)敘述,只需將二者結(jié)合,即每爬取1個(gè)URL就使用漏洞掃描引擎進(jìn)行檢測(cè),實(shí)時(shí)返回結(jié)果.

        4 實(shí)驗(yàn)及測(cè)試

        Web應(yīng)用漏洞的自動(dòng)化掃描實(shí)際上就是模擬手工檢測(cè)的方式,向目標(biāo)網(wǎng)站發(fā)送請(qǐng)求并分析響應(yīng)情況.由于電網(wǎng)系統(tǒng)是國(guó)家的要害部門(mén),進(jìn)行真實(shí)環(huán)境的測(cè)試需要層層審批,因此通過(guò)自身可操縱的網(wǎng)站來(lái)模擬微電網(wǎng)中的能源管理系統(tǒng),進(jìn)行漏洞檢測(cè).

        4.1 實(shí)驗(yàn)環(huán)境

        操作系統(tǒng):Windows 7 Ultimate;

        CPU:Intel Core i5-5200u;

        內(nèi)存:4.00 GB;

        開(kāi)發(fā)工具:Python3.5+PyQt5+SQLite;

        開(kāi)發(fā)環(huán)境:Sublime Text3.

        4.2 實(shí)驗(yàn)過(guò)程及結(jié)果

        4.2.1 站點(diǎn)地圖

        用戶輸入域名,并選擇協(xié)程數(shù),點(diǎn)擊開(kāi)始,左邊會(huì)即時(shí)顯示掃描到的該域名下的頁(yè)面,以目錄樹(shù)的形式顯示,如果點(diǎn)擊停止則會(huì)中止掃描.如果點(diǎn)擊1個(gè)掃描到的URL,在右側(cè)欄中,上邊的內(nèi)嵌瀏覽器會(huì)展示該頁(yè)面,下邊的標(biāo)簽欄會(huì)顯示爬取該URL的請(qǐng)求包和響應(yīng)包,如圖5所示:

        圖5 站點(diǎn)地圖

        4.2.2 HTTP代理

        當(dāng)打開(kāi)代理功能時(shí),設(shè)置瀏覽器的HTTP代理服務(wù)器為localhost:6666(該模塊的代理服務(wù)器會(huì)監(jiān)聽(tīng)本地的6666端口),那么訪問(wèn)HTTP網(wǎng)頁(yè)時(shí),請(qǐng)求會(huì)被攔截,并在如圖6所示的框中顯示出來(lái),此時(shí)所訪問(wèn)的頁(yè)面不會(huì)被加載.

        圖6 HTTP代理界面

        當(dāng)點(diǎn)擊釋放時(shí)請(qǐng)求會(huì)被發(fā)送,并將響應(yīng)返回給瀏覽器,百度的首頁(yè)加載成功,如圖7所示.

        圖7 點(diǎn)擊釋放后的HTTP代理界面

        對(duì)于每個(gè)攔截到的HTTP請(qǐng)求,還可以選擇發(fā)送到請(qǐng)求重放模塊或入侵模塊,如圖8所示.

        圖8 發(fā)送攔截到的HTTP請(qǐng)求

        4.2.3 請(qǐng)求重放

        請(qǐng)求重放模塊可以接收由HTTP代理模塊傳來(lái)的請(qǐng)求,或者是由使用者自行輸入請(qǐng)求包,由此發(fā)送請(qǐng)求后可以得到響應(yīng)包,如圖9所示,右側(cè)顯示了相應(yīng)的頭部和主體HTML代碼.

        圖9 請(qǐng)求重放界面

        如果請(qǐng)求包中不存在Host頭部,則需要輸入目標(biāo)主機(jī)Host.

        圖10 輸入目標(biāo)服務(wù)器Host

        4.2.4 入侵

        圖11 入侵模塊流程

        該模塊首先需要給定1個(gè)請(qǐng)求包以及請(qǐng)求的服務(wù)器地址,這個(gè)可以由HTTP代理模塊傳入,或者由使用者自己輸入,如圖10所示.然后需要在請(qǐng)求包中標(biāo)記一些字符串,并選擇攻擊載荷,即1組字符串,該模塊會(huì)用這組字符串分別替換請(qǐng)求包中被標(biāo)記的字符串,并發(fā)送新的請(qǐng)求,將每個(gè)請(qǐng)求的響應(yīng)結(jié)果信息發(fā)送給主線程.該模塊可以用于密碼爆破、模糊測(cè)試等.完整流程如圖11所示.

        4.2.5 掃描

        在該模塊中,用戶在單頁(yè)面掃描選項(xiàng)卡中可以選擇調(diào)用其他安全工具,既可以通過(guò)自定義命令,也可以使用程序預(yù)設(shè)的命令.此處以Sqlmap為例,預(yù)設(shè)的命令是“python2 sqlmap.py -u [url]”,這里[url]要用輸入框中的URL替換,Sqlmap會(huì)檢測(cè)該URL對(duì)應(yīng)頁(yè)面的所有SQL漏洞,如圖12所示,檢測(cè)出了該測(cè)試網(wǎng)站中存在的SQL注入漏洞.

        如圖13所示,如果不選擇工具(即選擇No tool選項(xiàng)),則會(huì)使用該框架自身的掃描引擎,可以看出,同樣檢測(cè)出相關(guān)漏洞,每檢測(cè)出1個(gè)漏洞會(huì)標(biāo)明它的類(lèi)型、URL以及使用的攻擊載荷.

        另外,該模塊還支持整站掃描功能,自動(dòng)掃描某域名下的所有頁(yè)面,并檢測(cè)漏洞.由于整站掃描時(shí)頁(yè)面比較多,比較耗時(shí),所以使用協(xié)程來(lái)提高效率,將漏洞的檢測(cè)和頁(yè)面的爬取放到1個(gè)消息循環(huán)中,并使用多任務(wù)并行處理.用戶可以選擇協(xié)程的數(shù)量,協(xié)程數(shù)越多速度越快,但也越不穩(wěn)定,框架中默認(rèn)為50個(gè)協(xié)程.

        圖12 使用Sqlmap進(jìn)行單頁(yè)面掃描

        圖13 使用自身掃描引擎進(jìn)行單頁(yè)面掃描

        4.3 系統(tǒng)對(duì)比

        為了更客觀地評(píng)測(cè)本文所提出的漏洞檢測(cè)框架,我們與文獻(xiàn)[19]進(jìn)行了系統(tǒng)性對(duì)比,如表1所示:

        表1 系統(tǒng)對(duì)比分析

        可以看出,本文提出的框架功能更為全面,漏洞掃描引擎更強(qiáng)大,且可擴(kuò)展性更強(qiáng).對(duì)于掃描粒度而言,文獻(xiàn)[19]更適合于單臺(tái)主機(jī)的本地掃描,而本文提出的框架更適合Web服務(wù)的安全性檢測(cè),服務(wù)范圍更廣.但該框架缺少檢測(cè)結(jié)果的可視化界面,對(duì)于非技術(shù)人員有一定的操作難度.

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

        本文針對(duì)智能微電網(wǎng)能源管理系統(tǒng)中潛在的Web應(yīng)用漏洞設(shè)計(jì)實(shí)現(xiàn)了一個(gè)較為全面的漏洞檢測(cè)框架,用于輔助安全人員進(jìn)行漏洞檢測(cè)或自動(dòng)化的漏洞掃描.相比其他漏洞掃描工具,本文實(shí)現(xiàn)的框架功能較為豐富,包含5個(gè)功能模塊:站點(diǎn)地圖、HTTP代理、請(qǐng)求重放、入侵、掃描,可獨(dú)立使用,也可相互調(diào)用輸出結(jié)果.將每個(gè)功能封裝為單獨(dú)的文件和API接口,便于后續(xù)功能的擴(kuò)展.同時(shí)使用協(xié)程技術(shù)來(lái)提高檢測(cè)效率,占用資源較少.最后,通過(guò)實(shí)驗(yàn)對(duì)實(shí)際網(wǎng)站進(jìn)行測(cè)試,證明本文所提出的框架的有效性.

        本文框架的穩(wěn)定性和易用性較好,但在功能上仍有許多待改進(jìn)和完善的地方,如增加更多種類(lèi)漏洞的檢測(cè),增加更多用戶可以控制的選項(xiàng).此外,增加一個(gè)生成漏洞結(jié)果報(bào)表的功能,更有助于微電網(wǎng)相關(guān)人員直觀地了解系統(tǒng)中的安全狀況,提升系統(tǒng)的可用性.

        猜你喜歡
        漏洞頁(yè)面框架
        大狗熊在睡覺(jué)
        漏洞
        刷新生活的頁(yè)面
        框架
        廣義框架的不相交性
        WTO框架下
        法大研究生(2017年1期)2017-04-10 08:55:06
        三明:“兩票制”堵住加價(jià)漏洞
        漏洞在哪兒
        高鐵急救應(yīng)補(bǔ)齊三漏洞
        一種基于OpenStack的云應(yīng)用開(kāi)發(fā)框架
        在线视频 亚洲精品| 国产精品日本一区二区在线播放| 国产精品网站在线观看免费传媒 | 久久精品丝袜高跟鞋| 无码人妻精品一区二区三区下载| 熟妇无码AV| 日韩男女av中文字幕| 男吃奶玩乳尖高潮视频| 乌克兰粉嫩xxx极品hd| 国产免费播放一区二区| 99热婷婷一区二区三区| 中文字幕日韩精品有码视频| 亚洲av无码av日韩av网站| 久久尤物av天堂日日综合| 国产一区二区三区小向美奈子| 亚洲一区二区三区尿失禁| 亚洲国产精品sss在线观看av| 一本加勒比hezyo无码视频| 在线观看的a站免费完整版| 无码一区二区三区免费视频| 国产精品亚洲综合一区在线观看| 国产香蕉尹人在线视频你懂的| 国产一区二区黄色的网站| 亚洲精品国产suv一区88| 四虎永久在线精品免费观看地址| 久久精品国产亚洲av调教| 中文字幕在线亚洲三区 | 四虎影在永久在线观看| 成人白浆超碰人人人人 | 极品新娘高清在线观看| 成人欧美一区二区三区黑人| 97久久精品午夜一区二区| 91精品综合久久久久m3u8 | 精品人妻系列无码人妻漫画| 永久免费av无码网站yy | 亚洲av成人片色在线观看| 国产成人麻豆精品午夜福利在线| 中文无码免费在线| 久久人妻一区二区三区免费| 黑人巨大跨种族video| 午夜影视啪啪免费体验区入口|