Saltearse al contenido

Fingerprinting de tecnologías

Antes de atacar una web o un servicio necesitas saber con qué está construido: qué servidor, qué CMS, qué framework, qué lenguaje, qué versiones y qué WAF hay delante. El fingerprinting responde a eso, y cada respuesta orienta el ataque: un WordPress se ataca distinto que un Spring, y una versión concreta te lleva directo a los CVE conocidos.

  • Servidor web (nginx, Apache, IIS) y su versión.
  • Lenguaje/framework (PHP/Laravel, Python/Django, Node/Express, .NET, Java/Spring).
  • CMS (WordPress, Joomla, Drupal — ver CMS (WordPress, Joomla, Drupal)) y plugins/temas.
  • Front-end (React, Angular, Vue), librerías JS y sus versiones.
  • WAF/CDN delante (Cloudflare, Akamai, Imperva — ver Evasión de WAF).
  • Infra (proveedor cloud, balanceadores, lenguajes de plantilla).
cabeceras HTTP: Server, X-Powered-By, X-AspNet-Version, Set-Cookie (PHPSESSID, JSESSIONID...)
HTML/JS: meta generator, rutas (/wp-content/, /_next/), nombres de ficheros, comentarios
favicon: su hash identifica tecnologías (favicon hashing)
códigos/errores: páginas de error características de cada stack
orden de cabeceras, TLS fingerprint (JA3), cookies
whatweb https://target # tecnologías por fingerprints
httpx -l hosts.txt -tech-detect -title -status-code -server
wappalyzer (extensión / CLI) # stack completo
nuclei -t http/technologies/ -u https://target # detección masiva
# favicon hashing (encontrar la misma tecnología/origen)
# Shodan: http.favicon.hash:<hash> (ver recon-shodan)

Verificación manual rápida:

curl -sI https://target # cabeceras (Server, X-Powered-By, cookies)
curl -s https://target | grep -iE 'generator|wp-content|_next|csrf'

El objetivo real: una vez identificada la versión, cruzas con bases de vulnerabilidades:

searchsploit <producto> <version> # exploits locales
nuclei -t cves/ -u https://target # plantillas de CVE
# y bases: CVE Details, Exploit-DB, GitHub advisories

Una versión concreta y desactualizada suele ser el camino más corto a la explotación.

wafw00f https://target # identifica el WAF (ver web-wafbypass)
# un CDN (Cloudflare) también oculta la IP de origen -> buscarla (recon-asn)

Reducir la huella: ocultar/normalizar cabeceras de versión (Server, X-Powered-By), quitar meta generator, personalizar páginas de error, mantener todo actualizado (que la versión filtrada no sea vulnerable), y no exponer rutas reveladoras. El fingerprinting no se puede impedir del todo, pero sí dificultar.

  • Cabeceras HTTP (Server, X-Powered-By, cookies de sesión)
  • Pistas en HTML/JS (generator, rutas, comentarios)
  • whatweb/httpx/wappalyzer sobre el objetivo
  • CMS y sus plugins/temas identificados (si aplica)
  • Favicon hashing para correlacionar tecnología/origen
  • WAF/CDN identificado (wafw00f)
  • Versiones cruzadas con CVE (searchsploit/nuclei)
  • Decisión de vector según el stack identificado