
Un escáner de hosts virtuales que realiza búsquedas inversas, puede usarse con herramientas de pivote, detecta escenarios de captura total, sortea comodines, alias y páginas predeterminadas dinámicas.
Un escáner de hosts virtuales que puede usarse con herramientas de pivote, detectar escenarios de catch-all, alias y páginas predeterminadas dinámicas. Presentado por primera vez en SecTalks BNE en septiembre de 2017 (presentación).
Esta es una versión mejorada del VHostScan original de Codingo con mejoras adicionales, una base de código modernizada y listas de palabras ampliadas para un mejor descubrimiento de hosts virtuales.
Luego ejecute la aplicación `docker run --rm -it vhostscan -t´
VHostScan requiere Python 3.8 o superior. Instálelo usando:
$ pip install VHostScan
O instale desde el código fuente:
$ git clone https://github.com/codingo/VHostScan.git
$ cd VHostScan
$ pip install .
Para desarrollo:
$ pip install -e .
Las dependencias se instalarán y VHostScan se agregará a su PATH.
| Argumento | Descripción |
|---|---|
| -h, --help | Muestra el mensaje de ayuda y sale. |
| -t TARGET_HOSTS | Establece el host objetivo. |
| -b BASE_HOST | Establece el host que se usará durante la sustitución en la lista de palabras (por defecto TARGET). |
| -w WORDLISTS | Establece la(s) lista(s) de palabras a usar. Puede especificar múltiples listas de palabras en formato separado por comas (ej. -w "./wordlists/simple.txt, ./wordlists/hackthebox.txt" (por defecto ./wordlists/virtual-host-scanning.txt). Listas disponibles: simple.txt, hackthebox.txt, common-vhosts.txt, pentest-focused.txt, cloud-modern.txt, virtual-host-scanning.txt. |
| -p PORT | Establece el puerto a usar (por defecto 80). |
| -r REAL_PORT | El puerto real del servidor web para usar en los encabezados cuando no es 80 (ver RFC2616 14.23), útil al pivotar a través de ssh/nc etc (por defecto a PORT). |
| --ignore-http-codes IGNORE_HTTP_CODES | Lista separada por comas de códigos http a ignorar en los escaneos de hosts virtuales (por defecto 404). |
| --ignore-content-length IGNORE_CONTENT_LENGTH | Ignora longitudes de contenido de una cantidad específica. |
| --prefix PREFIX | Agrega un prefijo a cada elemento de la lista de palabras, para agregar dev-<palabra>, test-<palabra> etc. |
| --suffix SUFFIX | Agrega un sufijo a cada elemento de la lista de palabras, para agregar <palabra>dev, <palabra>dev. |
| --first-hit | Devuelve el primer resultado exitoso. Úselo solo en escenarios donde esté seguro de que no hay un catch-all configurado (como un CTF). |
| --unique-depth UNIQUE_DEPTH | Muestra las coincidencias probables del contenido de la página que se encuentra x veces (por defecto 1). |
| --ssl | Si se establece, las conexiones se realizarán a través de HTTPS en lugar de HTTP. |
| --fuzzy-logic | Si se establece, todas las respuestas de contenido único se comparan y se proporciona una relación de similitud para cada par. Esto ayuda a aislar vhosts en situaciones donde una página predeterminada no es estática (como cuando tiene la hora). |
| --no-lookups | Deshabilita las consultas inversas (identifica nuevos objetivos y los agrega a la lista de palabras, activado por defecto). |
| --rate-limit | Cantidad de tiempo en segundos para retrasar entre cada escaneo (por defecto 0). |
| --random-agent | Si se establece, cada escaneo usará un user-agent aleatorio de una lista predefinida. |
| --user-agent | Especifica un user-agent a usar para los escaneos. |
| --waf | Si se establece, se enviarán encabezados simples de evasión de WAF. |
| -oN OUTPUT_NORMAL | Salida normal impresa en un archivo cuando se especifica la opción -oN con un argumento de nombre de archivo. |
| -oG OUTPUT_GREPABLE | Salida grepeable impresa en un archivo cuando se especifica -oG con un argumento de nombre de archivo. |
| -oJ OUTPUT_JSON | Salida JSON impresa en un archivo cuando se especifica la opción -oJ con un argumento de nombre de archivo. |
| -v VERBOSE | Aumenta la salida de la herramienta para mostrar el progreso. |
Tenga en cuenta que varios de estos ejemplos hacen referencia a 10.10.10.29. Esta IP se refiere a BANK.HTB, una máquina objetivo retirada de HackTheBox (https://www.hackthebox.eu/).
El ejemplo más directo ejecuta la lista de palabras predeterminada contra example.com usando el puerto 80 por defecto:
$ VHostScan -t example.com
Si su conexión requiere SSL, puede usar:
$ VHostScan -t example.com --ssl

Supongamos que tiene un reenvío de puertos SSH escuchando en el puerto 4444 que reenvía tráfico al puerto 80 de la máquina de desarrollo de example.com. Podría usar lo siguiente para que VHostScan se conecte a través de su túnel SSH a localhost:4444 pero formatee las solicitudes de encabezado para que sean adecuadas para conectarse directamente al puerto 80:
$ VHostScan -t localhost -b example.com -p 4444 -r 80
VHostScan admite la tubería desde otras aplicaciones y tratará la información pasada a VHostScan como datos de lista de palabras, por ejemplo:
$ cat bank.htb | VHostScan -t 10.10.10.29
