Desenvolvido por Andrew Horton urbanadventurer e Brendan Coles bcoles
Versão mais recente: v0.5.5. 16 de janeiro de 2021
Licença: GPLv2
Este produto está sujeito aos termos detalhados no contrato de licença. Para mais informações sobre WhatWeb visite:
Página inicial: https://morningstarsecurity.com/research/whatweb
Wiki: https://github.com/urbanadventurer/WhatWeb/wiki/
Se você tiver alguma dúvida, comentário ou preocupação em relação ao WhatWeb, consulte a documentação antes de entrar em contato com um dos desenvolvedores. Seu feedback é sempre bem-vindo.
WhatWeb identifica sites. Seu objetivo é responder à pergunta “O que é esse site?”. WhatWeb reconhece tecnologias da web, incluindo sistemas de gerenciamento de conteúdo (CMS), plataformas de blog, pacotes de estatística/análise, bibliotecas JavaScript, servidores da web e dispositivos incorporados. WhatWeb tem mais de 1.800 plug-ins, cada um para reconhecer algo diferente. WhatWeb também identifica números de versão, endereços de e-mail, IDs de contas, módulos de estrutura da web, erros de SQL e muito mais.
WhatWeb pode ser furtivo e rápido, ou completo, mas lento. WhatWeb suporta um nível de agressão para controlar a relação entre velocidade e confiabilidade. Quando você visita um site em seu navegador, a transação inclui muitas dicas sobre quais tecnologias da web estão alimentando esse site. Às vezes, uma única visita a uma página da Web contém informações suficientes para identificar um site, mas quando isso não acontece, o WhatWeb pode interrogar ainda mais o site. O nível padrão de agressão, denominado 'furtivo', é o mais rápido e requer apenas uma solicitação HTTP de um site. Isto é adequado para verificar sites públicos. Modos mais agressivos foram desenvolvidos para uso em testes de penetração.
A maioria dos plug-ins WhatWeb são completos e reconhecem uma variedade de dicas, desde sutis até óbvias. Por exemplo, a maioria dos sites WordPress podem ser identificados pela meta tag HTML, por exemplo '', mas uma minoria de sites WordPress remove essa tag de identificação, mas isso não impede o WhatWeb. O plugin WordPress WhatWeb tem mais de 15 testes, que incluem verificação de favicon, arquivos de instalação padrão, páginas de login e verificação de "/wp-content/" em links relativos.
Usando WhatWeb para verificar reddit.com.
$ ./whatweb reddit.com
http://reddit.com [301 Moved Permanently] Country[UNITED STATES][US], HTTPServer[snooserv], IP[151.101.65.140], RedirectLocation[https://www.reddit.com/], UncommonHeaders[retry-after,x-served-by,x-cache-hits,x-timer], Via-Proxy[1.1 varnish]
https://www.reddit.com/ [200 OK] Cookies[edgebucket,eu_cookie_v2,loid,rabt,rseor3,session_tracker,token], Country[UNITED STATES][US], Email[[email protected],[email protected]], Frame, HTML5, HTTPServer[snooserv], HttpOnly[token], IP[151.101.37.140], Open-Graph-Protocol[website], Script[text/javascript], Strict-Transport-Security[max-age=15552000; includeSubDomains; preload], Title[reddit: the front page of the internet], UncommonHeaders[fastly-restarts,x-served-by,x-cache-hits,x-timer], Via-Proxy[1.1 varnish], X-Frame-Options[SAMEORIGIN]
.$$$ $. .$$$ $.
$$$$ $$. .$$$ $$$ .$$$$$$. .$$$$$$$$$$. $$$$ $$. .$$$$$$$. .$$$$$$.
$ $$ $$$ $ $$ $$$ $ $$$$$$. $$$$$ $$$$$$ $ $$ $$$ $ $$ $$ $ $$$$$$.
$ `$ $$$ $ `$ $$$ $ `$ $$$ $$' $ `$ `$$ $ `$ $$$ $ `$ $ `$ $$$'
$. $ $$$ $. $$$$$$ $. $$$$$$ `$ $. $ :' $. $ $$$ $. $$$$ $. $$$$$.
$::$ . $$$ $::$ $$$ $::$ $$$ $::$ $::$ . $$$ $::$ $::$ $$$$
$;;$ $$$ $$$ $;;$ $$$ $;;$ $$$ $;;$ $;;$ $$$ $$$ $;;$ $;;$ $$$$
$$$$$$ $$$$$ $$$$ $$$ $$$$ $$$ $$$$ $$$$$$ $$$$$ $$$$$$$$$ $$$$$$$$$'
WhatWeb - Next generation web scanner version 0.5.5.
Developed by Andrew Horton (urbanadventurer) and Brendan Coles (bcoles)
Homepage: https://morningstarsecurity.com/research/whatweb
Usage: whatweb [options] <URLs>
TARGET SELECTION:
<TARGETs> Enter URLs, hostnames, IP addresses, filenames or
IP ranges in CIDR, x.x.x-x, or x.x.x.x-x.x.x.x
format.
--input-file=FILE, -i Read targets from a file. You can pipe
hostnames or URLs directly with -i /dev/stdin.
TARGET MODIFICATION:
--url-prefix Add a prefix to target URLs.
--url-suffix Add a suffix to target URLs.
--url-pattern Insert the targets into a URL. Requires --input-file,
eg. www.example.com/%insert%/robots.txt
AGGRESSION:
The aggression level controls the trade-off between speed/stealth and
reliability.
--aggression, -a=LEVEL Set the aggression level. Default: 1.
Aggression levels are:
1. Stealthy Makes one HTTP request per target. Also follows redirects.
3. Aggressive If a level 1 plugin is matched, additional requests will be
made.
4. Heavy Makes a lot of HTTP requests per target. Aggressive tests from
all plugins are used for all URLs.
HTTP OPTIONS:
--user-agent, -U=AGENT Identify as AGENT instead of WhatWeb/0.5.5.
--header, -H Add an HTTP header. eg "Foo:Bar". Specifying a default
header will replace it. Specifying an empty value, eg.
"User-Agent:" will remove the header.
--follow-redirect=WHEN Control when to follow redirects. WHEN may be `never',
`http-only', `meta-only', `same-site', or `always'.
Default: always.
--max-redirects=NUM Maximum number of contiguous redirects. Default: 10.
AUTHENTICATION:
--user, -u=<user:password> HTTP basic authentication.
--cookie, -c=COOKIES Provide cookies, e.g. 'name=value; name2=value2'.
--cookiejar=FILE Read cookies from a file.
PROXY:
--proxy <hostname[:port]> Set proxy hostname and port.
Default: 8080.
--proxy-user <username:password> Set proxy user and password.
PLUGINS:
--list-plugins, -l List all plugins.
--info-plugins, -I=[SEARCH] List all plugins with detailed information.
Optionally search with keywords in a comma
delimited list.
--search-plugins=STRING Search plugins for a keyword.
--plugins, -p=LIST Select plugins. LIST is a comma delimited set of
selected plugins. Default is all.
Each element can be a directory, file or plugin name and
can optionally have a modifier, eg. + or -
Examples: +/tmp/moo.rb,+/tmp/foo.rb
title,md5,+./plugins-disabled/
./plugins-disabled,-md5
-p + is a shortcut for -p +plugins-disabled.
--grep, -g=STRING|REGEXP Search for STRING or a Regular Expression. Shows
only the results that match.
Examples: --grep "hello"
--grep "/he[l]*o/"
--custom-plugin=DEFINITIONtDefine a custom plugin named Custom-Plugin,
--custom-plugin=DEFINITION Define a custom plugin named Custom-Plugin,
Examples: ":text=>'powered by abc'"
":version=>/powered[ ]?by ab[0-9]/"
":ghdb=>'intitle:abc "powered by abc"'"
":md5=>'8666257030b94d3bdb46e05945f60b42'"
--dorks=PLUGIN List Google dorks for the selected plugin.
OUTPUT:
--verbose, -v Verbose output includes plugin descriptions. Use twice
for debugging.
--colour,--color=WHEN control whether colour is used. WHEN may be `never',
`always', or `auto'.
--quiet, -q Do not display brief logging to STDOUT.
--no-errors Suppress error messages.
LOGGING:
--log-brief=FILE Log brief, one-line output.
--log-verbose=FILE Log verbose output.
--log-errors=FILE Log errors.
--log-xml=FILE Log XML format.
--log-json=FILE Log JSON format.
--log-sql=FILE Log SQL INSERT statements.
--log-sql-create=FILE Create SQL database tables.
--log-json-verbose=FILE Log JSON Verbose format.
--log-magictree=FILE Log MagicTree XML format.
--log-object=FILE Log Ruby object inspection format.
--log-mongo-database Name of the MongoDB database.
--log-mongo-collection Name of the MongoDB collection. Default: whatweb.
--log-mongo-host MongoDB hostname or IP address. Default: 0.0.0.0.
--log-mongo-username MongoDB username. Default: nil.
--log-mongo-password MongoDB password. Default: nil.
--log-elastic-index Name of the index to store results. Default: whatweb
--log-elastic-host Host:port of the elastic http interface. Default: 127.0.0.1:9200
PERFORMANCE & STABILITY:
--max-threads, -t Number of simultaneous threads. Default: 25.
--open-timeout Time in seconds. Default: 15.
--read-timeout Time in seconds. Default: 30.
--wait=SECONDS Wait SECONDS between connections.
This is useful when using a single thread.
HELP & MISCELLANEOUS:
--short-help Short usage help.
--help, -h Complete usage help.
--debug Raise errors in plugins.
--version Display version information. (WhatWeb 0.5.5).
EXAMPLE USAGE:
* Scan example.com.
./whatweb example.com
* Scan reddit.com slashdot.org with verbose plugin descriptions.
./whatweb -v reddit.com slashdot.org
* An aggressive scan of wired.com detects the exact version of WordPress.
./whatweb -a 3 www.wired.com
* Scan the local network quickly and suppress errors.
whatweb --no-errors 192.168.0.0/24
* Scan the local network for https websites.
whatweb --no-errors --url-prefix https:// 192.168.0.0/24
* Scan for crossdomain policies in the Alexa Top 1000.
./whatweb -i plugin-development/alexa-top-100.txt
--url-suffix /crossdomain.xml -p crossdomain_xml
Os seguintes tipos de registro são suportados:
Você pode gerar vários logs simultaneamente especificando diversas opções de log de linha de comando. Os usuários avançados que desejam saída SQL devem ler o código-fonte para ver os recursos não suportados.
As partidas são feitas com:
Para listar os plug-ins suportados:
$ ./whatweb -l
Plugin Name - Description
--------------------------------------------------------------------------------
1024-CMS - 1024 is one of a few CMS's leading the way with the implementation...
360-Web-Manager - 360-Web-Manager
3COM-NBX - 3COM NBX phone system. The NBX NetSet utility is a web interface i...
3dcart - 3dcart - The 3dcart Shopping Cart Software is a complete ecommerce s...
4D - 4D web application deployment server
4images - 4images is a powerful web-based image gallery management system. Fe...
... (truncated)
Para ver mais detalhes sobre um plug-in ou pesquisar plug-ins por uma palavra-chave:
$ ./whatweb -I phpBB
WhatWeb Detailed Plugin List
Searching for phpBB
================================================================================
Plugin: phpBB
--------------------------------------------------------------------------------
Description: phpBB is a free forum
Website: http://phpbb.org/
Author: Andrew Horton
Version: 0.3
Features: [Yes] Pattern Matching (7)
[Yes] Version detection from pattern matching
[Yes] Function for passive matches
[Yes] Function for aggressive matches
[Yes] Google Dorks (1)
Google Dorks:
[1] "Powered by phpBB"
================================================================================
Todos os plugins são carregados por padrão.
Os plug-ins podem ser selecionados por diretórios, arquivos ou nomes de plug-ins como uma lista delimitada por vírgulas com a opção de linha de comando -p ou --plugin.
Cada item da lista pode ter um modificador: + adiciona ao conjunto completo, - remove do conjunto completo e nenhum modificador substitui os padrões.
A opção de linha de comando --dorks retorna google dorks para o plugin selecionado. Por exemplo, --dorks wordpress retorna "é orgulhosamente desenvolvido com WordPress"
A opção de linha de comando --grep, -g pesquisa na página de destino a string selecionada e retorna uma correspondência em um plugin chamado Grep se for encontrada.
WhatWeb apresenta vários níveis de agressão. Por padrão, o nível de agressão é definido como 1 (furtivo), que envia uma única solicitação HTTP GET e também segue redirecionamentos.
--aggression, -a
1. Stealthy Makes one HTTP request per target. Also follows redirects.
2. Unused
3. Aggressive Can make a handful of HTTP requests per target. This triggers
aggressive plugins for targets only when those plugins are
identified with a level 1 request first.
4. Heavy Makes a lot of HTTP requests per target. Aggressive tests from
all plugins are used for all URLs.
Plug-ins agressivos de nível 3 adivinharão mais URLs e executarão ações potencialmente inadequadas sem permissão. Atualmente, o WhatWeb não oferece suporte a testes de nível de intrusão/exploração em plug-ins.
Uma varredura furtiva de nível 1 identifica que smartor.is-root.com/forum/ usa phpBB versão 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]
Uma verificação agressiva de nível 3 aciona testes adicionais no plugin phpBB que identifica que o site usa phpBB versão 2.0.20 ou superior:
$ ./whatweb -p plugins/phpbb.rb -a 3 smartor.is-root.com/forum/
http://smartor.is-root.com/forum/ [200] phpBB[2,>2.0.20]
Observe o uso do argumento -p para selecionar apenas o plugin phpBB. É aconselhável, mas não obrigatório, selecionar um plugin específico ao tentar capturar versões de software em modo agressivo. Esta abordagem é muito mais furtiva, pois limitará o número de solicitações.
WhatWeb não tem cache, portanto, se você usar plug-ins agressivos no redirecionamento de URLs, poderá buscar os mesmos arquivos várias vezes.
WhatWeb apresenta diversas opções para aumentar o desempenho e a estabilidade.
Os comandos --wait e --max-threads podem ser usados para auxiliar na evasão de IDS.
Alterar o agente do usuário usando a opção de linha de comando -U ou --user-agent evitará a regra Snort IDS para WhatWeb.
Se você estiver verificando intervalos de endereços IP, é muito mais eficiente usar um scanner de porta como o massscan para descobrir quais têm a porta 80 aberta antes de digitalizar com o WhatWeb.
A detecção do conjunto de caracteres, com o plugin Charset, diminui drasticamente o desempenho, exigindo mais CPU. Isso é exigido pelo log JSON e MongoDB.
Para habilitar o log do MongoDB, instale o mongo gem. gem instalar mongo
Para ativar a detecção do conjunto de caracteres e o registro do MongoDB, instale a gem rchardet. gem install rchardet cp plugins-disabled/charset.rb meus-plugins/
Plugins são fáceis de escrever. Comece percorrendo os tutoriais de plugins na pasta my-plugins/ .
Uma visão geral dos tutoriais do plugin está aqui. plugin-tutoriais.txt
Depois de progredir nos tutoriais, leia a seção Desenvolvimento do wiki.
A versão de desenvolvimento WhatWeb apresenta atualizações regulares.
Navegue no wiki para obter mais documentação e técnicas avançadas de uso.
Obrigado às seguintes pessoas que contribuíram para o WhatWeb.
É difícil acompanhar todas as pessoas que contribuíram para o WhatWeb. Se o seu nome estiver faltando, por favor me avise.