Web渗透——识别web应用框架


一、概述

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注释、某框架特有的路径、特有的脚本变量等信息。 这些信息大多放在 标记之间,标记内部、或者页面尾部。 HTML源码中可识别框架:
常见的特征
%framework_name%
powered by
built upon
running

特有的特征

框架 关键字
Adoble ColdFusion
Indexhibit ndxz-studio

4、特有文件和目录

每个不同的框架都有特有的文件和目录。在渗透测试过程中,建议测试人员自己搭建相应框架以便更好的理解框架的基础结构,并确定服务器上的遗留文件。

三、加固措施

建议使用多种工具测试并查看日志,从而知道哪些工具可以使得攻击者识别出Web框架。 HTTP头: 检查配置、禁用或混淆所有可能泄露所用技术的HTTP头。 Cookies: 建议通过修改相应的配置文件来改变Cookie名称。 HTML源代码: 删除暴漏框架信息的可视标记、移除不需要的注释、移除Meta和作者标签、css和js脚本文件不存储在与框架有关的文件夹内、页面上禁止使用默认脚本。 特有的文件和目录: 删除服务器上所有不必要和不使用的文件、使用404错误响应来限制从外部访问其他文件。