申明:该文章仅供安全学习和技术分享,请勿将该文章和文章中提到的技术用于违法活动上,切勿在非授权状态下对其他站点进行测试,如产生任何后果皆由读者本人承担!
如有侵权,请联系后台进行删除。转载请注明出处,感谢!
指纹识别工具 Whatweb
1. 工具简介
1.1 什么是 Whatweb
Whatweb 是一款优秀的基于 Ruby 开发的网络指纹识别软件,不但拥有丰富的命令参数可以自定义探测过程,还有上千个集成的插件供我们使用。
1.2 Whatweb 的特征
- 可以根据服务器返回的响应头确定网站使用的服务器类型, Web 中间件类型, cookie 信息
- 可以从网站的源代码中确定网站使用了哪些 JavaScript 库
- 可以通过页面 hash,path 等确定网站使用的 CMS 版本。
- 多种日志格式:XML,JSON,MagicTree, RubyObject, MongoDB
2. 工具安装
由于 Whatweb 是基于 Ruby 语言开发,因此需要安装在具备 Ruby 环境的系统中,目前支持 Windows/mac OS/Linux。
Kali Linux 默认是有 whatweb 软件的.
如果要在 Debian/Ubuntu 等系统下安装可以直接使用 apt-get install whatweb
进行安装,也不需要考虑依赖的问题。
而在 Redhat/Centos 系统下需要安装依赖,再安装软件:
yum update
yum install ruby ruby-devel rubygems
wget http://www.morningstarsecurity.com/downloads/whatweb-0.5.1.tar.gz
tar xzvf whatweb-0.5.1.tar.gz
cd whatweb-0.5.1
./whatweb url
3. 基础使用
命令语法:Usage: whatweb [options]
whatweb 表示使用该软件,[options] 为要使用的参数, 为我们要探测的目标。
3.1 命令手册
使用 --help 命令来查看 whatweb 的命令手册
whatweb --help
3.2 查看版本
使用 --version 命令来查看 whatweb 的版本信息
whatweb --version
3.3 单个目标探测
whatweb 192.168.187.130
3.4 多个目标探测
whatweb 192.168.187.1/24
3.5 外部文件导入多目标探测
whatweb --input-file=/root/桌面/1.txt
输入 -i 目标
的命令也可以导入文件
whatweb -i '/root/桌面/123.txt'
**ps:**批量探测时,可以 # 注释掉不想探测的网站
3.6 特定格式导出探测结果
能批量的导入探测当然也可批量的将结果导出,whatweb 支持多种日志的保存格式,可以将探测的结果导入文件中保存,方便查看和搜索。
whatweb 192.168.187.130 --log-json=result.json
其他格式导出文件同理:
- --log-brief = FILE Brief,one-line,greppable format
- --log-verbose = FILE 详细输出
- --log-xml = FILE XML格式。提供了 XSL 样式表
- --log-json-verbose = FILE JSON详细格式
- --log-magictree = FILE MagicTree XML格式
- --log-object = FILE Ruby 对象检查格式
- --log-mongo-database MongoDB 数据库的名称
- --log-mongo-collection MongoDB 集合的名称。默认值:whatweb
- --log-mongo-host MongoDB 主机名或 IP 地址。默认值:0.0.0.0
- --log-mongo-username MongoDB 用户名。默认值:nil
- --log-mongo-password MongoDB 密码。默认值:nil
- --log-elastic-index 用于存储结果的索引的名称。默认值:whatweb
- --log-elastic-host Host:弹性 http 接口的端口。默认值:127.0.0.1:9200
- --log-errors = FILE 记录错误。这通常以红色打印到屏幕上。
❝注:
- Json 格式需要安装 json 依赖 sudo gem install json
- Mongo 格式需要安装 mongo 依赖 sudo gem install mongo
❞
4. 常见参数
4.1 -v 参数
通过 -v 参数可以将探测的的结果详细的罗列出来。
whatweb -v 192.168.187.130
4.2 --url 参数
whatweb 默认是探测 80 端口 的 web 应用,当然不排除使用其他端口的网站,那么时候我们可以通过加 --url-parameter 指定探测的端口
- --url-prefix Add a prefix to target URLs. //添加前缀
- --url-suffix Add a suffix to target URLs. //添加后缀
- --url-pattern Insert the targets into a URL. //在中间插入内容
whatweb 192.168.187.1/24 –-url-suffix=":8080"
4.3 -a 参数
whatweb 定义了不同的级别的探测强度,目前有三个等级的探测级别,默认不带任何参数的额时候使用的是等级 1,等级数值越高表示探测的类型越复杂。可通过如下参数自定义探测的级别:
root@kali :~# whatweb -a 3 http://www.baidu.com/
- Stealthy 每个目标发送一次 http 请求,并且会跟随重定向
- Unused //不可用。(从 2011 年开始,此参数就是在开发状态。)
- Aggressive 每个目标发送少量的 http 请求,这些请求是根据参数为 1 时结果确定的
- Heavy 每个目标会发送大量的 http 请求,会去尝试每一个插件
4.4 -v 参数
如果网站需要输入账号密码,可以通过 --proxy-user 的方式指定用户名和密码进行探测。
whatweb -v --proxy-user admin:passwoed www.dvwa.com/login.php
4.5 -c 参数
如果有需要验证 cookie 的值时,可以使用 -c 参数指定 cookie 的值。
whatweb -v -c='PHPSESSID=031a6d42fac3bdce24bf4dc02accd080; security=low' http://www.dvwa.com/login.php
4.6 -l 参数
使用 -l 参数可以列出插件的列表,包括插件的名称以及插件的描述。
whatweb -l
4.7 -–info 参数
如果想查看具体某个插件的内容,可以使用 --info 参数来实现。
whatweb –-info-plugins="YouTube"
4.8 --max-threads 参数
如果觉得 whatweb 扫描的速度太慢,可以使用 --max-threads 指定 whatweb 的最大线程
whatweb 192.168.187.1/24 --max-threads=30
5. 全部参数
根据 whatweb -h 参数的结果进行的翻译,翻译可能不太准确,有问题的还望指出。
用法:whatweb [选项] <URLs>
目标选择:
<目标>输入 URL,主机名,IP 地址,文件名或
CIDR,x.x.x-x 或 x.x.x.x-x.x.x.x 中的 IP 范围格式。
--input-file = FILE,-i 从文件读取目标。你可以直接使用 -i /dev/stdin 批量读取主机名或 URL。
目标修改:
--url-prefix 为目标 URL 添加前缀。
--url-suffix 为目标 URL 添加后缀。
--url-pattern 在 URL 中插入目标。
例如 example.com/%insert%/robots.txt
侵略:
攻击级别控制速度/隐身与可靠性。
--aggression,-a = LEVEL 设置攻击级别。默认值:1。
1. Stealthy 给每个目标发出一个 HTTP 请求,并且跟随重定向。
2. Aggressive 如果匹配到了 1 级的插件,则额外将会提出要求。
3. Heavy 给每个目标发出大量 HTTP 请求并尝试每一个插件。
HTTP选项:
--user-agent,-U = AGENT 指定 ua 标识为 AGENT,而不是默认的 WhatWeb/0.5.1。
--header,-H 添加 HTTP 标头,例如「Foo:Bar」。指定一个默认标题将替换它。指定一个空值,例如「User-Agent:」将删除它。
--follow-redirect = WHEN 控制进行重定向。可能是 'never','http-only','meta-only','same-site',或者 'always'。默认值:always。
--max-redirects = NUM 最大重定向数。默认值:10。
认证:
--user,-u = <user:password> HTTP 基本身份验证。
--cookie,-c = COOKIES 使用 cookie,例如'名称=值; name2 = value2'。
--cookie-jar = FILE 从文件读取cookie。
代理:
--proxy <hostname[:port]> 设置代理主机名和端口。默认值:8080
--proxy-user <username:password> 设置代理用户和密码。
插件:
--list-plugins,-l 列出所有插件。
--info-plugins,-I = [SEARCH] 列出所有带有详细信息的插件。
(可选)使用逗号分隔列表中的关键字进行搜索。
--search-plugins = STRING 搜索插件关键字。
--plugins,-p = LIST 选择插件。LIST 是一组以逗号分隔的选定插件。默认为所有。每个元素可以是目录、文件或插件名称,也可以有一个修饰符,+/-。例如:+/tmp/moo.rb,+/tmp/foo.rb title,md5,+./plugins disabled/ /plugins disabled,-md5-p+ 是-p+plugins disabled 的快捷方式。
--grep,-g = STRING | REGEXP 搜索字符串或正则表达式。只显示匹配示例:--grep“hello”--grep“/he[l]*o/”--custom plugin=定义一个名为custom plugin的自定义插件,
示例:":text =>'powered by abc'"
":version=>/powered[ ]?by ab[0-9]/"
":ghdb=>'intitle:abc \"powered by abc\"'"
":md5=>'8666257030b94d3bdb46e05945f60b42'"
"{:text=>'powered by abc'}"
--dorks = PLUGIN 为所选插件列出 Google dorks。
输出:
--verbose,-v 详细输出包括插件描述。使用两次进行调试。
--colour,-color = WHEN 控制是否使用颜色。什么时候 'never', 'always', or 'auto'.
--quiet,-q 不显示对 STDOUT 的简短日志记录。
--no-errors 禁止显示错误消息。
记录:
--log-brief = FILE 记录简短的单行输出。
--log-verbose = FILE 日志详细输出。
--log-errors = FILE 错误日志。
--log-xml = FILE XML 日志格式。
--log-json = FILE JSON 日志格式。
--log-sql = FILE 记录 SQL INSERT 语句。
--log-sql-create = FILE 创建 SQL 数据库表。
--log-json-verbose = FILE 记录 JSON 详细格式。
--log-magictree = FILE 记录 MagicTree XML 格式。
--log-object = FILE 记录 Ruby 对象检查格式。
--log-mongo-database MongoDB 数据库的名称。
--log-mongo-collection MongoDB 集合的名称。
默认值:whatweb。
--log-mongo-host MongoDB 主机名或 IP 地址。
默认值:0.0.0.0
--log-mongo-username MongoDB 用户名。默认值:无。
--log-mongo-password MongoDB 密码。默认值:无。
--log-elastic-index 存储结果的索引名称。默认值:whatweb
--log-elastic-host 弹性 http 接口的 Host:port。默认值:127.0.0.1:9200
性能与稳定性:
--max-threads,-t 并发线程数。默认值:25。
--open-timeout 打开时间,以秒为单位。默认值:15
--read-timeout 读取时间,以秒为单位。默认值:30
--wait = SECONDS 在连接之间等待 SECONDS。当使用单线程时,这很有用。
帮助和其他:
--short-help 简短的使用帮助。
--help,-h 完整的使用帮助。
--debug 在插件中调试错误。
--version 显示版本信息。
用法示例:
* 扫描 example.com。
./whatweb example.com
* 使用详细的插件说明进行扫描 reddit.com slashdot.org。
./whatweb -v reddit.com slashdot.org
* 对 wired.com 进行的激进扫描,可以检测 WordPress 的确切版本。
./whatweb -a 3 www.wired.com
* 快速扫描本地网络并忽略错误。
whatweb --no-errors 192.168.0.0/24
* 在局域网中扫描 https 网站。
whatweb --no-errors --url-prefix https:// 192.168.0.0/24
*在 Alexa Top 1000 中扫描跨域策略。
./whatweb -i plugin-development/alexa-top-100.txt \
--url-suffix /crossdomain.xml -p crossdomain_xml
6 参考文章
- 工具 | whatweb 初级篇:https://www.freebuf.com/column/151540.html
- 工具 | whatweb 高级篇:https://www.freebuf.com/column/152611.html
- 网站指纹识别 whatweb:https://zhuanlan.zhihu.com/p/28017554