Active Information Gathering
HTTP Headers
Mediante los headers de las respuestas HTTP podemos obtener información de la infraestructura del sistema.
Mediante el siguiente comando, podemos obtener los headers:
export TARGET="target.com"
curl -I "http://${TARGET}"Con esta consulta podríamos obtener los siguientes headers:
X-Powered-Byes un header HTTP opcional y no oficial, que se utiliza para indicar la pila de tecnología utilizada en el lado del servidorServercontiene la información acerca del software usado por el servidor original encargado de la solicitud
Junto con esto, nos pueden enviar el header Set-Cookie, el cual, se usa para enviar cookies desde el servidor al agente de usuario, así el agente de usuario puede enviarlos de vuelta al servidor.
En este caso, los nombres de las cookies nos pueden indicar la tecnología usada:
ASPSESSIONID<random>=<cookie_value>especifica .NETPHPSESSID=<cookie_value>usado por PHPJSESSION=<cookie_value>implementado por Java
WhatWeb
Podemos automatizar esta tarea con la herramienta WhatWeb:
export TARGET="target.com"
whatweb -a3 "http://${TARGET}" -v-a3nivel de aggression, donde, 1 es por defecto (Stealthy), 3 es para realizar requests adicionales (Aggressive), y 4 es para realizar muchos más requests (Heavy)-vverbose
Wappalyzer
Wappalyzer es un plugin de navegador que permite obtener información del sitio web (similar a WhatWeb):

WafW00f
WafW00f permite detectar la utilización de WAF. Para poder instalar esta herramienta en Kali, podemos usar el siguiente comando:
sudo apt install wafw00f -yPara ejecutarlo, podemos usar los siguientes comandos:
export TARGET="target.com"
wafw00f -v "http://${TARGET}"
wafw00f -v "http://${TARGET}" -p http://proxy:8080
wafw00f -i domains.txt-vverbose-pindicamos un proxy para redireccionar el tráfico-iarchivo con dominios a validar
Aquatone
Aquaton es una herramienta que permite tomar screenshots de sitios web para poder realizar una inspección visual.
Para instalar aquatone, usamos los siguientes comandos:
La versión del binario puede cambiar.
sudo apt install golang chromium-driver
wget https://github.com/michenriksen/aquatone/releases/download/v1.7.0/aquatone_linux_amd64_1.7.0.zip
unzip aquatone_linux_amd64_1.7.0.zip
mv aquatone /usr/bin/Para usar aquatone, podemos ejecutar lo siguiente:
cat targets.txt | aquatone -ports 80,443,3000,3001
cat targets.txt | aquatone -out ./aquatone -screenshot-timeout 1000-portsespecificamos los puertos a revisar de las URL-outdirectorio donde guardará los archivos a crear (por defecto, es el directorio local)-screenshot-timeouttimeout en milisegundos (por defecto es 30000)
Enumeración activa de subdominios
Transferencia de zona
Para validar si se puede realizar una transferencia de zona, se puede hacer mediante el sitio web Hacker Target, o mediante CLI.
Con el sitio web, podemos obtener un resultado como el siguiente:

