← Volver al buscador
Seguridad web Iniciación

Information Disclosure — los 12 patrones que más se pagan

API keys en HTML, debug endpoints, error verbose, JS bundles con secretos, .git expuesto, headers leak. Cómo encontrarlo y por qué se cierra rápido y se paga.

Respuesta rápida

Information Disclosure es cualquier filtración de datos que ayuda al atacante: tokens, paths internos, versiones de librerías, configuración, código fuente, datos de usuarios. Bug bounty programs lo pagan rápido cuando demuestras impacto (acceso a algo de pago, otro usuario, infra interna). Los 12 patrones más rentables están bien definidos — vale la pena hacerse una checklist.


Los 12 patrones que más se reportan

1. API keys en window.CONFIG o equivalente

Apps SPA inyectan estado global en HTML al cargar:

window.CONFIG = { contentful: { ACCESS_TOKEN: "..." }, algolia: { apiKey: "..." } }
window.__INITIAL_STATE__ = { ... }
window.__NEXT_DATA__ = { ... }  // Next.js

Ctrl+U → buscar TOKEN, API_KEY, SECRET. Si encuentras, prueba contra la API real del servicio para ver el alcance.

2. JavaScript bundles con secretos hardcoded

# LinkFinder + SecretFinder sobre los .js
python3 SecretFinder.py -i https://app.target.tld/main.abc123.js

Patrones a grep: aws_access_key, aws_secret, slack_webhook, stripe_secret_key, heroku_api_key, api_token.

3. .git expuesto

curl -sI https://target.tld/.git/HEAD
# Si responde 200 con "ref: refs/heads/main" → .git folder accesible

# Dump completo con git-dumper
git-dumper https://target.tld/.git/ ./loot/

Acceso al historial completo del repo → secretos en commits viejos, código fuente del backend.

4. .env, .bak, .swp accesibles

target.tld/.env
target.tld/config.php.bak
target.tld/.htaccess.bak
target.tld/wp-config.php~

Probar wordlists típicas (raft-medium-files, etc.) en cada subdomain.

5. Stack traces verbose en errores

Forzar errores para ver respuestas:

GET /api/users?id=abc'
GET /api/users?id=null
GET /api/users?id=99999999999999

Si el servidor responde con stack trace incluyendo paths del filesystem (/var/www/app/src/...), versiones de librerías y query SQL → reporte directo.

6. Debug endpoints sin auth

target.tld/debug
target.tld/debug/vars        # Go debug pprof
target.tld/actuator/env       # Spring Boot
target.tld/actuator/heapdump  # crítico — heap dump del JVM
target.tld/.well-known/security.txt
target.tld/__debug__
target.tld/console            # Werkzeug Python debug shell — RCE directo si está

Spring Boot Actuator mal configurado es el clásico. Werkzeug con /console es RCE inmediato.

7. Headers leak

Server: Apache/2.4.6 (CentOS) PHP/5.4.16
X-Powered-By: PHP/5.4.16
X-AspNet-Version: 4.0.30319
X-Debug-Mode: 1
X-Backend-Server: app-prod-01.internal.tld

Versions outdated → CVE chain potencial. Internal hostnames → asset enumeration.

8. CORS misconfig que filtra datos

Si Access-Control-Allow-Origin: * con Access-Control-Allow-Credentials: true → cualquier origen puede leer respuestas autenticadas. Reporta con PoC mostrando lectura cross-site.

9. Verbose responses en endpoints públicos

GET /api/v1/products/123

Respuesta incluye campos no necesarios:

{
  "id": 123,
  "name": "Widget",
  "internal_cost": 12.50,
  "supplier_email": "joao@supplier.tld",
  "stock_db_id": "prod-x42-internal",
  "created_by_uid": 88
}

Internal cost, emails de proveedores, IDs internos — todos info disclosure si no son strictly necessary.

10. Open S3 / Azure / GCP buckets

# S3 enumeration
aws s3 ls s3://target-uploads --no-sign-request
aws s3 ls s3://target-prod --no-sign-request

# Common bucket names
target-backups, target-uploads, target-static, target-dev, target-prod

Buckets públicos con backups, dumps de DB, archivos de usuarios → critical info disclosure.

11. Source maps en producción

target.tld/main.abc123.js.map

Si responde 200, contiene el código fuente original desminificado. Reveals lógica del frontend, endpoints internos, variables que se ofuscan en bundle pero no en map.

12. PII leak via short URLs / tokens predecibles

Endpoints como acortadores de URL, links de invoice, password reset, account confirmation con tokens cortos o predecibles → enumeración expone PII de cientos de usuarios. Patrón con histórico de bounties altos.


Cómo lo encuentras: checklist

[ ] Ctrl+U sobre la home y páginas autenticadas → grep TOKEN/SECRET/KEY
[ ] Análisis de cada .js bundle con LinkFinder + SecretFinder
[ ] Probar /.git, /.env, /.bak, /backup, /admin
[ ] Forzar error: id=', id=null, body malformado, content-type raro
[ ] Probar /debug, /actuator, /__debug__, /pprof, /metrics, /console
[ ] Curl con -I para ver Server / X-Powered-By en cada subdominio
[ ] CORS scan en endpoints autenticados
[ ] Diff entre response autenticado y no autenticado: ¿hay campos extra?
[ ] Enumerar buckets S3/Azure/GCP con nombres derivados del target
[ ] curl <endpoint>.js.map en bundles principales
[ ] Tokens cortos / numéricos en URLs de notificaciones, links transaccionales

Cómo se reporta

El triage exige impacto demostrado, no "este header está, es malo". Para cada finding:

  • Token / API key: una petición HTTP funcional contra la API real que demuestre el alcance (descargar contenido de pago, listar recursos privados).
  • Debug endpoint: capturas o curl mostrando información sensible.
  • Bucket abierto: lista de archivos sensibles + 1 ejemplo descargado.
  • Source maps: screenshot del código fuente original visible.

Sin impacto reproducible, va a Informational. Con impacto claro, suelen pagar entre €100 (low) y €5.000 (critical, según qué se filtra).


Labs relacionados

Practica recon de tokens, debug endpoints y source maps en apps reales: labs de Information Disclosure.

Practica esto en un lab

Information Disclosure

Resolver

Sigue aprendiendo · cuenta gratis

Guarda tu progreso, desbloquea payloads avanzados y rankea tus flags.

Crear cuenta

Artículos relacionados

Gratis$2.000

API keys expuestas en HTML público — $2.000 sin un solo bypass

Una plataforma de productividad entregaba un token de un CMS de terceros en window.CONFIG. Cualquiera con DevTools podía descargar templates de pago. Cómo cazar este patrón en cualquier app SPA.

10 mininformation-disclosureapi-keysjavascript-recon
Leer artículo
Gratis

Metodología de recon básica — del dominio a los endpoints vulnerables

Pipeline mínimo de recon para bug bounty: subdomain enum, live host discovery, URL collection, parameter discovery. Herramientas gratuitas y orden de ejecución.

13 minreconmetodologiasubdomain-enumeration
Leer artículo
Gratis

Análisis JavaScript client-side — endpoints, secrets y source maps

Extracción de endpoints ocultos de JS bundles, detección de secrets, análisis de source maps y dynamic instrumentation con Frida para auditar lógica client-side.

10 minjavascriptreconclient-side
Leer artículo
Nivel básicoToda la Academy

Contenido educativo de Kerb3r0ps. Úsalo solo sobre sistemas para los que tengas permiso. Volver al buscador.