Penetratietest Laravel: Debug Mode, Mass Assignment en Moderne PHP Beveiliging
Laravel domineert het PHP enterprise backend in Nederland, vooral in e-commerce (WooCommerce alternatieven), startups en gemeentelijke applicaties. Recente kwetsbaarheden zoals CVE-2024-29291 (debug mode RCE), CVE-2024-52301 (env unmasking) en CVE-2018-15133 (deserialisatie APP_KEY) hebben tienduizenden applicaties getroffen. Matproof Sentinel voert gerichte Laravel pentests uit met proof-of-exploit en audit-klare rapporten DORA / NIS2 / ISO 27001 vanaf €149.
Waarom Laravel specifieke pentest competenties vereist
Laravel is het meest geadopteerde PHP framework in Nederland voor e-commerce, gemeenten en SaaS startups. De recente kwetsbaarheden illustreren de structurele risico's. CVE-2024-29291 (CVSS 9.8) stelt Laravel applicaties met APP_DEBUG=true in productie bloot aan directe RCE via Ignition error page. CVE-2024-52301 maakt unmasking van .env waarden mogelijk via config caching manipulatie. CVE-2018-15133 (nog steeds actief in 2024 volgens Synopsys BSIMM 2024) maakt RCE mogelijk via deserialisatie van laravel_session cookie als APP_KEY uitlekt. Daarnaast introduceren Laravel-patronen unieke aanvalsoppervlakken: Eloquent mass assignment met verkeerde $fillable/$guarded, Blade template SSTI, route model binding type juggling. Voor Nederlandse organisaties onder DORA, NIS2/Cbw of AVG Art. 32 is een gedocumenteerde Laravel pentest een standaardelement van compliance.
- CVE-2024-29291 (CVSS 9.8): debug mode RCE via Ignition in productie — directe RCE zonder authenticatie voor applicaties met APP_DEBUG=true.
- CVE-2024-52301: env unmasking via config caching manipulatie — aanvaller kan gevoelige variabelen (DB_PASSWORD, AWS_SECRET, STRIPE_SECRET) verkrijgen.
- CVE-2018-15133: deserialisatie laravel_session cookie als APP_KEY uitgelekt — nog steeds actief in 2024.
- Mass assignment via Eloquent: verkeerde $fillable/$guarded configuratie staat privilege escalation toe (User::create($request->all()) → is_admin=true assignment).
- Blade SSTI: @php / @eval directieven in template met niet-gesaneerde gebruikersinvoer → RCE; Blade @{{ }} bypass via specifieke encoding.
- Laravel Sanctum / Passport JWT: misconfiguratie van scopes, accepteren van vervallen tokens, ontbrekende refresh token rotation.
- Voor Nederlandse applicaties onder DORA Art. 24, NIS2/Cbw of AVG Art. 32 is gedocumenteerde Laravel pentest vereist als bewijs van technische compliance.
Wat we specifiek testen in een Laravel applicatie
- Debug mode in productie (CVE-2024-29291): verificatie APP_DEBUG=false, afwezigheid van Ignition / Whoops error page, custom error handling die geen stack traces lekt.
- Mass assignment kwetsbaarheden: audit van $fillable en $guarded in alle Eloquent modellen, verificatie bescherming tegen mass assignment op gevoelige velden (role, is_admin, balance).
- Blade SSTI: zoeken naar @php / @eval directieven met gebruikersinvoer, test van Blade auto-escape bypass via @{!! !!} ongesaneerd.
- Authentication: Laravel Sanctum / Passport configuratie audit, JWT signing (geen « alg: none »), session cookie flags, password hashing (bcrypt cost ≥ 12).
- Authorization: Laravel Gates en Policies, audit voor ontbrekende authorization op API endpoints, IDOR via route model binding.
- SQL injection via DB::raw / Eloquent: gebruik van raw queries met string concatenation, whereRaw() met gebruikersinvoer, orderBy() met door gebruiker gecontroleerde kolom.
- File upload beveiliging: server-side mime type validatie, path traversal in filename, PHP file uitvoering in upload directory.
- CSRF bescherming: @csrf token verificatie in alle forms, VerifyCsrfToken middleware configuratie, exception list.
- Composition Analysis: composer.lock audit voor CVE in dependencies (laravel/framework, symfony/*, league/*), transitive audit.
- Queue / Horizon: job serialisatie, exposed Horizon dashboard zonder auth, Redis credentials in plaintext.
Voorbeeldbevinding
Debug Mode actief in productie + Ignition blootgesteld — directe RCE (CVE-2024-29291)
De Laravel 10.x applicatie heeft APP_DEBUG=true in productie en Ignition (Laravel's interactieve error page) blootgesteld. CVE-2024-29291 staat een niet-geauthenticeerde aanvaller toe RCE te verkrijgen via het /_ignition/execute-solution endpoint. De test maakte uitvoering van willekeurige shell commando's mogelijk. De volgende werd verkregen: lezen van de volledige .env (DB password, Stripe secrets), shell toegang via system() voor filesystem discovery, mogelijkheid om persistente webshell te schrijven in storage/framework/views/.
Oplossing: Onmiddellijke actie (prioriteit 1): zet APP_DEBUG=false in productie .env en herbouw containers. Update Facade\Ignition naar gepatchte versie ≥ 2.5.2 (Laravel 8) of ≥ 1.16.16 (Laravel 7). Aanvullende acties: voeg middleware toe dat expliciet toegang tot /_ignition/* in productie blokkeert; roteer onmiddellijk alle potentieel uitgelekte secrets uit de .env (DB password, API keys, JWT secrets); audit access logs van /_ignition/* van laatste 90 dagen om potentiële pre-existing compromise te identificeren.
Referentie: CVE-2024-29291 (CVSS 9.8) · CVE-2021-3129 · CWE-489 · OWASP A05:2021 · Laravel Security Best Practices
Pentest Laravel: opties vergeleken
| — | Gratis scan | Matproof Sentinel | Traditionele consultancy |
|---|---|---|---|
| Geautomatiseerde scan-engine | ✓ (3-min preview) | ✓ Volledige scan | ✗ Alleen handmatig |
| OWASP Top 10 dekking | Gedeeltelijk | ✓ 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 scan | 2–4 weken |
| Prijs | €0 | Vanaf €149 | €8.000–€25.000 |
| Broncode-review (SAST) | ✗ | ✓ Growth-plan | ✓ In scope |
| API-tests (REST/GraphQL) | ✗ | ✓ Geautomatiseerd | ✓ Handmatig |
Pentest Laravel pakketten
- 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)
- Onbeperkt scannen (tot 3 domeinen)
- Continue monitoring
- CI/CD-integratie (GitHub, GitLab)
- Alle regulatorische mappings
- Prioriteitsondersteuning
- Onbeperkt scannen + domeinen
- Geauthenticeerde / White-Box tests
- API- en cloud-infrastructuurtests
- Dedicated security account manager
- SLA responstijd 24u
Veelgestelde vragen over Laravel pentest
Welke Laravel versies zijn kwetsbaar voor CVE-2024-29291 (debug mode RCE)?
Alle Laravel applicaties met APP_DEBUG=true in productie en niet-gepatchte Facade\Ignition zijn kwetsbaar. De kwetsbaarheid treft Laravel 7.x, 8.x, 9.x, 10.x. Fix vereist: APP_DEBUG=false + Ignition update.
Testen jullie ook Lumen / Symfony / vanilla PHP applicaties?
Ja. Lumen (Laravel mini-framework) deelt bijna alle Laravel aanvalsoppervlakken. Symfony heeft eigen kwetsbaarheden (Twig SSTI, Doctrine ORM deserialisatie). Vanilla PHP testen we OWASP Top 10 standaard + PHP-specifiek.
Wat zijn de meest voorkomende Laravel patronen voor IDOR en privilege escalation?
Drie dominante patronen: (1) Route model binding zonder authorization — Route::get('/posts/{post}', ...) retourneert het bericht zelfs als het van een andere gebruiker is; (2) Mass assignment op User modellen — User::create($request->all()) staat role/is_admin assignment toe; (3) Eloquent relationships query manipulation.
Hoe lang duurt een volledige Laravel pentest?
Volledige geautomatiseerde scan: 60-90 minuten voor typische Laravel applicatie. Voor complexe applicaties: 2-3 uur. Audit-klaar rapport binnen 24 uur.
Kunnen we Matproof Sentinel integreren in onze Laravel pipeline (Forge, Vapor, Envoyer)?
Ja. Voor Laravel Forge: webhook integratie. Voor Laravel Vapor (AWS Lambda): CloudWatch + post-deployment scan. Voor Envoyer: GitHub Actions integratie. Critical/High findings kunnen deploy blokkeren via branch protection rules.
Is het rapport geaccepteerd voor AVG / NIS2 / Cbw audits in Nederland?
Ja. Het technische rapport levert het bewijs van « adequate technische maatregelen » vereist door AVG Art. 32 en UAVG. Voor Autoriteit Persoonsgegevens (AP) inspecties demonstreert het rapport regelmatig testen en remediation tracking.
Gerelateerde onderwerpen
Meer lezen — gerelateerde blogartikelen
Bescherm uw Laravel applicatie nu
Eerste scan in 3 minuten, volledige Laravel pentest in 60-90 minuten met proof-of-exploit voor elke bevinding. Audit-klaar rapport DORA / NIS2 / ISO 27001 vanaf €149.
Start gratis scan