web 指纹识别杂论

##前言

在 web 渗透过程中,对目标网站的指纹识别非常关键,通过工具或者手工识别 CMS系统是自建的还是二次开发,还是直接使用公开的CMS 程序至关重要。通过获取的这些信息来决定后续渗透的思路和策略。CMS 指纹识别是渗透测试环节的一个非常重要的阶段,是信息收集的中的一个关键环节。

1. 指纹识别技术简介及思路

1.1 指纹识别技术

组件是网络空间最小的单元,Web应用程序、数据库、中间件等都属于组件。指纹是组件上能标识对象类型的一段特征信息,用来在渗透测试信息收集环节中快熟识别目标服务。互联网随时代的发展逐渐成熟,大批应用组件存在足以说明当前服务名称和版本的特征,识别这些特征获取当前服务信息,也表明该系统采用那个公司的产品,例如论坛常用 Discuz!来搭建,通过其 robots.txt 等可以识别网站程序是采用 Discuz!

1.2 指纹识别思路

指纹识别可以铜鼓哦一些开源程序和小工具来进行扫描,也有可以结合文件头和反馈信息进行手工判断,指纹识别主要思路:

(1)使用工具自动判断

(2)手工对网站的关键字、版权信息、后台登录、程序版本、robots.txt 等常见固有文件进行识别、查找和比对,相同文件具有相同的 MD5 值和相同的属性。

2. 指纹识别方式

基于对指纹识别方式的各种套路和分析,可以分为以下几个类别:

2.1 基于特殊文件的 MD5 值匹配

基于web网站独有的favicon.ico、css、logo.ico、js等文件的md5 比对网站类型,通过收集CMS公开代码中的独有文件,这些文件一般轻易不会更改,通过爬虫对这些文件进行抓取并比对md5值,如果一样,则认为该系统匹配。这种识别速度最快,但可能不准确,因为这些独有文件可能在部署到真实系统中会进行更改,那么就会造成很大的误差。

(1)robots.txt文件识别

相关厂商下的cms(内容管理系统)程序文件包含说明当前cms名称及版本的特征码,其中一些独有的文件夹以及名称都是识别cms的好方法,如Discuz官网下robots.txt文件。dedecms官网http://www.dedecms.com/robots.txt文件内容:

Disallow: /plus/feedback_js.php

Disallow: /plus/mytag_js.php

Disallow: /plus/rss.php

Disallow: /plus/search.php

Disallow: /plus/recommend.php

Disallow: /plus/stow.php

Disallow: /plus/count.php

看到这个基本可以判断为dedecms。

2)计算机md5值

计算网站所使中间件或cms目录下静态文件的md5值,md5码可以唯一地代表原信息的特征。静态文件包括html、js、css、image等,建立在站点静态文件存在的情况下访问,如 Dedecms 官网下网站根目录http://www.dedecms.com/img/buttom_logo.gif图片文件,目前有一些公开程序,通过配置cms.txt文件中的相应值进行识别,如图1所示。

2.2 请求相应主体内容或头信息的关键字匹配

请求响应主体内容或头信息的关键字匹配方法可以寻找网站的css 、js代码的命名规则,也可以找关键字,以及head cookie等等,但是弊端是收集这些规则会耗费很久的时间。

2.3 基于 URL 关键字识别

基于爬虫爬出来的网站目录比对web信息,准确性比较高,但是如果改了目录结构就会造成问题,而且一部分网站有反爬虫机制,会造成一些困扰

2.4 基于 TCP/IP 请求协议识别服务指纹

一些应用程序、组建和数据库服务会有一些特殊的指纹,一般情况下不会进行更改。网络上的通信交互均通过TCP/TP协议簇进行,操作系统也必须实现该协议。操作系统根据不同数据包做出不同反应。如Nmap检测操作系统工具通过向目标主机发送协议数据包并分析其响应信息进行操作系统指纹识别工作,其扫描命令为“nmap –O 192.168.1.1”。

2.5 在owasp中识别Web应用框架测试方法

(1)http头。查看http响应报头的X-Powered-By字段来识别,可以通过netcat来识别,使用netcat 127.0.0.1 80对127.0.0.1主机的80端口web服务器框架进行识别。

(2)Cookies。一些框架有固定的Cookies名称,这些名称一般情况都不会更改,例如zope3、cakephp、kohanasesson、laravel_session。

(3)Html源代码。html源代码中包含注释、js、css等信息,通过访问这些信息来判断和确认cms系统框架。在源代码中常常会包含powered by、bulit upon、running等特征。

(4)特殊文件和文件夹