一、WhatWeb 概述
WhatWeb 是 Kali 操作系统中一款基于 Ruby 语言开发的网站指纹识别工具。它功能强大,能够精准识别众多 Web 技术,涵盖内容管理系统(CMS)、博客平台、统计与分析工具包、JavaScript 库、Web 服务器以及嵌入式设备等多个方面。
二、WhatWeb 扫描模式
WhatWeb 提供了多种扫描方式,包括隐秘、快速、彻底或缓慢扫描,并且支持通过攻击级别参数来平衡扫描速度与结果可靠性。
-
被动模式(默认):此模式速度最快,仅需对网站发起一次 HTTP 请求,适用于扫描公共网站。当我们在浏览器中访问网站时,交易过程会包含许多关于网站所使用 Web 技术的线索,有时单个网页访问所包含的信息就足以识别网站,若信息不足,WhatWeb 会进一步向网站发起询问。 -
其他攻击级别:WhatWeb 通过 -aggression
(简写为-a
)参数来设置不同的攻击级别,参数后可跟数字 1 - 4,对应 4 种不同强度: -
级别 1(stealthy):每个目标发送一次 http 请求,并会跟随重定向。 -
级别 2(unused):此级别从 2011 年起处于开发状态,目前不可用。 -
级别 3(aggressive):每个目标发送少量的 http 请求,这些请求基于级别 1 的结果确定。 -
级别 4(heavy):每个目标会发送大量的 http 请求,尝试运行每一个插件以获取更全面准确的识别结果。默认强度为 1,该参数可与其他参数联用。
三、WhatWeb 用法
(一)基本命令
-
单个扫描:使用 whatweb 域名
即可对指定的单个网站进行扫描,例如whatweb 360.com
。 -
批量扫描:通过 -i
参数指定要扫描的文件,文件中每行包含一个待扫描的域名,如whatweb -i target.txt
。
-
详细输出:添加 -v
参数可详细显示扫描结果,如whatweb 360.com -v
。
(二)输出内容
WhatWeb 的输出结果会涉及多种网站相关信息,以下为部分常见类型示例:
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
四、WhatWeb 插件编写
(一)官方模板解析
WhatWeb 的强大功能得益于其丰富的插件,以下是官方插件模板及语法解释:
Plugin.define "Plugin-Template"do
author "Enter Your Name"
version "0.1"
description "Describe what the plugin identifies. Include the homepage of the software package"
examples %w| include-some.net example-websites.com here.com |
# a comment block here is a good place to make notes for yourself and others
# There are four types of matches: regexp, text, ghdb
# Matches are enclosed in {} brackets and separated by commas
matches [
{:name=>"a brief description of the match, eg. powered by in footer",
:certainty=>100, # 100 is certain, 75 is probably and 25 is maybe. if omitted, it defaults to 100.
:regexp=>/This page was generated by http://www.genericcms.com/en/products/generic-cms/">Generic CMS</a>/ },
{:name=>"title",
:certainty=>75,
:text=>"<title>Generic Homepage</title>" }
]
end
-
插件定义:第一行 Plugin.define "Plugin - Template"
定义了插件的名字,此名字可在命令行中使用,例如./whatweb -p drupal www.example.com
中-p
后接的就是插件名。 -
作者、版本与描述:第二行 author "Enter Your Name"
声明作者,第三行version "0.1"
表示版本,第四行description "Describe what the plugin identifies. Include the homepage of the software package"
对插件功能及所识别软件的主页进行描述。 -
示例网站:第五行 examples %w| include - some.net example - websites.com here.com |
列举插件所适用的网站示例。 -
匹配规则(matches):这是插件的核心部分,定义了识别网站的匹配规则。 matches
是一个列表,其中每个元素都是一个哈希表,包含以下常见键值对: -
:name:对匹配内容的简要描述,如 {:name=>"meta generator tag"}
,此名称应指向网站中唯一存在的文件。 -
:certainty:匹配的确定性程度,100 表示确定,75 表示很可能,25 表示可能,若省略则默认为 100。 -
:regexp:标准的 Ruby 正则表达式,用于匹配特定模式。 -
:text:直接匹配的字符内容。 -
:ghdb:基于 Google Hack 数据库的匹配,包含 inurl
(匹配 URL 中的字符串)、intitle
(匹配标题中的字符串)、filetype
(匹配文件名,如 PDF、JPG、RB 等)等模式。 -
:md5:请求页面的 MD5 哈希值。 -
:tagpattern:HTML 标签匹配。 -
:version:可设置正则表达式或直接字符串匹配版本信息。 -
:string:可设置正则表达式或直接字符串匹配特定字符串。 -
:filepath:可设置正则表达式或直接字符串匹配,常用于显示系统错误或配置文件等路径。 -
:account:常用于登陆页面或用户列表等场景的匹配。 -
:module:可设置正则表达式或直接字符串匹配,如网络设备使用的 Ruby 模块等。 -
:model:可设置正则表达式或直接字符串匹配。 -
:firmware:可设置正则表达式或直接字符串匹配设备的固件版本。
(二)插件示例
以下是一个识别 DedeCMS 的插件示例:
Plugin.define "DedeCMS"do
author "xxxxx"
version "0.1"
description "dedecms - homepage:http://www.dedecms.com/"
# Examples #
examples %w|
www.dedecms.com|
matches [
# Version detection # Powered by text
{:name=>"Powered by DedeCms",
:regexp=>/Powered by.*DedeCMS.*/}
]
end
此插件通过定义 DedeCMS
插件名,声明作者、版本及描述,并列举适用示例网站。在 matches
中,通过正则表达式 :regexp=>/Powered by.*DedeCMS.*/
来匹配页面中包含 “Powered by DedeCMS” 相关内容,以此识别网站是否使用 DedeCMS 系统。
原文始发于微信公众号(慕云MY):网站指纹识别工具:WhatWeb 解析及指纹编写
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论