🍬 博主介绍
👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
文章目录
一、whatweb简介
whatweb 一款网站指纹识别工具,使用Ruby语言开发。
whatweb能够识别各种关于网站的详细信息包括:CMS类型、博客平台、中间件、web框架模块、网站服务器、脚本类型、JavaScript库、IP、cookie等等。WhatWeb还标识版本号,电子邮件地址,账户ID,Web框架模块,SQL错误等。
WhatWeb可以隐秘、快速、彻底或缓慢扫描。
WhatWeb支持攻击级别来控制速度和可靠性之间的权衡。当在浏览器中访问网站时,该交易包含许多关于Web技术为该网站提供支持的提示。有时,单个网页访问包含足够的信息来识别网站,但如果没有,WhatWeb可以进一步询问网站。默认的攻击级别称为“被动”,速度最快,只需要一个网站的HTTP请求。这适用于扫描公共网站。在渗透测试中开发了更积极的模式。
二、whatweb安装
Whatweb是基于ruby语言开发,因此可以安装在具备ruby环境的系统中,目前支持Windows/Max OSX/Linux。
1、kali
在kali中已经机场whatweb,我这里演示使用的是kali自带的wahtweb。
如果kali没有就使用apt-get install whatweb 安装
kali是基于debian的
2、debian/ubtuntu系统安装
debian/ubtuntu系统下
apt-get install whatweb
3、redhat/centos系统安装
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特性
拥有超过1700+个插件
若网站返回302,会跳转到重定向的网站
可以根据服务器返回的响应头确定网站使用的服务器类型,web中间件类型,cookie信息
可以从网站的源代码中确定网站使用了哪些JavaScript库
可以通过页面hash,path等确定网站使用的cms版本
查询网站ip及所属国家
多种日志格式:XML,JSON,MagicTree,RubyObject,MongoDB
可定制化HTTP头
可进行基础的认证设置
支持批量扫描网站
四、whatweb使用
命令语法:
1、whatweb参数介绍
常用参数如下:
-h 查看帮助信息
--version 查看版本信息
-i 指定要扫描的文件
-v 详细显示扫描的结果
-a 指定运行级别
所有参数:
使用添加whatweb -h查看所有参数
whatweb -h
2、whatweb用法介绍
1.查看版本信息
whatweb --version
2.查看帮助信息
whatweb -h
3.常规扫描
whatweb url
4.批量扫描
将url全部写入一个txt中,然后使用-i参数指定文件就可以了
whatweb -i url.txt
5.扫描结果显示详细内容
使用-v参数就可以了,nmap查看详细信息也是-v
whatweb -v http://192.168.233.181
6.设置扫描强度
whatweb有一个-aggression(简写为-a)参数,此参数后边可以跟数字1-4,分别对应4个不同的等级。
1、tealthy 每个目标发送一次http请求,并且会跟随重定向
2、unused 不可用
3、aggressive 每个目标发送少量的http请求,这些请求时根据参数为1时结果确定的
4、heavy 每个目标会发送大量的http请求,会去尝试每一个插件
举例:可配合-v,-i一起使用
whatweb -a 1 http://192.168.233.181
whatweb -a 3 -v http://192.168.233.181
whatweb -a 4 http://192.168.233.181
whatweb -a 1 -v -i url.txt
7.扫描网段
扫描单网段
whatweb --no-errors -t 255 192.233.0.0/24
可结合-a -v -i一起使用
8.导出扫描结果
导出文件格式:
--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 mongo
扫描单网站输出xml文件
whatweb http://192.168.233.181 --log-xml=output.txt
扫描单网段输出xml文件
whatweb --no-errors -t 255 192.168.233.0/24 --log-xml=output1.txt
9.查看whatweb插件信息
whatweb -l
五、whatweb插件编写
whatweb对国内的网站识别不是很友好,我们可以自己写插件,兼容更多国内的网站。
1、官方模板
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
2、解释模板
第一行定义的为插件的名字,可以直接在命令行中使用。
第二行作者,第三行版本,第四行插件描述,第五行,插件所使用网站的例子
第五行是一个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 可以设置正则表达式或直接字符串匹配,设备的固件版本
3、实例
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