Y mediante CLI, podemos usar los siguientes comandos:
Linux:
# Obtención de servidores NS
nslookup -type=NS zonetransfer.me
# Transferencia de zona
nslookup -type=any -query=AXFR zonetransfer.me nsztm1.digi.ninja
dig axfr @nsztm1.digi.ninja zonetransfer.me
dig axfr @nsztm1.digi.ninja zonetransfer.me +nocookieWindows:
nslookup
server nsztm1.digi.ninja
ls -d zonetransfer.meDNSEnum
dnsenum google.com
dnsenum google.com -f subdomains_wordlist.txtGobuster
Gobuster permite enumerar subdominios mediante la opción dns:
export TARGET="target.com"
export NS="ns.target.com"
export WORDLIST="wordlist.txt"
gobuster dns -q -r "${NS}" -d "${TARGET}" -w "${WORDLIST}" -p patterns.txt -o "gobuster_${TARGET}.txt"
gobuster dns -q -r "${NS}" -d "${TARGET}" -w "${WORDLIST}" -o "gobuster_${TARGET}.txt"dnsejecutamos el módulo DNS-qno imprime el banner del programa-respecificamos el servidor NS a quien consultar-ddominio a revisar-parchivo con patrones-wdiccionario a usar para la enumeración-oarchivo de salida
Ejemplo de archivo de patrones:
lert-api-shv-{GOBUSTER}-sin6
atlas-pp-shv-{GOBUSTER}-sin6Virtual Hosts
vHost es una característica que permite alojar múltiples sitios en un único servidor.
Existen dos modos de configurar vHost:
Basado en IP: en este caso, un servidor puede obtener múltiples interfaces de red o múltiples direcciones IP. Diferentes sitios pueden estar asociados a diferentes direcciones IP.
Basado en nombre: para este caso, múltiples dominios se encuentran asociados a la misma dirección IP.
Mediante cURL podemos enumerar vHosts:
cat vhosts.txt | while read vhost;do echo "\n********\nFUZZING: ${vhost}\n********";curl -s -I http://192.168.10.10 -H "HOST: ${vhost}.target.com" | grep "Content-Length: ";doneSi vemos un Content-Length distinto, podemos asumir que tenemos un vHost.
Usando el siguiente comando, podemos enumerar vHosts:
ffuf -w vhosts.txt -u http://192.168.10.10 -H "HOST: FUZZ.target.com"
ffuf -w vhosts.txt -u http://192.168.10.10 -H "HOST: FUZZ.target.com" -fs 612-wdiccionario a usar-uURL a la cual se le realizará fuzzing-H "HOST: FUZZ.randomtarget.com"especificamos que usaremos elHost Header, y la palabraFUZZserá reemplazada por la palabra del diccionario-fs 612filtrar las respuestas que tengan un size de 612 (size por defecto de las respuestas de este ejemplo)
Crawling
Realizar crawling a un sitio es un proceso que permite listar los recursos de este.
Para poder usar crawling en Burp Suite en las últimas versiones de este, se debe tener la versión Professional.
Cuando vemos en Target > Site map el sitio al cual le queremos hacer el crawling, le damos click derecho a este, y seleccionamos Scan:

Luego, seleccionamos Crawl y le damos click en OK:

Mediante el siguiente comando, podemos realizar el crawling usando ffuf
ffuf -recursion -recursion-depth 1 -u http://192.168.10.10/FUZZ -w wordlist.txt
ffuf -u http://192.168.10.10/blog/indexFUZZ -w web-extensions.txt:FUZZ
ffuf -u http://192.168.10.10/blog/FUZZ.php -w wordlist.txt
ffuf -recursion -recursion-depth 1 -u http://192.168.10.10/FUZZ -w wordlist.txt -e .php -v-recursionindica que se realizará un escáner recursivo-recursion-depth 1especifica el máximo de profundidad de la recursión, por defecto es 0, y en este caso, es 1-uURL a la cual se le realizará fuzzing-wdiccionario a usar-eespecificamos las extensiones a validar-vver la URL completa
Fuzzing de parámetros
Con ffuf es posible enumerar parámetros GET usando el siguiente comando:
ffuf -w wordlist.txt:FUZZ -u http://target.com/admin.php?FUZZ=key
ffuf -w wordlist.txt:FUZZ -u http://target.com/admin.php?FUZZ=key -fs 123Con ffuf es posible enumerar parámetros POST usando el siguiente comando:
ffuf -w wordlist.txt:FUZZ -u http://target.com/admin.php -X POST -d 'FUZZ=key' -H 'Content-Type: application/x-www-form-urlencoded'
ffuf -w wordlist.txt:FUZZ -u http://target.com/admin.php -X POST -d 'FUZZ=key' -H 'Content-Type: application/x-www-form-urlencoded' -fs 123En algunos servidores, debemos especificar el header
Content-Typepara que acepten la data enviada.
Con ffuf es posible enumerar valores usando el siguiente comando:
ffuf -w ids.txt:FUZZ -u http://target.com/admin.php -X POST -d 'id=FUZZ' -H 'Content-Type: application/x-www-form-urlencoded'
ffuf -w ids.txt:FUZZ -u http://target.com/admin.php -X POST -d 'id=FUZZ' -H 'Content-Type: application/x-www-form-urlencoded' -fs 123Podemos crear valores con el siguiente comando:
for i in $(seq 1 1000); do echo $i >> ids.txt; donePara comprobar el contenido, podemos usar el siguiente comando:curl http://target.com/admin.php -X POST -d 'id=73' -H 'Content-Type: application/x-www-form-urlencoded'
Last updated