思想积累 读书 网络 生活 精神力量 正能量 读自己的内心

WhatWeb使用

2020-07-19  本文已影响0人  卿酌南烛_b805

简介

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 updateyum install ruby ruby-devel rubygemswget http://www.morningstarsecurity.com/downloads/whatweb-0.4.7.tar.gztar xzvf whatweb-0.4.7.tar.gzcd whatweb-0.4.7./whatweb url

使用

用法:whatweb 域名

-i 指定要扫描的文件

-v 详细显示扫描的结果

-a 指定运行级别

常规扫描

whatweb 域名

批量扫描

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

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

详细回显扫描

whatweb -v 域名

强度扫描等级控制

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

stealthy 每个目标发送一次http请求,并且会跟随重定向

unused 不可用(从2011年开始,此参数就是在开发状态

aggressive 每个目标发送少量的http请求,这些请求时根据参数为1时结果确定的

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:包含的字符串在 urlintitle:包含的字符串在 titlefiletype:包含的文件名,如 PDF, JPG, RB 等:md5 请求页面的 md5 hash 值:tagpattern html 标签:version 可以设置正则表达式或直接字符串匹配:string 可以设置正则表达式或直接字符串匹配:filepath 可以设置正则表达式或直接字符串匹配,通常显示系统错误或配置文件等:account 经常用在登陆页面或用户列表等:module 可以设置正则表达式或直接字符串匹配,如网络设备可能使用了一个ruby 模块等:model 可以设置正则表达式或直接字符串匹配:firmware 可以设置正则表达式或直接字符串匹配,设备的固件版本

了解以上选项我们可以写出一个简单的识别dedecms的插件,如下

Plugin.define "DedeCMS" doauthor "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

上一篇下一篇

猜你喜欢

热点阅读