WhatWeb

AffettoIris 2023-12-20 2,499 12/20

 

介绍

基于ruby开发的网安工具,官网,用于Web指纹识别。

WhatWeb 识别 网站Web 技术,包括内容管理系统 (CMS)、博客平台、统计/分析包、JavaScript 库、Web 服务器和嵌入式设备。WhatWeb 有超过 1800 个插件,每个插件都可以识别不同的东西。WhatWeb 还可以识别版本号、电子邮件地址、帐户 ID、Web 框架模块、SQL 错误等。

安装

kali自带。

环境

  1. 参考我的笔记《linux安装ruby.md》,安装2.5版本及以上的ruby,然后yum install ruby-devel rubygems,注意安装rubygems后会自动把ruby替换成2.0版,请手动替换回软链接。yum安装的不是最新版本的ruby,后续可能会报错,ruby -v 查看版本,建议安装2.5以上版本。

  2. 安装ruby所需要的包:

yum install gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison iconv-devel sqlite-devel
  1. 然后安装bundler。

安装whatweb

在官网的releases的Assets栏里找到最新版Source code(tar.gz) ,例如https://github.com/urbanadventurer/WhatWeb/archive/refs/tags/v0.5.5.tar.gz

WhatWeb

在CentOS服务器上执行wget https://github.com/urbanadventurer/WhatWeb/archive/refs/tags/v0.5.5.tar.gz,然后tar -xzvf whatweb,然后cd whatweb,然后bundler install安装项目所需依赖库。

./whatweb --version # 查看版本,看是否安装成功;

WhatWeb

./whatweb --help # 查看相关使用方法

噢,对了,如果你不是CentOS,而是Ubantu的话,那更加简单,一条命令就全搞定: apt-get install whatweb

执行./whatweb www.baidu.com如果报错如下:

WhatWeb

表示需要安装iconv:gem install iconv

使用

./whatweb -h # 查看帮助

whatweb --version# 查看版本

扫描网站指纹

  1. whatweb IP/域名 扫描指定网站的指纹例如./whatweb ink0.cn # 目前没看到太多有价值的信息,只是nginx、WordPress、网站标题等小case的:

    WhatWeb

  2. whatweb IP/域名 -v可以返回详细信息

    相比不带-v,多了很多文字描述,比如http响应报文的详细内容,但不带-v能保证显示了所有关键信息如nginx、JQuery。

    WhatWeb

扫描强度

-a参数指定扫描等级。WhatWeb有4中扫描级别,通过数字1~4选择,默认为1:

  • 1只会发送1个 HTTP GET 请求并跟踪重定向。 。

  • 2不可用,正在开发

  • 3会发送少量http请求,会猜测更多 URL,并在未经许可的情况下执行可能不合适的操作。

  • 4会发送大量http请求,会尝试每一个插件

1级和3级的区别?

我自己测试时,在输出结果上没看到区别,来看看官方的解释:

1 级隐蔽扫描可识别出 smartor.is-root.com/forum/ 使用了 phpBB 版本 2:

$ ./whatweb smartor.is-root.com/forum/
http://smartor.is-root.com/forum/ [200] PasswordField[password], HTTPServer[Apache/2.2.15], PoweredBy[phpBB], Apache[2.2.15], IP[88.198.177.36], phpBB[2], PHP[5.2.13], X-Powered-By[PHP/5.2.13], Cookies[phpbb2mysql_data,phpbb2mysql_sid], Title[Smartors Mods Forums - Reloaded], Country[GERMANY][DE]

3 级主动扫描会触发 phpBB 插件中的其他测试,该测试会识别网站使用的是 phpBB 版本 2.0.20 或更高版本:

$ ./whatweb -p plugins/phpbb.rb -a 3 smartor.is-root.com/forum/
http://smartor.is-root.com/forum/ [200] phpBB[2,>2.0.20]

请注意,使用 -p 参数来仅选择 phpBB 插件。建议(但不是强制性的)在尝试以主动模式对软件版本进行指纹识别时选择特定插件。这种方法更加隐蔽,因为它将限制请求的数量。

WhatWeb 没有缓存,因此如果您在重定向 URL 上使用激进的插件,您可能会多次获取相同的文件。

扫描内网主机/扫描一整个网段

whatweb 192.168.31.0/24 大道至简是这样的,不过我们习惯:whatweb --no-errors -t 255 192.168.31.0/24 # 扫描指定内网网段,就是把目标从域名/ip换成内网网段呗。

WhatWeb

--no-errors:Suppress error messages;如果不加的话,你会看到一堆因该IP地址unreachabled而报error的输出:

WhatWeb

-t:Number of simultaneous threads. Default: 25。

192.168.31.0/24:从192.168.31.0到192.168.31.255的IP地址范围。

批量扫描多个网站

扫描多个不同网站时,将网站域名/IP保存到文件中,使用-i参数指定扫描的文件,i取自input-file。可以用 # 注释掉不想扫描的IP/域名。

WhatWeb

导出扫描结果

whatweb www.fjrshg.com --log-xml=result.xml将扫描结果导出文件,默认放在当前路径下。

常用的导出格式如下:

--log-brief                 简单的记录,每个网站只记录一条返回信息
--log-verbose               详细输出
--log-xml                   xml格式的日志
--log-json                  json格式记录日志(需要安装json依赖sudo gem install json)
--log-json-verbose          详细的json日志
--log-magictree             xml的树形结构
--log-object                ruby对象格式
--log-mongo-database        mongo数据库格式

插件

WhatWeb 有超过 1800 个插件,每个插件都可以识别不同的指纹。

  1. whatweb -l 查看插件列表。

WhatWeb

  1. whatweb --info-plugins="插件名" 查看指定插件的信息。

WhatWeb

插件本质上就是.rb的文件,存放在whatweb根目录/plugins/ 目录下,一个文件对应一个插件,这意味着WhatWeb有一千多个插件。

WhatWeb

我们可以查看文件来学习别人的插件,或者根据图中的格式编写自己的插件。

WhatWeb

上图核心代码看起来像是一串正则匹配表达式。

  1. ./whatweb -p plugins/html5.rb -a 3 ink0.cn使用指定的插件文件去扫描。

    或者./whatweb -p HTML5 -a 3 ink0.cn使用指定的插件去扫描,

    当然./whatweb -p html5 -a 3 ink0.cn也可以。

    不过./whatweb -p plugins/HTML5.rb -a 3 ink0.cn就不可以了,因为linux区分文件名大小写。

    这样好处是有针对性,不用尝试全部插件,减少了发包量,不引起注意。

  2. 默认情况下,所有插件都会加载。 例如ink0.cn有HTML5指纹,可以被html5.ruby插件检测到:

    WhatWeb

    即使我不指定插件,输出结果也有HTML5指纹:

    WhatWeb

    如果网站没有这个指纹,是不会有相关输出的,例如下图输出就没有提及4D:

    WhatWeb

- THE END -

AffettoIris

12月20日23:35

最后修改:2023年12月20日
1

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论