Information Gathering
a. Explorar manualmente el sitio
Identificar la estructura del sitio web, visitando cada sección manualmente y conociendo los patrones de las URLs
Simular interacciones típicas de un usuario del sitio como login, registrar una nueva cuenta o enviar formularios, analizando contenido e respuestas por captura de solicitudes vía proxy
Observar las solicitudes realizadas al servidor, incluyendo APIs, recursos estáticos y dinámicos desde las herramientas de desarrollador (F12)
Buscar errores de JavaScript por consola que puedan revelar información sensible
Interceptar y cambiar parámetros de las diferentes solicitudes emitidas al sitio con herramientas como Burp Suite o Caido, para verificar lógica del flujo del sitio
b. Verificar archivos comunes
Realizar consultas por curl para conocer códigos HTTP de respuesta y contenido de página de archivos comunes
curl -i -k -s https://subdomain.domain.tld/robots.txt
curl -i -k -s https://subdomain.domain.tld/security.txt
curl -i -k -s https://subdomain.domain.tld/sitemap.xml
curl -i -k -s https://subdomain.domain.tld/.DS_Store
curl -i -k -s https://subdomain.domain.tld/.env
curl -i -k -s https://subdomain.domain.tld/.git
Realizar fuzzing con ffuf sobre lista de archivos comunes con filtro para respuestas HTTP 200 OK
ffuf -w /path/to/seclists/Discovery/Web-Content/common.txt -u https://subdomain.domain.tld/FUZZ -mc 200
Descargar archivos expuestos y analizar contenido con strings
curl -O https://subdomain.domain.tld/.DS_Store
strings .DS_Store
c. Verificar diferencias en contenido según User-Agent
Realizar consultas con diferentes User-Agent y analizar código fuente de la respuesta
curl -i -s -k https://subdomain.domain.tld -A "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36"
curl -i -s -k https://subdomain.domain.tld -A "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1"
curl -i -s -k https://subdomain.domain.tld -A "Mozilla/5.0 (Linux; Android 11; Lenovo YT-J706X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
Se puede automatizar este proceso a través de un bucle for asignado sobre una lista de User-Agents previamente constituida
for user_agent in $(cat user_agents.txt); do
curl -i -s -k https://subdomain.domain.tld -A "$user_agent"
done
Utilizar un proxy como Burp Suite para cambiar el
User-Agent
a través de un reemplazo de variable y capturar todo el tráfico web
d. Identificar tecnologías utilizadas
Ejecutar WhatWeb o httpx para conocer tecnologías del sitio
whatweb https://example.com
httpx -u subdomain.domain.tld -cname -title -tech-detect -status-code -mc 200 -ip -cdn -probe
Utilizar web tools para conocer información del perfil tecnológico de un sitio
Analizar headers en respuestas emitidas por el servidor para analizar posibles divulgaciones de información de tecnologías
curl -k -I https://subdomain.domain.tld
e. Identificar roles de usuarios
Crear más de una cuenta (de ser posible) y analizar posibles diferencias de permisos vía cambio de contenido en solicitudes
Alterar contenido de una solicitud como parámetros del body en caso de POST/PUT o en URL para GET, probar bypass, alteración de headers como tokens o cookies, etc
Buscar paneles administrativos con fuzzing o desde contenido crawleado
ffuf -w /path/to/seclists/Discovery/Web-Content/admin.txt -u https://example.com/FUZZ -mc 200
cat crawling/crawling.txt | grep -iE 'access|admin(istration)?|api|auth(entication)?|cmd|id(entification)?|login|auth(entication)|return|token|wp(-admin)?'
f. Identificar y analizar URLs de entrada al sitio
Analizar URLs obtenidas en crawling aplicando filtros para buscar strings o extensiones específicas
Filtro de strings
cat crawling.txt | grep -iE '\?|=|\?\*=|\?page(=)?|\?url(=)?|=\*\?|access|action|admin(istration)?|api|auth(entication)?|callbacks|cmd|debug|file|href|id(entification)?|image|img|location|login|next|page|path|q|query|\?query=|auth(entication)|redirect(_url)|referer|return|search|uri|url|v1|v2|v3|token|wp(-admin)?'
Filtro de extensiones
cat crawling.txt | grep -iE '\.asp(x)?|\.bak|\.bash|\.sh|\.bat|\.cfm|\.cgi|\.conf|\.css|\.csv|\.db|\.do|\.ejs|\.env|\.exe|\.gif|\.gz|\.htaccess|\.htm(l)?|\.ico|\.ini|\.jar|\.jpg|\.jpeg|\.js(on)?|\.jsp(x)?|\.log|\.old|\.php(5)|\.pl|\.png|\.ps1|\.py|\.rb|\.sql(ite)?|\.svc|\.svg|\.swp|\.tar(.gz)?|\.ts|\.txt|\.woff(2)?|\.xml|\.zip'
g. Analizar manualmente el código fuente del lado del cliente
Descargar código fuente de un sitio para aplicar filtros grep en busca de referencias sensibles sobre cada fichero descargado
wget -r -np -l1 -k https://subdomain.domain.tld
Filtro de API_KEY y tokens
cat file.html file.js | grep -iE "api_key|apikey|api-key|token|access_token|auth_token|secret|jwt|session_id|bearer|client_secret"
Filtro de claves de seguridad
cat file.html file.js | grep -iE "key|private_key|public_key|rsa|ssh_key|tls"
Filtro de credenciales y usuarios
cat file.html file.js | grep -iE "session|credentials|cookie|auth|password|passwd|user|username|admin|root|login"
Filtro de databases
cat file.html file.js | grep -iE "db_host|db_user|db_pass|database|mongo_uri|mysql|sqlite|pg_connect"
Filtro de servicios tercerizados
cat file.html file.js | grep -iE "aws_access_key|aws_secret_key|s3_bucket|firebase|google|azure|stripe|paypal|twilio"
Filtro de URLs y endpoints
cat file.html file.js | grep -iE "http://|https://|endpoint|url|uri|callback|redirect|webhook"
Filtro de configuraciones, errores y depuración interna
cat file.html file.js | grep -iE "csrf|env(ironment)?|config|debug|error|stack_trace|traceback|log|console.log|print|test"
Filtro de ambientes de desarrollo
cat file.html file.js | grep -iE "localhost|127.0.0.1|dev(eloper)?|staging|sandbox|qa|testing|mock"
h. Identificar aplicaciones terceras
Buscar referencias a sitios de terceros
assetfinder subdomain.domain.tld
nmap -sV -Pn --disable-arp-ping -vvv -p443 subdomain.domain.tld
j. Probar Information Disclosure
Para todos los puntos anteriores analizar posibles divulgaciones de información asociadas a los activos del dominio auditado, tanto a nivel de credenciales, información sensible, versiones de software o tecnologías con vulnerabilidades públicas bajo un CVE específico, exploits públicos para versiones actuales, etc.