Checklists

Checklist de testing de aplicaciones web

#appsec#web

Nota tecnica de ciberseguridad.

Checklist práctica para pruebas web (manual + herramientas). Adaptar al alcance y permisos.

Preparación

  • Alcance definido (in-scope / out-of-scope, fechas, límites, DoS prohibido).
  • Entorno y cuentas (roles) disponibles; datos de prueba aprobados.
  • Evidencia: carpeta/nota de lab para capturas, logs, requests/responses relevantes.
  • Referencias: OWASP ASVS/Testing Guide (si aplica)

Reconocimiento y mapeo

  • Identificar dominios/subdominios, endpoints, rutas, APIs y métodos HTTP.
  • Enumerar parámetros y fuentes de input (query, body, headers, cookies, uploads).
  • Identificar tecnologías (framework, servidor, WAF/CDN, auth provider).
  • Revisar headers de seguridad y caching (HSTS, CSP, cookies, cache-control).

Autenticación

  • Política de contraseñas y MFA (si aplica).
  • Brute force / password spraying protegido (rate limit, lockout, captcha, IP reputation).
  • Recuperación de cuenta: no filtra existencia de usuario; tokens expiran; enlaces single-use.
  • Cambios sensibles requieren re-auth (password/MFA) (p.ej., cambio email, 2FA).

Autorización (control de acceso)

  • IDOR/BOLA: acceder a recursos de otros usuarios (IDs incrementales, UUID, referencias).
  • Roles: endpoints admin inaccesibles a usuarios estándar.
  • Vertical/horizontal privilege escalation.
  • Verificar control en backend (no confiar en UI).

Sesión y cookies

  • Cookies HttpOnly, Secure, SameSite adecuadas.
  • Tokens rotan en login y tras elevación de privilegios; invalidación en logout.
  • Session fixation: el ID cambia tras autenticación.
  • Timeouts: idle + absolute; manejo de refresh tokens si hay OIDC.

Validación de entrada y parsing

  • SQL Injection (incluye blind/time/error-based según DB).
  • XSS (reflected/stored/DOM) + CSP efectiva.
  • Command injection / template injection / deserialization (si stack aplica).
  • SSRF: validación estricta de destinos, allowlists, metadata IPs (cloud).
  • Path traversal / LFI/RFI.
  • File upload: tipo/MIME/extensión, content sniffing, tamaño, AV, storage aislado.

Configuración y exposición

  • Debug habilitado / stack traces / errores verbosos.
  • Secrets en frontend, repos o endpoints (API keys, tokens).
  • Directorios sensibles, backups, .env, paneles admin expuestos.
  • CORS: orígenes estrictos, credenciales controladas.

Criptografía y datos sensibles

  • TLS correcto (no mixed content, cookies Secure, HSTS donde aplique).
  • Datos sensibles no en logs/client-side; masking.
  • Hash de contraseñas robusto (Argon2/bcrypt/scrypt) — si se puede verificar.
  • Gestión de claves/rotación (KMS/secret manager) — si aplica.

Lógica de negocio

  • Cambios de precio/cantidad/stock en cliente no confiables.
  • Race conditions (doble gasto, overbooking).
  • Flujos críticos (checkout, reset password, OTP) con validaciones server-side.

Observabilidad y respuesta

  • Logs de autenticación/autoridad/cambios sensibles existen.
  • Alertas por patrones (fallos repetidos, accesos anómalos).
  • Evidencia de mitigación (WAF rules, detecciones SIEM) — si existe SOC.

Cierre

  • Hallazgos documentados con evidencia (request/response, pasos, impacto).
  • Severidad contextual (activo, exposición, exploitabilidad, impacto).
  • Recomendaciones accionables (parche, config, control compensatorio).
Título original en mis apuntes: Web App Testing Checklist (OWASP-inspired)