Web指纹识别的介绍与编写

 

一、  前言

 

web指纹是web服务组件在开发时留下的对其类型及版本进行标识的特殊信息,包括web服务器指纹、web运用指纹以及前端框架指纹等。

 
在web安全测试过程中,收集web指纹信息也是一个比较重要的步骤;在安全运营过程中,通过指纹识别资产的web信息,这样能更加了解整个资产存在哪些方面的威胁,然后对症检测修补。网络上开源的web指纹识别程序很多,如Wappalyzer,whatweb, wpscan, joomscan等等。在线指纹平台有云悉、数字观星指纹平台等。一起来看如何编写以及编译指纹并提交到平台上。
 

二、  初见

 

     实践是认识事物最快的途径,这里先使用常见的指纹识别工具做简单的指纹识别示范。

 

1、 Whatweb

 

Whatweb是一个基于Ruby语言的开源网站指纹识别软件,正如它的名字一样,whatweb能够识别各种关于网站的详细信息包括:CMS类型、博客平台、中间件、web框架模块、网站服务器、脚本类型、JavaScript库、IP、cookie等。

 

在kali下sudo apt install whatweb :

 

1

 

对网站进行指纹识别:

 

2

 

2、 Wappalyzer

 

Wappalyzer是基于正则表达式来识别web应用,它的功能是识别单个url的指纹,其原理就是给指定URI发送HTTP请求,获取响应头与响应体并按指纹规则进行匹配。它也是一款浏览器插件,能识别出网站采用了那种web技术,能够检测出CMS和电子商务系统、留言板、javascript框架,主机面板,分析统计工具和其它的一些web系统。这里主要介绍基于node.js的wappalyer的安装与使用。

 

(1)node.js环境的安装,官网下载地址:

    https://nodejs.org/en/

 

(2)通过Node.js安装wappalyzer

 

3

 

记住这个路径 

C:\Users\xx\AppData\Roaming\npm\node_modules\wappalyzer,之后讲解调试指纹有用

 

(3)使用wappalyzer指纹识别

 

4

 

三、 探究

 

这里主要探讨如何编写基于wappalyzer的指纹
 

1、 指纹识别的几种方式

  • · 网页中发现关键字

  • · 特定文件的MD5(主要是静态文件、不一定要是MD5)

  • · 指定URL的关键字

  • · 指定URL的TAG模式

  •  

2、 指纹识别分类        

 

5

 

3、指纹规则

 

6

4、 指纹识别例子讲解

 

描述:struts组件,分类18(web框架),
匹配html中是否存在action,do后缀,定义可信值50,
匹配URL中是否有do和action后缀,定义可信值40,
匹配html中是否存在“StrutsProblemReport”字符串,
默认不定义可信值则为100。

备注:总体可信值如果超过100,也只会返回100。

 

 "Struts": {
 "cats": [ "18"],
 "html":"(href|action|src).*?=.*?(action|do)\\;confidence:50",
  "url": "/.*\\.do$|/.*\\.action$\\;confidence:40",
  "html": "Struts Problem Report",
  "website": "http://struts.apache.org/",
  "_fingerprint_note":"Apache Struts是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。",
  "_fingerprint_test_url":"https://www.shuziguanxing.com/"
}
 

 

5、 简单分析wappalyzer的执行过程

 

Wappalyze执行文件在C:\Users\xx\AppData\Roaming\npm\下

 

7

Wappalyzer的包目录在C:\Users\xx\AppData\Roaming\npm\node_modules\wappalyzer

 

8

这里我们重点看apps.json文件,apps.json文件是个什么东西呢?apps.json记录的是整个的指纹规则,之后我们自己编写的指纹就是要放进这里调试。

 

看下里面是一个怎么样的构造:

 

{   "$schema":
"../schema.json",   
"apps":{                      
 "1C-Bitrix":{         
  "cats":[  1  ],       
   "headers":{
      "Set-Cookie":"BITRIX_",            
      "X-Powered-CMS":"Bitrix Site Manager"  
   },         
    "html":"(?:<link[^>]+components/bitrix(?:src|href)=\"/bitrix/(?:js|templates))",    
    "icon":"1C-Bitrix.png",  
    "implies":"PHP",   
    "script":"1c-bitrix",          
    "website":"http://www.1c-bitrix.ru"   },     },   
    "categories":{     "1":
      {  "name":"CMS",     "priority":1       },                       ......    
}}

 

Json文件里面有两部分apps与categories,我们可以发现apps里面的信息跟上面指纹例子特别像,其实我们之后写的指纹就是放在这里面进行识别网站,categories是指纹的类型,这项可以不用管,只看apps。

 

6、 调试编写好的指纹

 

Wappalyzer在执行过程中会调用apps.json文件内容进行指纹匹配。所以我们编写好的指纹放进里面进行调试。

如果你希望只显示你要调试的指纹的话,你可以把apps.json文件备份为apps.json.bak,然后把apps.json中的apps部分里面的内容删除,只放入自己编写的指纹。

 

 以织梦cms为例子,执行全部的指纹:

 

9

如果仅仅是测试cms,不想看到那么多其他信息,你可以删除其他指纹,留下我们写好要调试的指纹,这样看起来就很清晰了。

 

10

123

 

四、 实战

1、   查找目标

 

       上sofa:https://fofa.so查找“禅道”

 

11

 

2、  判断观星指纹平台是否存在该指纹

 

复制sofa查找到的目标到观星指纹平台,没有该web应用指纹信息,那我们开始编写这个web应用的指纹。

 

12

 

3、  观察该web应用

 

(1)cookie:zentaosid

 

13

 

(2)html

 

14

15

 

(3)script

 

16

17

 

4、 依据以上特征编写指纹

 

下面的是依据上面分析来写的,圈出来的信任值只是方便编译时,查看命中哪条记录,等最后调试完成后再按实际情况给信任值。

 

18
 
 

19

20

 

5、 提交到指纹平台

 

https://fp.shuziguanxing.com/#/batchAdd

 

22

 

五、关于数字观星指纹收录平台

 

数字观星指纹收录平台中的指纹规则基于Wappalyzer,编写的指纹能够通过Wappalyzer调试。指纹收录平台面向大众收集指纹信息,提交并通过的指纹会依据质量获得相应的星豆奖励。具体信息请看看官方说明:

 

https://fp.shuziguanxing.com/#/fingerplatinfo

 

平台里介绍了接收指纹的范围、指纹提交流程、指纹审核流程以及指纹评价标准等。欢迎大家积极提交指纹和分享经验。

 

平台链接:https://fp.shuziguanxing.com/

 

 

 

 

 

2019年11月22日 14:18
首页    Web指纹识别的介绍与编写