Vulnerabilidad corregida:
- Con 'trust proxy 1', Express usaba X-Forwarded-For como req.ip.
Un atacante podia cambiar ese header en cada peticion para obtener
un bucket de rate limit nuevo, bypasseando el limite de 8 busquedas/min.
Demostrado: 12 requests exitosas cuando el limite era 8.
Mitigacion:
- keyGenerator en todos los rate limiters usa X-Real-IP (establecido por
Nginx con $remote_addr, no manipulable por el cliente).
- trust proxy cambiado de '1' a 'loopback'.
- Verificado: con X-Real-IP fijo y XFF variando, rate limit actua en req 9.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Vulnerabilidad corregida:
- Slowloris: un atacante podía abrir cientos de conexiones TCP enviando
headers/body a goteo (1 byte cada varios segundos) manteniendo el
event loop de Node.js ocupado con sockets colgados indefinidamente,
lo que bloquea peticiones legítimas (DoS por agotamiento de sockets).
Mitigación aplicada en el servidor HTTP:
headersTimeout = 10s — aborta si los headers no llegan en 10 s
requestTimeout = 15s — aborta si el body no llega en 15 s
keepAliveTimeout = 5s — cierra keep-alive inactivos tras 5 s
Adicionalmente: warning al arrancar si SALT no está configurado en .env.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- index.html: sustituye grid de bloques por 6 tabs horizontales
(Cuentas base / Redes sociales / Mensajería / Streaming / Buscadores / Data brokers)
con items como tarjetas en grid responsive
- egosurfing.html: dorking expandido de 12 dorks a ~95 organizados en
10 categorías OSINT profesionales (nombre, email, teléfono, alias,
data brokers, pastes/brechas, registros oficiales, perfil profesional,
geolocalización, archivo histórico) con sistema de tabs dinámico
- erase.js: límites de longitud en campos opcionales (nickname 100,
phone 30, address 300, extra 500) + type-check explícito en email
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Backend:
- Nuevo route GET /api/egosearch con rate limit (8 req/min)
- Usa Google Custom Search API si GOOGLE_API_KEY+CSE_ID configurados
- Fallback a instancias públicas SearXNG con JSON API (sin API key)
- Devuelve top 5: title, url, snippet, domain, engine
Frontend egosurfing.html:
- Barra de búsqueda prominente con 5 modos (nombre/email/usuario/teléfono/libre)
- Resultados en cards: dominio, título, snippet, acciones (ver, RTBF, GDPR)
- RTBF link contextual según el dominio del resultado
- Google dorking rápido: plantillas con 1 clic que se lanzan al buscador
- Herramientas complementarias: HIBP, TinEye, WhatsMyName, formularios RTBF
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Move repo to project root to include both public/ and api/
- Add .gitignore excluding node_modules and .env
- Include API routes (erase, gmail_oauth), services (mailer), and config
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>