Nawoord
De terugkeer
Je bent er doorheen. Veertien hoofdstukken. Honderden pagina’s. Tientallen oefeningen. En als je het goed hebt gedaan, heb je nu een fundamenteel ander begrip van hoe het web werkt dan toen je aan dit boek begon.
Dat is geen klein ding.
In het eerste hoofdstuk vergeleken we het web met een stad die gebouwd is zonder bestemmingsplan. Nu, aan het eind van dit boek, ken je die stad. Je kent de steegjes waar niemand komt. Je weet welke deuren niet op slot zitten. Je weet welke ramen op een kier staan. Je weet waar de bewakingscamera’s blinde vlekken hebben en waar de nachtwaker in slaap valt.
Die kennis is krachtig. En met kracht komt, onvermijdelijk, verantwoordelijkheid.
Over verantwoordelijkheid
Er is een moment in de carriere van elke penetratietester waarop je beseft dat je iets kunt doen dat echte schade zou aanrichten. Niet theoretische schade. Niet “er is een risico dat een aanvaller mogelijk zou kunnen…” Nee. Echte schade. Je ziet de kwetsbaarheid. Je hebt de exploit. Je weet dat het werkt. En het enige dat tussen jou en die schade staat, is je eigen ethiek.
Dat moment is het moment waarop je ontdekt of je een professional bent of niet.
Een professional stopt. Documenteert. Rapporteert. Helpt de organisatie om het probleem te verhelpen. Een professional begrijpt dat het doel nooit was om te bewijzen hoe slim hij is, maar om het systeem veiliger te maken voor de mensen die erop vertrouwen.
De technieken die je in dit boek hebt geleerd – SQL Injection, XSS, SSRF, CSRF, XXE, command injection, template injection, path traversal, en alle variaties daarop – zijn geen speelgoed. Het zijn instrumenten. En net als een chirurgisch mes kun je er levens mee redden of levens mee ruineren. Het verschil zit niet in het instrument, maar in de handen die het vasthouden.
Gebruik deze kennis om organisaties te helpen. Gebruik ze om software veiliger te maken. Gebruik ze om de wereld een klein beetje minder kwetsbaar te maken dan hij gisteren was.
Gebruik ze nooit om schade aan te richten.
De ontdekkingsreis
Als je terugkijkt op dit boek, dan was het eigenlijk een ontdekkingsreis. Net als die eerste ontdekkingsreizigers die vertrokken met een vaag idee van wat ze zouden vinden en terugkeerden met kaarten van landen die niemand eerder had gezien.
Je bent begonnen bij de fundamenten: hoe het web werkt, waarom het onveilig is, wat de OWASP Top 10 ons vertelt over de collectieve tekortkomingen van een hele industrie. Je hebt Incompetent Bastard opgezet en je eerste stappen gezet in de cockpit.
Toen ben je de diepte ingegaan. Je hebt geleerd hoe verkenning werkt – hoe je, zonder ook maar een byte kwaadaardige data te versturen, een compleet beeld kunt opbouwen van je doelwit. Je hebt ontdekt dat de meeste informatie die je nodig hebt, gewoon publiek beschikbaar is, als je maar weet waar je moet kijken.
Je hebt injection-aanvallen leren begrijpen – niet als abstracte concepten uit een handboek, maar als echte, werkende exploits die je met eigen ogen hebt zien slagen. Je hebt gezien hoe een enkele quote in een zoekveld kan leiden tot volledige database-extractie. Je hebt gezien hoe een JavaScript payload in een reactieveld cookies kan stelen van elke gebruiker die de pagina bezoekt.
Je hebt geleerd over server-side kwetsbaarheden: SSRF, XXE, SSTI. De aanvallen die niet in de browser plaatsvinden maar op de server, onzichtbaar voor het slachtoffer, en daardoor des te gevaarlijker.
Je hebt geleerd hoe je al deze bevindingen vastlegt, categoriseert, en rapporteert op een manier die niet alleen technisch correct is, maar ook overtuigend genoeg om ervoor te zorgen dat er daadwerkelijk iets mee gedaan wordt.
En dat laatste is misschien wel het belangrijkste. Want een bevinding die in een rapport staat maar nooit wordt opgelost, is geen bevinding. Het is een aansprakelijkheid die wacht om geactiveerd te worden.
De staat van webbeveiliging
Laten we eerlijk zijn over waar we staan. Het is 2026. Het web bestaat meer dan dertig jaar. De OWASP Top 10 wordt al meer dan twintig jaar gepubliceerd. Elke universiteit met een informaticaopleiding docent over veilig programmeren. Er zijn meer beveiligingstools, frameworks, libraries, scanners, en best practices beschikbaar dan ooit tevoren.
En toch.
En toch slaan bedrijven wachtwoorden nog steeds op in plain text. En toch accepteren formulieren SQL in invoervelden. En toch staan admin panels open op het internet met standaard credentials. En toch worden dependencies niet bijgewerkt. En toch wordt input niet gevalideerd. En toch loggen applicaties niet wat ze zouden moeten loggen.
De beveiligingsindustrie genereert miljarden aan omzet per jaar. Er zijn meer conferenties, certificeringen, en trainingen dan je in een mensenleven kunt bijwonen. Er zijn compliance frameworks die dikker zijn dan telefoonboeken (voor de jongere lezers: dat waren papieren boeken met telefoonnummers, en ja, ze waren absurd dik).
En de fundamentele problemen zijn dezelfde als twintig jaar geleden. We hebben fancier gereedschap om dezelfde gaten te vinden die we al decennia kennen. We schrijven langere rapporten over dezelfde kwetsbaarheden. We betalen meer geld aan meer consultants die hetzelfde vertellen.
Het probleem is nooit technisch geweest. De oplossingen zijn er. Ze zijn gedocumenteerd. Ze zijn bewezen. Ze zijn vaak zelfs niet moeilijk te implementeren.
Het probleem is menselijk. Het is de manager die zegt dat beveiliging na de launch wel gefixt wordt. Het is de ontwikkelaar die zegt dat input validation “later” komt. Het is de architect die zegt dat dat ene endpoint “toch alleen intern gebruikt wordt”. Het is de hele organisatie die zegt dat er geen budget is voor beveiliging, terwijl er wel budget is voor de derde herontwerp van de homepage dit jaar.
En daarom zullen penetratietesters nooit zonder werk zitten. Niet omdat de technologie zo complex is, maar omdat mensen zo voorspelbaar zijn in hun nalatigheid.
Doorleren
Dit boek is een begin, geen einde. Het web verandert constant, en de aanvallen veranderen mee. Wat vandaag state-of-the-art is, is morgen een voetnoot.
Hier zijn enkele richtingen om verder te gaan:
Verdieping in specifieke domeinen. Elk hoofdstuk in dit boek had een eigen boek kunnen zijn. SQL Injection alleen al heeft genoeg variaties – blind, time-based, error-based, out-of-band, second-order – om maanden mee bezig te zijn. XSS kent tientallen contexten die elk hun eigen payloads en bypass- technieken vereisen.
Bug bounty programma’s. Dit is een uitstekende manier om legaal en ethisch je vaardigheden te oefenen op echte applicaties. Platforms als HackerOne en Bugcrowd bieden programma’s aan van organisaties die expliciet toestemming geven om hun systemen te testen. Binnen de regels, uiteraard.
CTF’s en labs. Capture the Flag competities en online labs zoals HackTheBox, TryHackMe, en PortSwigger Web Security Academy bieden gecontroleerde omgevingen waarin je kunt oefenen zonder risico.
De OWASP Testing Guide. Dit is het meest uitgebreide referentiewerk voor webapplicatie-penetratietesting. Het is gratis, het is grondig, en het wordt regelmatig bijgewerkt.
De broncode lezen. De beste manier om te begrijpen hoe kwetsbaarheden ontstaan, is door de code te lezen die ze bevat. Open source projecten zijn een onuitputtelijke bron van leermomenten. En ja, dat geldt ook voor de broncode van Incompetent Bastard zelf – het is legacy code met Nederlandse variabelenamen, en dat is op zich al leerzaam.
Het zusterboek
Dit boek gaat over webapplicaties. Maar een webapplicatie bestaat niet in een vacuum. Ze draait op een server, in een netwerk, achter firewalls, naast andere servers, verbonden met databases, gekoppeld aan Active Directory, bereikbaar via VPN’s.
Incompetent Bastards: Het Netwerk behandelt de andere kant van het verhaal: de infrastructuur. Netwerk-penetratietesting, Active Directory-aanvallen, privilege escalation, lateral movement, en alles wat er gebeurt nadat je voorbij de webapplicatie bent.
De twee boeken vullen elkaar aan. Waar dit boek eindigt bij de webapplicatie, begint het zusterboek bij de shell die je via die webapplicatie hebt verkregen. Samen vormen ze een compleet beeld van moderne penetratietesting.
Tot slot
Er is een citaat dat vaak wordt toegeschreven aan verschillende mensen, maar dat er niet minder waar om is: de enige echt veilige computer is een computer die uitstaat, losgekoppeld is van het netwerk, opgesloten zit in een kluis, en bewaakt wordt door gewapende bewakers. En zelfs dan heb ik mijn twijfels.
Het web zal nooit perfect veilig zijn. Daarvoor is het te complex, te groot, en te menselijk. Maar het kan veiliger zijn dan het nu is. En dat is waar jij om de hoek komt kijken.
Elke kwetsbaarheid die je vindt en rapporteert, is een kwetsbaarheid die niet misbruikt wordt door iemand met minder nobele intenties. Elk rapport dat je schrijft, is een kans voor een organisatie om iets te leren en te verbeteren. Elk gesprek dat je voert met een ontwikkelaar over veilig programmeren, is een investering in software die morgen een beetje beter is dan vandaag.
Het is niet spectaculair werk. Het levert zelden voorpaginanieuws op. Niemand maakt een Netflix-documentaire over de pentester die een reflected XSS vond in een contactformulier en dat netjes rapporteerde via het juiste kanaal.
Maar het is belangrijk werk. En iemand moet het doen.
Dus doe het. Doe het goed. Doe het ethisch. En doe het met de nieuwsgierigheid van iemand die oprecht wil begrijpen hoe dingen werken, en de eerlijkheid van iemand die niet bang is om te zeggen dat de keizer geen kleren draagt.
De webapplicaties van morgen wachten op je. Ze zijn waarschijnlijk kwetsbaar.
Ga ze veiliger maken.
“The only truly secure system is one that is powered off, cast in a block of concrete and sealed in a lead-lined room with armed guards.”
En zelfs dan zou ik een pentest aanraden.
Einde van deel 1: De Webapplicatie Wordt vervolgd in: Incompetent Bastards: Het Netwerk