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"
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.