网站指纹识别工具whatweb

版权声明:JTVDdTRlMGQlNUN1ODk4MSU1Q3U2NDFlJTVDdTRlOGIlNUN1NjBjNSU1Q3UzMDAy https://blog.csdn.net/Jiajiajiang_/article/details/88568978

简介

WhatWeb是一个开源的网站指纹识别软件。

WhatWeb可识别Web技术,包括内容管理系统(CMS),博客平台,统计/分析包,Javascript库,服务器和嵌入式设备。

WhatWeb有超过1000个插件,每个插件都能识别不同的东西。WhatWeb还标识版本号,电子邮件地址,账户ID,Web框架模块,SQL错误等。

特性

  • 拥有超过1700+个插件
  • 若网站返回302,会跳转到重定向的网站
  • 可以根据服务器返回的响应头确定网站使用的服务器类型,web中间件类型,cookie信息
  • 可以从网站的源代码中确定网站使用了哪些JavaScript库
  • 可以通过页面hash,path等确定网站使用的cms版本
  • 查询网站ip及所属国家
  • 多种日志格式:XML,JSON,MagicTree,RubyObject,MongoDB
  • 可定制化HTTP头
  • 可进行基础的认证设置
  • 支持批量扫描网站

安装

Whatweb是基于ruby语言开发,因此可以安装在具备ruby环境的系统中,目前支持Windows/Max OSX/Linux。

注:kali linux下已经集成了此工具

debian/ubtuntu系统下

apt-get install whatweb  //可自动解决以来问题

redhat/centos系统下

yum update
yum install ruby ruby-devel rubygems
wget http://www.morningstarsecurity.com/downloads/whatweb-0.4.7.tar.gz
tar xzvf whatweb-0.4.7.tar.gz
cd whatweb-0.4.7
./whatweb url

使用

用法:whatweb 域名

-i 指定要扫描的文件

-v 详细显示扫描的结果

-a 指定运行级别

扫描二维码关注公众号,回复: 5574526 查看本文章

常规扫描

whatweb 域名

批量扫描

我们可以通过将很多要扫描的域名放在文件内,然后扫描时指定该文件即可。

使用命令:whatweb -i /root/target.txt

详细回显扫描

whatweb -v 域名

强度扫描等级控制

whatweb有一个-aggression(简写为-a)参数,此参数后边可以跟数字1-4,分别对应4个不同的等级。

  1. stealthy 每个目标发送一次http请求,并且会跟随重定向
  2. unused 不可用(从2011年开始,此参数就是在开发状态
  3. aggressive 每个目标发送少量的http请求,这些请求时根据参数为1时结果确定的
  4. heavy 每个目标会发送大量的http请求,会去尝试每一个插件

whatweb -a 等级 域名 (可以和-v参数结合使用

注:默认参数为1

快速本地扫描(扫描内网主机)

whatweb --no-errors -t 255 内网网段 (可以和-a和-v参数结合使用

将扫描结果导出至文件内

whatweb www.baidu.com --log-xml=baidu.xml

其他格式导出文件同理:

--log-brief=FILE            简单的记录,每个网站只记录一条返回信息
--log-verbose=FILE            详细输出
--log-xml=FILE            返回xml格式的日志
--log-json=FILE            以json格式记录日志
--log-json-verbose=FILE            记录详细的json日志
--log-magictree=FILE            xml的树形结构
--log-object=FILE            ruby对象格式
--log-mongo-database            mongo数据库格式

注:json格式需要安装json依赖sudo gem install json

Mongo格式需要安装mongo依赖sudo gem install json

列出所有插件

whatweb -l

查看插件的具体信息

whatweb --info-plugins="插件名"

插件的开发语言为ruby,所以插件为.rb格式,插件的保存目录为/usr/share/whatweb/plugins,可以查看别人是怎么写插件的。

编写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

语法解释:

第一行定义的为插件的名字,可以直接在命令行中使用。

命令行测试:

./whatweb -p drupal www.example.com

第二行作者,第三行版本,第四行插件描述,第五行,插件所使用网站的例子

第五行是一个matchs列表,也是whatweb的关键,里边定义了一些匹配规则

{:name=>”meta generator tag”, : 包含匹配的文件名称,这个文件必须是网站中唯一存在的文件。

:regexp=> 是包含的要匹配的模式,它是一个正则表达式,可以有以下选项:

:regexp标准的 ruby 正则表达式
:text 字符
:ghdb google hack 数据库,包含以下几个模式
inurl:包含的字符串在 url
intitle:包含的字符串在 title
filetype:包含的文件名,如 PDF, JPG, RB 等
:md5 请求页面的 md5 hash 值
: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

如图所示:

猜你喜欢

转载自blog.csdn.net/Jiajiajiang_/article/details/88568978