NIS2 & DORA van kracht. EU AI Act volgt — boek een demo

Penetratietest Django: ORM Injection, Admin Beveiliging en Python Enterprise Security

Django is het meest volwassen Python framework (2005+), in Nederland veel gebruikt voor: overheidsportalen (DigiD integraties), universitaire CMS, enterprise booking systemen. Recente kwetsbaarheden zijn CVE-2024-45230 (strip_tags DoS), CVE-2024-39614 (denylist bypass), CVE-2023-43665 (truncatechars_html DoS). Matproof Sentinel voert gerichte Django pentests uit met proof-of-exploit en audit-klaar rapport vanaf €149.

Start gratis scan
MW
Geschreven door Malte Wagenbach
Oprichter van Matproof Security. Gespecialiseerd in AI-gestuurde penetratietests en EU-compliance (DORA, NIS2, BIO, ISO 27001).
Laatst beoordeeld: 17 mei 2026

Waarom Django specifieke pentest vereist

Django is het meest volwassen Python framework, in Nederland veel gebruikt voor: overheid portalen (DigiD), universitaire CMS, enterprise systemen, applicaties met complexe backends. Zijn volwassenheid is een voordeel (security by default, type-safe ORM), maar de vastheid van het framework introduceert specifiek aanvalsoppervlak: Django Admin blootgesteld is attack vector #1 (user enumeration, brute-force), SECRET_KEY leak via DEBUG=True veroorzaakt session forgery, ORM staat raw queries met concatenation toe die SQL injection veroorzaken, en template tags kunnen SSTI mogelijk maken in bepaalde patronen. Recente CVE's illustreren risico's. Voor Nederlandse organisaties met Django (overheid, universiteiten, enterprise), is gedocumenteerde Django pentest essentieel voor AVG Art. 32 compliance.

  • CVE-2024-45230 (Django < 4.2.16/5.0.9): DoS via strip_tags template filter op grote input — exploitable in elk template met {{ user_input|striptags }}.
  • CVE-2024-39614 (Django < 4.2.14/5.0.7): denylist bypass in safestring filter — staat XSS toe in templates die safestring gebruiken voor content die geëscaped zou moeten worden.
  • CVE-2023-43665 (Django < 4.2.6): DoS via truncatechars_html template filter — exploitable in templates die user-provided HTML truncaten.
  • Django Admin enumeration: /admin/login/ staat user enumeration toe via timing-side-channel, brute-force zonder default rate limiting.
  • SECRET_KEY leak: DEBUG=True in productie exposeert SECRET_KEY in error pages — leak staat session cookie forgery, signed URL forgery toe.
  • Django Templates SSTI: custom template tags met eval() of exec() op gebruikersinvoer, custom safestring met auto-escape bypass.
  • Voor Nederlandse PA applicaties (DigiD, e-Herkenning), is Django pentest prerequisite voor Logius compliance.

Wat we specifiek testen in een Django applicatie

  • CVE detection: Django < 4.2.16/5.0.9 (CVE-2024-45230), < 4.2.14/5.0.7 (CVE-2024-39614), < 4.2.6 (CVE-2023-43665).
  • Django Admin: user enumeration via timing, brute-force protection (django-axes), 2FA enforcement, IP whitelist.
  • SECRET_KEY exposure: DEBUG=True detection in productie (anti-pattern), SECRET_KEY in plaintext in settings.py committed.
  • ORM injection: raw() queries met string concatenation, extra() met select, RawSQL, Q objects met SQL injection.
  • Template SSTI: custom template tags met eval/exec, safestring auto-escape bypass, |safe filter toegepast op gebruikersinvoer.
  • Django REST Framework (DRF): ViewSet permissions, serializer fields blootgesteld die niet zouden moeten, DRF Browsable API in productie blootgesteld.
  • Authentication: django.contrib.auth met weak password hasher, session_engine secure (DB vs cache vs signed cookie).
  • CSRF: csrf_exempt overmatig gebruik, CSRF token in JSON API zonder Origin header validation.
  • File upload: server-side MIME type validatie, path traversal in upload_to, Python file execution in MEDIA_ROOT.
  • Composition Analysis: requirements.txt + Pipfile.lock voor CVE in Django + dependencies (psycopg, Pillow, requests).

Voorbeeldbevinding

Kritiek

Django DEBUG=True in productie — SECRET_KEY leak via 500 error page

De Django applicatie heeft DEBUG=True in productie (gedetecteerd door bezoek aan niet-bestaand URL). Django 500 pagina met DEBUG=True exposeert: (1) volledige settings inclusief SECRET_KEY, DATABASE configuratie met credentials in plaintext, EMAIL_HOST_PASSWORD; (2) stack trace met interne file paths; (3) Python environment; (4) local variables van elk stack frame inclusief alle request data. SECRET_KEY is bijzonder kritiek: staat session cookie forgery, signed URLs forgery (password reset, email confirmation), CSRF token toe. Test maakte mogelijk: session cookie forgery voor elke user, password reset URL generation voor elk e-mailadres, lezen van alle configuraties.

