一、概述
Web框架指紋識別是信息收集過程中的一個重要任務。獲悉目標框架的類型必然為測試人員帶來極大的優勢,如果該框架在之前就被測試過。測試人員不僅可以獲得未修補版本中存在的漏洞,還可以了解此框架中特有的錯誤配置以及已知的文件結構。從而使指紋識別過程顯得格外重要。
二、測試方法
黑盒測試
可以查找幾個最常見的位置來確定當前框架:
1、HTTP 頭 2、cookies 3、HTML源代碼 4、特殊文件和文件夾
1、HTTP 頭
最基本識別web框架的方式是查看HTTP響應報頭中的X-Powered-By字段。許多工具可以用來識別目標的指紋,最簡單一個是netcat。
如:
X-Powered-By: Mono //web應用框架是Mono
2、cookies
更可靠的方法是查看HTTP請求包(注意是請求包)特有的Cookies,如:
Cookie: CAKEPHP=sidfiwhefjdcsfowjoef; //web應用框架是CakePHP
常見cookies中可識別框架:
框架 | cookie名 |
Zope | zope3 |
CakePHP | cakephp |
Kohana | kohanasession |
Laravel | laravel_session |
3、HTML 源代碼
查看HTML注釋、某框架特有的路徑、特有的腳本變量等信息。
這些信息大多放在<head> </head>標記之間,<Meta>標記內部、或者頁面尾部。
HTML源碼中可識別框架:
常見的特征 |
%framework_name% |
powered by |
built upon |
running |
特有的特征
框架 | 關鍵字 |
Adoble ColdFusion | <!-- START headerTags.cfm |
Microsoft ASP.NET | __VIEWSTATE |
ZK | <!-- ZK |
Business Catalyst | <!-- BC_OBNW --> |
Indexhibit | ndxz-studio |
4、特有文件和目錄
每個不同的框架都有特有的文件和目錄。在滲透測試過程中,建議測試人員自己搭建相應框架以便更好的理解框架的基礎結構,並確定服務器上的遺留文件。
三、加固措施
建議使用多種工具測試並查看日志,從而知道哪些工具可以使得攻擊者識別出Web框架。
HTTP頭: 檢查配置、禁用或混淆所有可能泄露所用技術的HTTP頭。
Cookies: 建議通過修改相應的配置文件來改變Cookie名稱。
HTML源代碼: 刪除暴漏框架信息的可視標記、移除不需要的注釋、移除Meta和作者標簽、css和js腳本文件不存儲在與框架有關的文件夾內、頁面上禁止使用默認腳本。
特有的文件和目錄: 刪除服務器上所有不必要和不使用的文件、使用404錯誤響應來限制從外部訪問其他文件。