李晨陽 陳吟 樊云 王鏡瑯 雷敏



摘 要:敏感目錄是指目標服務器上存在含有敏感名稱的目錄,這些目錄中可能包含了大量的敏感文件和信息。利用該漏洞,攻擊者可全面了解目標服務器的網站架構,甚至獲取敏感文件中的敏感信息,從而得到目標服務器的控制權,實施進一步攻擊。論文介紹了敏感目錄漏洞及其危害,對HTTP協議及URL進行分析,設計并實現了以字典為檢測標準的自動化檢測腳本,判斷指定主機是否存在該漏洞,并在實際測試中被成功應用。
關鍵詞:網站掃描;敏感目錄;自動化檢測
中圖分類號:TP312 文獻標識碼:A
Design of automated detection tool for sensitive path of websites
Abstract: Sensitive paths are paths on the target server that contain sensitive names, which may contain a large number of sensitive files and information. Using this vulnerability, attackers can fully understand the target server's site architecture, and even access sensitive information in sensitive files to gain control of the target server for further attacks. This paper introduces the sensitive paths vulnerability and its effects, analyzes the HTTP protocol and URL, designs and implements the automated detection script based on the dictionary which is successfully applied in the actual test to judge whether the server exists the vulnerability.
Key words: web scan; sensitive path; automated detection
1 引言
Web應用的易于開發性、開放性使得Web應用快速發展,與此同時安全問題也日益突出,Web應用已成為攻擊者攻擊的主要對象。2015年史考特證券遭遇攻擊,同年Web托管公司000Webhost也遭遇黑客攻擊,數百萬名用戶敏感信息被泄露。此外,緩沖區溢出、跨站點腳本、目錄遍歷等各種安全問題也不斷涌現。
敏感目錄漏洞是一種常見的Web漏洞,它是指目標服務器上存在含有敏感名稱的目錄,例如/upload、/database、/bak等。攻擊者可通過目標服務器的目錄信息全面了解網站架構,從而對網站進行入侵攻擊,獲取服務器后端數據庫信息,使得用戶敏感信息泄露。目前,中國國家信息安全漏洞共享平臺(CNVD)對該漏洞的評級為“低危”。
鑒于敏感目錄漏洞的危害和影響,方便網站運維人員和管理人員及時發現并解決問題,本文提出了編寫Python腳本來實現對網站敏感目錄漏洞的自動掃描與檢測。本文通過對HTTP協議以及URL的分析,設計了基于字典的通過探測服務器響應信息來檢測Web網站敏感目錄的腳本。最后,以內網中一臺存在敏感目錄漏洞的主機(試驗機)為例,測試了腳本的運行結果。
2 漏洞簡介
漏洞指的是在系統設計、實現、管理或者操作時產生的可能引發系統安全問題的缺陷或弱點,使得系統或其應用數據的保密性、完整性、可用性、訪問控制以及監測機制等方面面臨威脅。Web漏洞可分為服務器端漏洞和客戶端漏洞兩大類。
敏感目錄是指目標服務器中含有敏感名稱或敏感文件的目錄,如/admin、/robots.txt、/index.php、/upload等。利用該漏洞,攻擊者可全面了解目標服務器的網站架構。此外,敏感名稱的目錄中可能包含了大量的敏感文件和腳本,如服務器的配置信息、管理腳本、數據庫信息以及后臺管理界面等,攻擊者可通過暴力破解等方式直接訪問管理界面,獲取目標服務器的控制權,實施進一步的攻擊,并對目標服務器造成嚴重的危害。
敏感目錄雖是低危漏洞,但若被攻擊者利用,同樣會對目標服務器造成巨大的危害。若網站運維人員或管理人員發現檢測出的敏感目錄中包含了敏感文件或腳本時,可以對該目錄進行非常規的重命名;也可以設置權限,禁止用戶訪問;還可將敏感文件或腳本與網站目錄分離,放在不易猜測的路徑中;若目錄中內容是非必要的,則可以考慮刪除該目錄。
3 檢測工具設計
3.1 HTTP協議分析
本文設計的檢測工具通過向目標服務器發送請求,并根據獲取的服務器響應來檢測Web網站的敏感目錄,這一功能基于HTTP協議。
超文本傳輸協議(Hypertext Transfer Protocol,HTTP)是WWW服務器與瀏覽器間傳輸超文本的網絡協議,它是基于請求與響應模式的、無狀態的協議,絕大多數的Web開發都是構建在HTTP協議上的Web應用。HTTP協議示意圖如圖1所示。
HTTP報文包括請求報文和響應報文。請求報文由請求行、請求頭、空行以及正文四部分構成。請求行一般由請求方式、URI以及協議版本組成,在HTTP/1.1版本提供的八種請求方式中,POST方法和GET方法最為常見,其中GET方法常用于對特定資源的訪問請求,在本文設計的檢測工具中使用了GET方法。請求報文結構如圖2所示。
HTTP響應報文也由四部分構成,包括狀態行、響應頭、空行以及響應正文。狀態行一般由協議版本、狀態碼以及消息組成,例如:
HTTP/1.1 200 OK
其中HTTP/1.1表示該報文使用的HTTP協議版本,200為響應報文的狀態碼,表示找到了請求的特定資源,響應正文OK表示一切正常,是指服務器返回的資源信息。根據請求信息的不同,服務器返回的響應狀態碼也不同。常見的響應報文狀態碼及其所對應的含義如圖3所示。
本文設計的敏感目錄檢測工具則是根據探測服務器響應信息,即獲取響應報文的狀態碼來設計實現的。
3.2 URL分析
Web站點敏感目錄的爬取與URL密切相關,統一資源定位符(Uniform Resource Locator,URL)是對互聯網上可獲取資源的位置及訪問方法的簡潔表示,互聯網上每個資源都有唯一的URL。
基本的URL包括協議/模式(Scheme)、服務器名稱(Host)、端口(Port)和路徑(Path)四部分,此外還有用戶名(Name)和密碼(Pwd)、參數(Parameters)、查詢(Query)以及片段(fragment)等。URL組成及含義如圖4所示。
URL的通用格式為:
scheme://name:pwd@host[:port]/path/[;params][?query][#fragment]
3.3 自動化腳本設計
基于HTTP協議及URL格式分析,本文按照圖5思路設計編寫自動化檢測腳本。
首先,通過用戶輸入獲取目標服務器地址及字典參數:
獲取成功后,需要使用Python中urlparse函數對目標服務器
URL進行解析,獲取目標服務器名稱(host)信息,并將該信息作為數據庫名稱永久存儲。urlparse函數可將URL解析為6個組件,但其在解析時,URL開頭部分必須包含“//”,否則無法正確解析出服務器名稱,所以需要對獲取的服務器地址進行驗證或修改:
本文設計的自動檢測腳本需要獲取響應報文的狀態碼等信息,這里選用Python第三方庫requests來完成,requests.get()方法表示以GET方式發送請求,其返回結果為一個存儲了服務器響應信息的response對象,響應信息包括狀態碼,響應實體等。該部分關鍵代碼為:
其中target為要請求的URL。將allow_redirects參數設置為False,表示不允許頁面跳轉,若出現頁面跳轉則返回的狀態碼為302,而不是200。
請求的URL則是由字典及用戶輸入的服務器地址共同構造的,所以需要將字典中敏感目錄以行為單位提取出來,保存在以list命名的數組中,接著再分別與服務器地址構造成URL。關鍵代碼為:
此外還需要考慮到敏感目錄信息的永久存儲,Python 2.5 x以上版本已默認自帶sqlite3模塊。首先需要創建用于存儲服務器掃描結果的數據庫,確定表名、列名以及列的數據類型。其中數據庫名由URL解析獲得的host信息確定,列名則包括返回狀態碼(status_code,TEXT)和服務器存在的敏感目錄(path,TEXT)。
在使用requests.get()方法獲取到服務器的響應信息后,需要判斷請求的URL是否已存在于數據庫中,若不存在且響應碼不為404,通過insert將該條信息插入對應數據庫的表中即可。關鍵代碼如下:
在腳本運行結束后,若目標服務器名稱對應的數據庫不為空,則表示該服務器存在敏感目錄,返回并顯示掃描結果:
3.4 實際測試
實際測試環境為含有敏感目錄的docker鏡像,首先使用如如6所示命令加載鏡像:
$ docker load < sens_path.tar
接著使用如圖7所示命令啟動被加載成功的docker鏡像:
$ docker run -d -p 8004:80 joomla:v2
本次測試中,使用自定義字典payload.txt對目標網站進行掃描,輸入命令“python sens_path.py 10.109.35.113:8004(要檢測的地址)”,運行自動化檢測腳本,可檢測出目標網站存在的敏感目錄,如圖8所示。
4 結束語
Web應用不斷發展的同時,其安全問題也受到越來越多的重視關注。本文通過對HTTP協議以及URL結構的分析,提出了編寫Python腳本以實現對Web網站敏感目錄的自動檢測。通過本文設計的自動化檢測腳本,可對目標服務器進行快速掃描,便于管理、運維人員及時發現安全問題。
基金項目:
國家科技支撐計劃(項目編號:2015BAH08F02)。
參考文獻
[1] 王琪.面向Web應用的漏洞掃描技術研究[D].南京郵電大學, 2016.
[2] 王濤.HTTP協議技術淺析[J].中國新技術新產品, 2013(22):14-14.
[3] 胡志偉.Web應用安全漏洞掃描系統的設計與實現[D].北京郵電大學,2013.
[4] 胡冬梅.基于B/S架構Web應用安全防范[J].信息安全與通信保密,2013(1):31-31.
[5] 楊新英.基于網絡爬蟲的Web應用程序漏洞掃描器的研究與實現[D].電子科技大學, 2010.
[6] 丁敏.基于python語言實現自動化測試的研究[J].數字技術與應用,2010(3):88-88.
[7] 錢劼,雷敏,鄒仕洪.Java反序列化漏洞自動檢測腳本設計[J].網絡安全技術與應用,2017,(08):66-68.