Oplossing: Onmiddellijke actie (prioriteit 1): zet DEBUG=False in productie en herbouw containers:\n\nDEBUG = os.environ.get('DJANGO_DEBUG', 'False').lower() == 'true'\nALLOWED_HOSTS = ['matproof.com', 'www.matproof.com']\n\nAanvullende acties: roteer onmiddellijk SECRET_KEY (force re-login alle users, invalideer alle password reset links); roteer DATABASE_PASSWORD, EMAIL_HOST_PASSWORD; configureer error reporting via Sentry/Rollbar om 500s te beheren zonder details te exposeren; audit access log van alle accesses naar niet-bestaande URLs van laatste 90 dagen.

Referentie: CWE-489 · CWE-200 · OWASP A05:2021 · Django Security Documentation

Pentest Django: opties vergeleken

Gratis scanMatproof SentinelTraditionele consultancy
Geautomatiseerde scan-engine✓ (3-min preview)✓ Volledige scan✗ Alleen handmatig
OWASP Top 10 dekkingGedeeltelijk✓ Volledig✓ Volledig
Proof-of-exploit bewijs✓ Per bevinding✓ Per bevinding
Regulatorische mapping (DORA/NIS2/ISO 27001)✓ Geautomatiseerd✓ Handmatig
Audit-geschikt PDF-rapport✓ Direct✓ 2–4 weken levertijd
Continue / terugkerende scans✓ Per deploy✗ Jaarlijkse opdracht
Tijd tot eerste resultaat~3 min~30 min volledige scan2–4 weken
Prijs€0Vanaf €149€8.000–€25.000
Broncode-review (SAST)✓ Growth-plan✓ In scope
API-tests (REST/GraphQL)✓ Geautomatiseerd✓ Handmatig

Pentest Django pakketten

Losse scan
€149 eenmalig
  • 1 volledige penetratietest-scan
  • AI-geprioriteerde bevindingen met CVSS 3.1
  • Proof-of-exploit per bevinding
  • PDF-rapport (geschikt voor audit)
  • Regulatorische mapping (DORA, NIS2, ISO 27001)
Losse scan kopen
Aanbevolen
Starter
€299 / maand
  • Onbeperkt scannen (tot 3 domeinen)
  • Continue monitoring
  • CI/CD-integratie (GitHub, GitLab)
  • Alle regulatorische mappings
  • Prioriteitsondersteuning
Start met Starter
Growth
€799 / maand
  • Onbeperkt scannen + domeinen
  • Geauthenticeerde / White-Box tests
  • API- en cloud-infrastructuurtests
  • Dedicated security account manager
  • SLA responstijd 24u
Contact voor Growth

Veelgestelde vragen over Django pentest

Hoe testen jullie Django Admin specifiek?

Django Admin is attack target #1 voor Django apps. Wij testen: user enumeration via timing side-channel, brute-force protection (django-axes), 2FA enforcement, IP whitelist op /admin/, audit log van admin access, CSRF op admin actions.

Testen jullie ook Django REST Framework / Django Ninja / Django Async?

Ja. DRF heeft specifieke permission audit, throttle_classes, serializer fields validation. Django Ninja (FastAPI-style) deelt FastAPI risico's. Django Async views vereisen specifieke race conditions testing.

Hoe gaan jullie om met Django + Celery / Redis background tasks?

Celery tasks met gebruikersinvoer kunnen code injection veroorzaken. Wij testen: pickle serialisatie (anti-pattern, enables RCE), task chain met shared state, Redis publieke exposure.

Voor Nederlandse PA Django applicaties (DigiD, e-Herkenning), testen jullie integratie?

Ja. DigiD OAuth2 flow heeft specifieke validatie eisen (SAML signature, AssertionConsumerService URL whitelist). e-Herkenning heeft eIDAS-based authentication. Wij testen beide flows voor misconfiguraties.

Hoe lang duurt een volledige Django pentest?

60-90 minuten voor typische Django applicatie. Voor complexe multi-tenant applicaties: 2-3 uur.

Is het rapport geaccepteerd voor AVG / Logius audits in Nederland?

Ja. Expliciete mapping naar AVG Art. 32 + UAVG + Logius richtlijnen voor PA security. Voor DigiD/e-Herkenning applicaties dekt het rapport specifieke Logius security questionnaire.

Gerelateerde onderwerpen

Meer lezen — gerelateerde blogartikelen

Bescherm uw Django applicatie nu

Eerste scan in 3 minuten, volledige Django pentest in 60-90 minuten. Audit-klaar rapport AVG / DORA vanaf €149.

Start gratis scan