Testing de Seguridad para Ingenieros QA
El testing de seguridad no es solo para pentesters. QA encuentra funcionalidades de seguridad diariamente: formularios de login, campos de entrada, endpoints API y cargas de archivos. Entender vulnerabilidades comunes te hace un tester más efectivo.
OWASP Top 10
| Riesgo | Enfoque de Testing QA |
|---|---|
| Inyección (SQL, XSS) | Probar campos con caracteres especiales |
| Auth roto | Probar flujos de auth exhaustivamente |
| Exposición de datos sensibles | Verificar HTTPS, headers, almacenamiento |
| Control de acceso roto | Probar acceso basado en roles |
| Mala configuración de seguridad | Verificar páginas de error, headers |
| XSS | Probar todos los inputs de usuario |
| CSRF | Verificar tokens CSRF |
Testing de XSS
Payloads Básicos
Prueba en cada campo de entrada, búsqueda, parámetro URL y campo de perfil:
<script>alert('XSS')</script>
"><script>alert('XSS')</script>
<img src=x onerror=alert('XSS')>
<svg onload=alert('XSS')>
Dónde Probar
- Barras de búsqueda, campos de comentarios, campos de perfil, parámetros URL, nombres de archivos subidos, mensajes de error
Testing de CSRF
- Encuentra una acción que cambia estado (cambiar contraseña, actualizar perfil)
- Inspecciona el formulario — busca campo CSRF token
- Envía normalmente — debe funcionar
- Elimina o modifica el token — la solicitud debe rechazarse
- Repite desde otro origen — debe rechazarse
Testing de Headers de Seguridad
curl -I https://example.com
| Header | Valor Esperado | Propósito |
|---|---|---|
Strict-Transport-Security | max-age=31536000 | Forzar HTTPS |
X-Content-Type-Options | nosniff | Prevenir MIME sniffing |
X-Frame-Options | DENY | Prevenir clickjacking |
Content-Security-Policy | Política restrictiva | Prevenir XSS |
Ejercicio: Auditoría de Seguridad Web
Parte 1: Testing XSS
| Ubicación | Payload | ¿Se ejecutó? | ¿Vulnerable? |
|---|---|---|---|
| Búsqueda | <script>alert(1)</script> | ||
| Nombre de perfil | <img src=x onerror=alert(1)> | ||
| Comentarios | <svg onload=alert(1)> | ||
| Parámetro URL | ?q="><script>alert(1)</script> |
Parte 2: Testing CSRF
| Prueba | Esperado | Resultado |
|---|---|---|
| Formulario tiene token CSRF | Token presente | |
| Envío con token válido | Éxito | |
| Envío sin token | Rechazo (403) | |
| Envío con token modificado | Rechazo |
Parte 3: Security Headers
| Header | ¿Presente? | Valor | ¿Correcto? |
|---|---|---|---|
| Strict-Transport-Security | |||
| X-Content-Type-Options | |||
| Content-Security-Policy |
Parte 4: Seguridad de Autenticación
| Prueba | Esperado | Resultado |
|---|---|---|
| Login con payload SQL injection | Login falla normalmente | |
| Error de login no revela si email existe | Mensaje genérico | |
| Cookie de sesión tiene HttpOnly | No accesible vía JS | |
| Cookie de sesión tiene Secure | Solo por HTTPS |
Solución: Hallazgos Comunes de Seguridad
Hallazgo 1: XSS reflejado en búsqueda. Input sin encoding. Corrección: HTML-encode todo input de usuario.
Hallazgo 2: Sin CSRF token en actualización de perfil. Corrección: Agregar CSRF token a todos los formularios.
Hallazgo 3: Headers de seguridad faltantes. Sin CSP ni HSTS. Corrección: Agregar headers a todas las respuestas.
Hallazgo 4: Cookie de sesión sin HttpOnly. Accesible vía document.cookie. Corrección: Agregar flag HttpOnly.
Hallazgo 5: Mensajes de error verbosos. Errores SQL mostrados en login. Corrección: Mensajes genéricos, detalles solo en logs del servidor.
Herramientas de Testing de Seguridad para QA
| Herramienta | Propósito | Complejidad |
|---|---|---|
| DevTools del navegador | Inspección de headers, cookies | Baja |
| OWASP ZAP | Scanner automatizado | Media |
| SecurityHeaders.com | Verificación rápida de headers | Baja |
| Mozilla Observatory | Escaneo de seguridad completo | Baja |
Puntos Clave
- QA puede y debe realizar testing básico de seguridad en cada funcionalidad
- Prueba todos los inputs para XSS — búsquedas, perfiles, comentarios, parámetros URL
- Verifica protección CSRF en cada acción que cambia estado
- Revisa security headers en cada deployment
- Las cookies de sesión deben tener HttpOnly y Secure
- Usa OWASP Top 10 como checklist para planificación de testing de seguridad