Test de Penetración Django: ORM Injection, Admin Security y Seguridad Python Enterprise
Django es el framework Python más maduro (2005+), particularmente usado en España para: portales del sector público (Cl@ve, Tu Cuenta), CMS universitarios, sistemas de booking enterprise. Las vulnerabilidades recientes incluyen CVE-2024-45230, CVE-2024-39614, CVE-2023-43665. Matproof Sentinel realiza pentests Django dirigidos con informe audit-ready desde 149 €.
Por qué Django requiere pentest específico
Django es el framework Python más maduro, particularmente usado en España para: portales públicos (Cl@ve, sistemas Universidad), CMS, sistemas booking. Su madurez es una ventaja (security by default, ORM type-safe), pero introduce superficie d'ataque específica: Django Admin expuesto es vector #1, SECRET_KEY leak via DEBUG=True causa session forgery, ORM permite raw queries con SQL injection. CVE recientes ilustran riesgos. Para organizaciones españolas con Django, un pentest documentado es esencial para RGPD Art. 32 compliance.
- CVE-2024-45230 (Django < 4.2.16/5.0.9): DoS via strip_tags template filter.
- CVE-2024-39614 (Django < 4.2.14/5.0.7): denylist bypass en safestring filter.
- CVE-2023-43665 (Django < 4.2.6): DoS via truncatechars_html template filter.
- Django Admin enumeration: /admin/login/ permite user enumeration via timing.
- SECRET_KEY leak: DEBUG=True en producción expone SECRET_KEY.
- Django Templates SSTI: custom template tags con eval/exec.
- Para aplicaciones españolas PA (Cl@ve, Tu Cuenta), pentest Django es prerequisite ENS compliance.
Qué testeamos específicamente en una aplicación Django
- CVE detection: Django < 4.2.16/5.0.9 (CVE-2024-45230), < 4.2.14/5.0.7, < 4.2.6.
- Django Admin: enumeración usuarios via timing, brute-force protection, 2FA, IP whitelist.
- SECRET_KEY exposure: DEBUG=True detection en producción.
- ORM injection: raw() queries con concatenation, extra() con select, RawSQL.
- Template SSTI: custom template tags con eval/exec, safestring bypass.
- Django REST Framework: permissions por ViewSet, serializer fields exposed.
- Authentication: django.contrib.auth con password hasher weak.
- CSRF: csrf_exempt overuse, CSRF token en JSON API sin Origin header validation.
- File upload: validación MIME type lado servidor, path traversal en upload_to.
- Composition Analysis: requirements.txt + Pipfile.lock para CVE.
Ejemplo de hallazgo
Django DEBUG=True en producción — SECRET_KEY leak via página error 500
La aplicación Django tiene DEBUG=True en producción. La página 500 con DEBUG=True expone: settings completo incluido SECRET_KEY, configuración DATABASE con credentials, EMAIL_HOST_PASSWORD; stack trace con paths; ambiente Python; local variables. SECRET_KEY permite forgery de session cookie, signed URLs, CSRF token. Test permitió: forgery session cookie cualquier usuario, generar password reset URL cualquier email.
Corrección: Acción inmediata: establecer DEBUG=False en producción:\n\nDEBUG = os.environ.get('DJANGO_DEBUG', 'False').lower() == 'true'\nALLOWED_HOSTS = ['matproof.com', 'www.matproof.com']\n\nAcciones complementarias: rotar inmediatamente SECRET_KEY (force re-login todos los usuarios); rotar DATABASE_PASSWORD, EMAIL_HOST_PASSWORD; configurar error reporting via Sentry/Rollbar; auditoría access log últimos 90 días.
Referencia: CWE-489 · CWE-200 · OWASP A05:2021 · Django Security Documentation
Pentest Django: opciones comparadas
| — | Escaneo gratuito | Matproof Sentinel | Consultoría tradicional |
|---|---|---|---|
| Motor de escaneo automatizado | ✓ (vista previa 3 min) | ✓ Escaneo completo | ✗ Solo manual |
| Cobertura OWASP Top 10 | Parcial | ✓ Completa | ✓ Completa |
| Evidencia proof-of-exploit | ✗ | ✓ Por hallazgo | ✓ Por hallazgo |
| Mapeo normativo (DORA/NIS2/ISO 27001) | ✗ | ✓ Automatizado | ✓ Manual |
| Informe PDF listo para auditoría | ✗ | ✓ Inmediato | ✓ Entrega 2–4 semanas |
| Escaneos continuos / recurrentes | ✗ | ✓ Por despliegue | ✗ Encargo anual |
| Tiempo hasta el primer resultado | ~3 min | ~30 min escaneo completo | 2–4 semanas |
| Precio | €0 | Desde €149 | €8.000–€25.000 |
| Revisión de código fuente (SAST) | ✗ | ✓ Plan Growth | ✓ En alcance |
| Pruebas de API (REST/GraphQL) | ✗ | ✓ Automatizado | ✓ Manual |
Paquetes Pentest Django
- 1 escaneo pentest completo
- Hallazgos priorizados por IA con CVSS 3.1
- Proof-of-exploit por hallazgo
- Informe PDF listo para auditoría
- Mapeo normativo (DORA, NIS2, ISO 27001)
- Escaneos ilimitados (hasta 3 dominios)
- Monitorización continua
- Integración CI/CD (GitHub, GitLab)
- Todos los mapeos normativos
- Soporte prioritario
- Escaneos + dominios ilimitados
- Pruebas autenticadas / White-Box
- Pruebas de API e infraestructura cloud
- Account manager de seguridad dedicado
- SLA de respuesta en 24h
Preguntas frecuentes sobre el pentest Django
¿Cómo testean Django Admin específicamente?
Django Admin es target #1. Testeamos: enumeración usuarios via timing, brute-force protection (django-axes), 2FA enforcement, IP whitelist, audit log accesos admin.
¿Testean también Django REST Framework / Django Ninja / Django Async?
Sí. DRF tiene specific permission audit. Django Ninja (FastAPI-style) comparte riesgos FastAPI. Django Async views requieren race conditions testing específicas.
¿Cómo gestionan Django con celery / Redis background tasks?
Celery tasks con user input pueden code injection. Testeamos: pickle serialización (anti-pattern), task chain con shared state, Redis exposure pública.
Para aplicaciones Django PA españolas (Cl@ve, Tu Cuenta), ¿testean la integración?
Sí. Cl@ve OAuth2 flow tiene specific validation requirements. Tu Cuenta integration. Testeamos ambos flows para misconfiguraciones.
¿Cuánto tiempo requiere un pentest Django completo?
60-90 minutos para aplicación Django típica. Para multi-tenant complejas: 2-3 horas.
¿El informe es aceptado para ENS / AEPD compliance en España?
Sí. Mapeo explícito RGPD Art. 32 + LOPDGDD + ENS Real Decreto 311/2022. Para aplicaciones Cl@ve/Tu Cuenta, cubre security questionnaire ENS.
Temas relacionados
Profundiza — artículos relacionados del blog
Proteja su aplicación Django ahora
Primer escaneo en 3 minutos, pentest Django completo en 60-90 minutos. Informe audit-ready RGPD / LOPDGDD / ENS desde 149 €.
Iniciar escaneo gratuito