Whatweb 0.5.5.12 完善使用及插件文档
点击此处查看最新的网赚项目教程
0x00 Preface [前言/简介]
whatweb自开始改造截至目前已更新10个版本以上,
目前版本是0.5.5.12,是最新版,也是最终版,后续只会对插件进行增删和优化。
这个版本后,我已将我目前对指纹识别工具所有的要求和理解都进行了实现。
如果没有其他的同样功能支持的Go版本替代,这应该是最强大的指纹识别工具了。
接下来,跟随whatweb增强版完整的使用说明,描述一下对功能的增强,完成这个项目规划的最后一步。
winezer0/whatweb-plus: whatweb 增强版 及 集合5000+插件 (提供exe版)
https://github.com/winezer0/whatweb-plus
0x01增强版主程序使用说明
ruby下运行必须安装以下模块:
gem install mmh3
kali下安装WhatWeb增强版:
卸载WhatWeb apt-get remove WhatWeb
上传WhatWeb增强版到kali /opt 文件夹
(其他文件夹也行, 如果解压失败可以先解压后上传,或使用其他压缩程序打包)
(测试使用MobaXterm工具拖动整个文件夹进行上传成功)
配置WhatWeb
添加可执行权限
cd /opt/WhatWeb/
chmod +x whatweb
使得WhatWeb可以直接被调用运行
ln -s /opt/WhatWeb/whatweb /usr/bin
更新插件目录,便于自动调用
先上传插件到文件夹下面
rm -rf /opt/WhatWeb/pluings
mv /opt/WhatWeb/pluings-novasec /opt/WhatWeb/pluings
重启一下或刷新环境变量运行WhatWeb进行调用
WhatWeb - Next generation web scanner version 0.5.5.12.
用法: whatweb [选项] 目标
目标选择:
URL URL,主机名,IP地址,文件名, CIDR IP段格式(支持多目标逗号分隔)
--input-file=文件名, -i 从文件中读取目标,可以使用-i /dev/stdin管道。
目标修改:
--url-prefix 为目标url添加前缀。(PS:支持单字符串)
--url-suffix 为目标url添加后缀。(PS:支持单字符串)
--url-pattern 替换目标url中的%insert%串(PS:支持单字符串,源版本BUG已修复)
举例:whatweb http://www.baidu.com/%insert%/robots.txt --url-pattern=1111111111 -Z
新增功能请求控制:
--no-max-match, -X 新增,忽略匹配:url要求,默认True。
--no-min-urls, -Y 新增,关闭最小化访问插件:url,默认True。
--no-base-path, -Z 新增,关闭自动访问高频指纹路径,默认True。
新增请求控制功能是为了实现尽可能少的访问插件中的URL,对于多个相同的URL只访问一次,并且不影响匹配效果。
max-match 开启该功能会忽略对指纹中:url的匹配,并且对同一个指纹中的多个:url进行去重访问,同时不影响匹配效果,(Passive和Aggressive可能不受影响)。
min-urls 开启该功能会把插件中的url请求调用到whatweb主流程中,由于主程序做了URL去重,实现所有插件中的URL都不会重复访问,缺陷是多次调用所有插件,会变慢。(Passive和Aggressive可能不受影响)
base-path 内置添加高频的指纹路径,如/favicon.ico, /robots.txt,在访问时会只能追加到目标URL后,便于发现指纹问题。
对于高频指纹路径可以关闭[-Z],其他两个选项[-X -Y]不建议同时关闭。
入侵级别:
通过攻击级别进行速度/隐身和可靠性之间的权衡控制。
--aggression, -a=级别 设置攻击级别。默认值:1。
1.隐形 匹配被动规则,为每个目标创建一个HTTP请求,并遵循重定向。
3.入侵 促进匹配被动+主动规则,当插件中的有被动规则被匹配,将额外发送主动规则的请求进一步匹配。
4.重击 强行匹配被动+主动规则,对每个目标进行大量HTTP请求,所有插件的url会被请求
主动规则:matches数组中有:url开头的规则 和 aggressive do函数。
被动规则:matches数组中没有:url开头的规则 和 passive do函数。
HTTP选项:
--user-agent, -U=AGENT 替换请求user-agen,源版本特征是WhatWeb/0.5.5,增强版已修改。
--header, -H 指定默认头将替换它,指定空值将删除它。增强版增加了动态Host头。
--follow-redirect=WHEN 控制是否跟随302重定向,可选`never', `http-only', `meta-only', `same-site', or `always'. 默认是总是跟随302跳转
--max-redirects=NUM 最大重定向次数. 默认值:10。
认证选项:
--user, -u= HTTP基本认证
--cookie, -c=COOKIES 使用Cookie ,格式'name=value; name2=value2'.
--cookie-jar=FILE 从文件读取一个Cookie.
代理配置:
--proxy, -P 设置HTTP代理服务器和端口 默认端口8080.
--proxy-user 设置代理服务器账号密码
插件选项:
--list-plugins, -l 列出所有插件。(如果有-p指定插件文件夹会列出文件夹的插件信息(新增))
--info-plugins, -I=[SEARCH] 列出所有插件信息. 可选多个关键字搜索(逗号分隔)。(如果有-p指定插件文件夹会列出文件夹的插件信息(新增))
--search-plugins=STRING 通过规则里的关键字搜索。(如果有-p指定插件文件夹会列出文件夹的插件信息(新增)),实际上与--info-plugins是同一个选择,只不过支持参数。
--plugins, -p=LIST 选择多个插件文件或文件夹中的插件(以逗号分隔),默认选择所有my-plugins和plugins目录的所有插件(注意:代码逻辑导致这个两个文件夹不能删除)
每个元素可以是一个目录、文件或插件名,并且可以有一个[+/-]修饰符
例如: ( +/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=DEFINITION 定义一个名为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 列出所选插件的谷歌搜索语法,要求插件里面有dorks这一项。
输出:
--verbose, -v 详细输出包括插件描述。调试时使用两次
--colour,--color=WHEN 控制是否使用颜色。`never', `always', or `auto'.(已修改为总是显示颜色)
--quiet, -q 不要显示简要日志。
--no-errors 禁用错误消息提示
日志输出:
--log-brief=FILE 日志单行摘要输出。
--log-verbose=FILE 日志详细输出。
--log-errors=FILE 输出错误日志。
--log-xml=FILE 输出XML格式日志。
--log-json=FILE 输出JSON格式日志。
--log-sql=FILE 输出数据库插入语句格式日志。
--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用户名。默认值: nil。
--log-mongo-password MongoDB 密码. 默认值: nil.
--log-elastic-index 用于elastic存储结果的索引的名称。默认值:whatweb
--log-elastic-host 指明elastic http接口的主机:端口. 默认: 127.0.0.1:9200
性能和稳定性选项:
PERFORMANCE & STABILITY:
--max-threads, -t 并发线程数。默认值:25。
--open-timeout 打开时间(秒)。默认值:15。
--read-timeout 读取时间(秒)。默认值: 30.
--wait=SECONDS 连接之间的等待(秒)。这在使用单个线程时非常有用。
帮助和杂项:
--short-help 短的使用帮助。
--help, -h 完整的使用帮助
--debug 在插件中引发错误。
--version, -V 显示详细的版本信息(已修改版本号为0.5.5.12)
使用示例:
* 扫描 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 top1000中扫描跨域策略(使用后缀)。
./whatweb -i plugin-development/alexa-top-100.txt --url-suffix /crossdomain.xml -p crossdomain_xml
特别值得提出的是,增强版没有修改和删除任何原来的参数指定,但为了方便使用做了部分指定追加。
0x02增强版主程序重大更新细节
1、增加@raw_body变量,实现动态的http响应解码,用于解决中文提取乱码。
2、增加多个数组变量,用于判断访问的URL是否重复,实现最少的访问数量和最大的匹配范围。
3、添加(三级)子文件夹插件支持,通过文件夹分类实现插件的不同安全等级分类。
4、修复原版本hash计算不正常的问题,新增新的hash类型规则,:mmh3表示mmh3hash, :allhash可以同时匹配md5hash和mmh3hash。(mmh3的Fofa等用的hash算法)
5、修改了原版本内置的明显请求头特征,如host、useragent等常规请求头。
0x03增强版插件常规开发
增强版本的插件开发与原版相同,仅仅增加了mmh3hash和allhash两个规则。
此处没有编写字符串提取相关的规则,被提取的规则会被高亮处理,如果有需求可自主学习。
此处没有编写主动和被动函数相关的信息,如有需要可以参考任意带有passive的插件。
匹配模式
:regexp #Ruby格式的正则表达式,注意斜杠是转义字符,所有/需要替换为/。
:text #不分大小写的文本,在代码最后还是被替换成正则匹配。
:md5 #HTTP响应正文的MD5哈希值
:mmh3 #HTTP响应正文的MMH3哈希值(新增)
:allhash #HTTP响应正文的MD5或MMH3哈希值(新增)
:ghdb #谷歌黑客搜索格式,支持使用intitle:、inurl:和minus。
:tagpattern #HTML标记名称列表。
匹配规则示例:
{ :text => "This page was generated by Generic CMS" },
{ :text => "Welcome to GenericServer" },
{ :regexp => /This page was generated by Generic CMS/ },
{ :url => "/favicon.ico", :md5 => '12dead87beef7f00d90cafed82babe5' },
{ :url => "/favicon.ico", :allhash => '12dead87beef7f00d90cafed82babe5' }, (新增)
{ :ghdb => 'intitle:"Generic CMS" login register', :certainty => 25 },
搜索范围
:search #表明规则匹配的范围,在响应的哪个部分进行规则匹配
"body" #在响应体搜索 (默认),
"headers" #在响应头搜索
"headers[cookie]" #在指定响应头搜索(此处是cookie)
"all" #同时在响应头和响应体搜索。
可与其他匹配模式合并使用。
规则示例:
#在响应全文搜索内容
{ :search => "all", :text => 'text/html;charset=ISO-8859-1'},
#在全部响应头搜索内容
{ :search => "headers", :text => 'text/html;charset=ISO-8859-1'},
#在特定响应头搜索内容
#{ :search => "headers[Content-Type]", :text => 'text/html;charset=ISO-8859-1'},
{ :search => "headers[set-cookie]", :regexp => /gcookieenericcms=[^;]+;/ },
命名匹配,
:name #匹配一个文本字符串,匹配的名称将出在详细输出中显示。
规则示例:
{ :name => "Meta generator", :text => '<meta name="generator" content="(c) by Generic CMS"' },
{ :name => "Whitelabel Error Page" , :text=>"Whitelabel Error Page" },
{ :search => "headers[www-authenticate]", :text => 'Basic realm="GenericRouter"' },
URL扩展
:status #匹配响应的HTTP状态
:url #指定请求URL,可以与其他变量结合使用,也可以单独使用
规则示例:
{:url => "/xxx/xxx/xxx/xxx",:status => 404, XXX=> /YYY/ },
{:url => "/xxx/xxx/xxx/xxx", :regexp=>/Whitelabel Error Page|The requested URL was not found on this server/},
URL地址的重点特征:
如果输入的:url【以/】开头,将智能拼接到请求域名后。
如规则:url => "/xxx/xxx/xxx/xxx" 下匹配http://www.baidu.com/A/B/C,
最终访问目的URL http://www.baidu.com/xxx/xxx/xxx/xxx
如果输入的:url【不以/】开头,将智能拼接到请求路径的最后一个目录后。
如规则:url => "xxx/xxx/xxx/xxx" 下匹配http://www.baidu.com/A/B/C,
最终访问目的URL http://www.baidu.com/A/B/xxx/xxx/xxx/xxx
除:url和:status外还需要其他的匹配属性才能实现matches规则,matches内仅使用:url和:status是不够的,如果需要这样的实现,建议使用自定义passive等函数。
匹配函数passive and aggressive
#可以在插件中编写passive do和aggressive后函数,实现定制Ruby代码来获得更多的控制
#支持有被动功能和主动功能。
#被动函数将始终执行
主动性函数:url和aggressive do只会有时执行
在主动级别3中,如果找到匹配,则执行主动函数
在主动级别4,主动函数总是执行
插件中可用的变量:
@body #响应体
@headers #响应头
@cookies #响应Cookie
@status #响应状态码
@base_uri #请求URI
@md5sum #文件MD5值
@tagpattern #标签匹配
@ip #响应IP
规则示例:
aggressive do #主动匹配
@variables[:my_var] += 1
# 创建一个匹配数组。这将返回相当于上面的matches[]块的内容
m = []
# ruby代码开始编写规则
m << if XXXXXXXXXXXXXXXXXXXXX
# 返回匹配数组,即使它是空的
m
end
动态变量-$RANDSTR变量
{ :url=>$RANDSTR+$RANDSTR+$RANDSTR, :regexp=>/Whitelabel Error Page|The requested URL was not found on this server/},
新增$RANDSTR变量,用于生成相同的随机字符串限制,间接缩小URL访问量。
0x04novafinger包装器说明
novafinger.py是对whatweb增强版本的Python3命令行包装。
程序特征:
1、主要用于输出格式优化和后续增加其他功能。
2、除使用-wh用于调用whatweb的-h参数外,复用whatweb所有原生参数,
3、添加--log-csv参数,用于生成json并导出为csv格式,并增加IP地址位置的解析。
扫描配置:
请先修改novafinger-lib目录下novafinger.conf的whatweb的调用方式,
例如可以直接命令行whatweb调用可以直接设置为whatweb或None
[whatweb]
whatweb_cmd = whatweb.exe (windows下使用这个是OK的)
#whatweb_cmd = ruby WhatWebwhatweb
whatweb_options = None
使用方法:
python novafinger.py -h #查看novafinger帮助信息
python novafinger.py -wh #查看嵌套的whatweb帮助信息
python novafinger.py http://www.baidu.com/wwww -p plugins -a 4 #进行插件扫描
注意:基本复用whatweb所有原生参数
0x05Summary总结
1、本程序由NOVASEC团队【酒零】基于whatweb 0.5.5进行修改,不可用于任何商业和违法攻击行为。
2、主程序已更新完毕,后续主程序不再进行大的版本调整。
3、后续会对插件进行分类和增删改查,但按照目前的情况为了程序的持续发展,将只对提交BUG、指纹需求、指纹插件的反馈者进行发布,具体请联系NOVASEC公众号运营人员。
5、本团队任何实战都是已授权的、任何技术及工具也仅用于学习分享,请勿用于任何非法、违法活动,如有违背请自行承担后果,感谢大家的支持!!!
6、本团队一贯秉承Free共享的精神,但是也有大家的小愿望,因此本团队所有分享工具,严禁不经过授权的公开分享,被关注就是对我们付出的精力做的最大的支持。
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: qs62318888
主题授权提示:请在后台主题设置-主题授权-激活主题的正版授权,授权购买:RiTheme官网