WhatWeb identifica los sitios web. Su objetivo es responder a la pregunta “¿Qué es ese sitio web?“. WhatWeb reconoce las tecnologías web, incluidos los sistemas de gestión de contenidos (CMS), las plataformas de blogs, los paquetes de estadísticas/análisis, las bibliotecas de JavaScript, los servidores web y los dispositivos integrados. WhatWeb cuenta con más de 1800 plugins, cada uno de los cuales reconoce algo diferente. WhatWeb también identifica los números de versión, las direcciones de correo electrónico, los identificadores de cuentas, los módulos del framework web, los errores de SQL y mucho más.
WhatWeb puede ser sigiloso y rápido, o minucioso, pero lento. WhatWeb admite un nivel de agresión para controlar el equilibrio entre velocidad y fiabilidad. Cuando se visita un sitio web en el navegador, la transacción incluye muchos indicios de qué tecnologías web están impulsando ese sitio web. A veces, una sola visita a una página web contiene suficiente información para identificar un sitio web, pero cuando no es así, WhatWeb puede interrogar al sitio web más a fondo. El nivel de agresión por defecto, denominado “sigiloso“, es el más rápido y sólo requiere una petición HTTP de un sitio web. Es adecuado para escanear sitios web públicos. Los modos más agresivos se desarrollaron para su uso en pruebas de penetración.
La mayoría de los plugins de WhatWeb son minuciosos y reconocen una serie de indicios, desde los más sutiles hasta los más obvios. Por ejemplo, la mayoría de los sitios web de WordPress pueden ser identificados por la etiqueta meta HTML, por ejemplo ”, pero una minoría de sitios web de WordPress elimina esta etiqueta de identificación, pero esto no frustra a WhatWeb. El plugin de WordPress WhatWeb tiene más de 15 pruebas, que incluyen la comprobación del favicon, los archivos de instalación por defecto, las páginas de inicio de sesión y la comprobación de “/wp-content/” en los enlaces relativos.
Características
- Más de 1800 plugins
- Controla el equilibrio entre velocidad/espacio y fiabilidad
- Ajuste del rendimiento. Controla el número de sitios web que se escanean simultáneamente.
- Múltiples formatos de registro: Breve (greppable), Verbose (legible por humanos), XML, JSON, MagicTree, RubyObject, MongoDB, ElasticSearch, SQL.
- Soporte de proxy incluyendo TOR
- Cabeceras HTTP personalizadas
- Autenticación básica HTTP
- Control de la redirección de páginas web
- Rangos de direcciones IP
- Coincidencia difusa
- Conocimiento de la certeza de los resultados
- Complementos personalizados definidos en la línea de comandos
- Compatibilidad con IDN (nombres de dominio internacionales)
Ejemplo de Uso
Uso de WhatWeb para escanear 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[banner@2x.png,snoo-home@2x.png], 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]
Uso
.$$$ $. .$$$ $.
$$$$ $$. .$$$ $$$ .$$$$$$. .$$$$$$$$$$. $$$$ $$. .$$$$$$$. .$$$$$$.
$ $$ $$$ $ $$ $$$ $ $$$$$$. $$$$$ $$$$$$ $ $$ $$$ $ $$ $$ $ $$$$$$.
$ `$ $$$ $ `$ $$$ $ `$ $$$ $$' $ `$ `$$ $ `$ $$$ $ `$ $ `$ $$$'
$. $ $$$ $. $$$$$$ $. $$$$$$ `$ $. $ :' $. $ $$$ $. $$$$ $. $$$$$.
$::$ . $$$ $::$ $$$ $::$ $$$ $::$ $::$ . $$$ $::$ $::$ $$$$
$;;$ $$$ $$$ $;;$ $$$ $;;$ $$$ $;;$ $;;$ $$$ $$$ $;;$ $;;$ $$$$
$$$$$$ $$$$$ $$$$ $$$ $$$$ $$$ $$$$ $$$$$$ $$$$$ $$$$$$$$$ $$$$$$$$$'
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=DEFINITION\tDefine 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
Registro y Salida
Se admiten los siguientes tipos de registro:
- –log-brief=FILE Brief, one-line, greppable format
- –log-verbose=FILE Verbose
- –log-xml=FILE XML format. XSL stylesheet is provided
- –log-json=FILE JSON format
- –log-json-verbose=FILE JSON verbose format
- –log-magictree=FILE MagicTree XML format
- –log-object=FILE 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
- –log-errors=FILE Log errors. This is usually printed to the screen in red.
Se puede dar salida a varios registros simultáneamente especificando varias opciones de registro en la línea de comandos. Los usuarios avanzados que deseen una salida SQL deben leer el código fuente para ver las características no soportadas.
Plugins
Las coincidencias se realizan con:
- Cadenas de texto (distingue entre mayúsculas y minúsculas)
- Expresiones regulares
- Consultas a la base de datos de Google Hack (conjunto limitado de palabras clave)
- Hashes MD5
- Reconocimiento de URLs
- Patrones de etiquetas HTML
- Código Ruby personalizado para operaciones pasivas y agresivas
Para listar los plugins soportados:
$ ./whatweb -l
Lista de Plugins de WhatWeb
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)
Buscar plugins
Para ver más detalles sobre un plugin o buscar plugins por una palabra clave:
$ ./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"
================================================================================
Selección de plugins
Todos los plugins se cargan por defecto.
Los plugins pueden seleccionarse por directorios, archivos o nombres de plugins como una lista delimitada por comas con la opción de línea de comandos -p
o --plugin
.
Cada elemento de la lista puede tener un modificador: + añade al conjunto completo, – elimina del conjunto completo y ningún modificador anula los valores por defecto.
Ejemplos:
- –plugins +plugins-disabled,-foobar
- –plugins +/tmp/moo.rb
- –plugins foobar (sólo selecciona foobar)
- -p title,md5,+./plugins-disabled/
- -p ./plugins-disabled,-md5
La opción de línea de comandos --dorks
devuelve los dorks de Google para el plugin seleccionado. Por ejemplo, --dorks wordpress
devuelve “is proudly powered by WordPress“
La opción de línea de comandos --grep
, -g
busca en la página de destino la cadena seleccionada y devuelve una coincidencia en un plugin llamado Grep si se encuentra.
Rendimiento y Estabilidad
WhatWeb cuenta con varias opciones para aumentar el rendimiento y la estabilidad.
--max-threads
, -t Número de hilos simultáneos. Por defecto: 25.--open-timeout
Tiempo en segundos. Por defecto: 15--read-timeout
Tiempo en segundos. Por defecto: 30--wait=SECONDS
Esperar SEGUNDOS entre conexiones Esto es útil cuando se utiliza un solo hilo.
Los comandos --wait
y --max-threads
pueden utilizarse para ayudar a la evasión del IDS.
Cambiar el agente de usuario utilizando la opción de línea de comandos -U
o --user-agent
evitará la regla IDS de Snort para WhatWeb.
Si está escaneando rangos de direcciones IP, es mucho más eficiente utilizar un escáner de puertos como massscan para descubrir cuáles tienen el puerto 80 abierto antes de escanear con WhatWeb.
La detección de conjuntos de caracteres, con el plugin Charset disminuye drásticamente el rendimiento al requerir más CPU. Esto es requerido por el registro de JSON y MongoDB.
https://github.com/urbanadventurer/WhatWeb