Als de hacker in zijn opzet was geslaagd, waren de Zweedse landelijke verkiezingen van 2010 desastreus verlopen.

In Zweden kunnen kiesgerechtigden stemmen door een naam van een partij of kandidaat op een blanco biljet te schrijven. Die handgeschreven biljetten worden vervolgens door een computer ingelezen, waarna de keuze wordt geregistreerd in een database. Een slimme hacker probeerde daar in 2010 misbruik van te maken door een zinnetje toe te voegen aan zijn stem:
pwn DROP TABLE VALJ
Dit is geen Zweeds, maar SQL, een computertaal die gebruikt wordt voor het beheer van databases. Met dit zinnetje probeerde de hacker een commando te geven aan de database: verwijder de tabel waarin mijn stem wordt geladen. Als de computer braaf het commando had uitgevoerd, waren mogelijk heel veel stemmen verloren gegaan.
Een voorbeeld van een vaak voorkomende hack: SQL injection.
De grootste dreiging op het web
Vrijwel alle websites slaan informatie op in databases. Plaatjes, tekst, pagina’s, producten en prijzen. Maar ook gebruikersgegevens, wachtwoorden en betaalinformatie. Verreweg de meeste websites maken hiervoor gebruik van een SQL-database.
Het injecteren van kwaadaardige SQL-code in zo’n database, prijkt al jaren op nummer één van de veiligheidsproblemen op het web.
Een paar voorbeelden:
- In juli van dit jaar claimden anti-abortusactivisten dat ze databases en personeelsinformatie van Planned Parenthood hadden gestolen door middel van SQL injection.
- Een hacker van het collectief Anonymous brak in mei van dit jaar in bij de Wereldhandelsorganisatie en ging ervandoor met gebruikersnamen, adresgegevens en informatie over sollicitatieprocedures.
- Afgelopen jaar werd aangetoond dat Magento, Drupal en WordPress, drie grote platforms waarop honderdduizenden websites worden gebouwd, kwetsbaar waren voor SQL injections. Hoewel de platforms vaak beveiligingsupdates verzorgen, zijn de websitebeheerders zelf verantwoordelijk voor het implementeren ervan. Veel sites blijven daarom kwetsbaar.
- En tot slot een aantal organisaties dat de afgelopen jaren met SQL injections te kampen heeft gehad: Tesla, de FBI, NASA, een aantal grote Amerikaanse zorgverzekeraars, Adobe, The Wall Street Journal, Sony, Nokia, Visa, eHarmony, en nog veel meer.
SQL injections komen zo vaak voor omdat ze makkelijk uit te voeren zijn. Je kunt met een simpele Google-zoekopdracht websites vinden die kwetsbaar zijn. Ook zijn er tools beschikbaar die je zoektocht naar kwetsbare sites kunnen automatiseren.
Als je eenmaal een kwetsbare website hebt gevonden, kun je met SQL injection verrassend veel informatie stelen. Ook wordt SQL injection gebruikt om informatie op websites te veranderen (zoals prijzen in een webshop), of zelfs te vernietigen (zoals met het DROP TABLE-commando in de Zweedse verkiezingen).
Maar hoe werkt een SQL injection?




































Met onze lezershackersclub hebben we ook een aantal aanvallen op SQL-databases uitgevoerd. We hebben hiervoor geen echte websites gebruikt, maar een oefensite, de Damn Vulnerable Web App. Sommige lezers slaagden erin om er fictieve wachtwoorden en creditcardgegevens uit te halen.
In de video hieronder laat ik zien hoe je de oefensite zover krijgt om alle wachtwoorden in de database uit te spugen. Aan het einde zal ik ook nog laten zien hoe je de verkregen wachtwoorden (die versleuteld zijn) kunt kraken. Tot slot is het nog aardig om te vermelden dat je het invoeren van commando’s ook kunt automatiseren, bijvoorbeeld door een programma als SQLmap te gebruiken.
Ik wil nog even benadrukken dat het uitvoeren van SQL injections strafbaar is. Als je wilt oefenen, gebruik dan een oefensite zoals de Damn Vulnerable Web App of Hack Yourself First, van beveiligingsonderzoeker en blogger Troy Hunt.


En als je zelf niet gehackt wilt worden? Dan kun je een aantal dingen doen. Als beheerder van de website moet je ervoor zorgen dat niet zomaar allerlei commando’s worden geaccepteerd. Daarnaast zul je er goed op moeten letten dat de webapplicatie niet zomaar alles aan de database kan vragen. Dit vereist wel enige kennis van webapplicaties en databases. Voor de gemiddelde website-eigenaar is dit veel gevraagd. Je kunt hopelijk de ergste lekken voorkomen door regelmatig je software te updaten. Als je echt de diepte in wilt gaan, dan kun je terecht op de website van OWASP, waar best practices beschreven staan. Maar de kans dat SQL injections voorlopig nog op de nummer één van bedreigingen zullen staan, is behoorlijk groot.
Strip door Rob van Barneveld.
Eerder in deze serie:


…dit verhaal heb je gratis gelezen. Maar het maken van dit verhaal kost tijd, geld en energie. Steun ons en maak meer verhalen mogelijk voorbij de waan van de dag.
Al vanaf het begin worden we gefinancierd door onze leden en zijn we volledig advertentievrij en onafhankelijk. We maken diepgravende, verbindende en optimistische verhalen die inzicht geven in hoe de wereld werkt. Zodat je niet alleen begrijpt wat er gebeurt, maar ook waarom het gebeurt.
Juist nu in tijden van toenemende onzekerheid en wantrouwen is er grote behoefte aan verhalen die voorbij de waan van de dag gaan. Verhalen die verdieping, verbinding en optimisme brengen. Verhalen niet gericht op het sensationele, maar op het fundamentele. Dankzij onze leden kunnen wij verhalen blijven maken voor zoveel mogelijk mensen. Steun ons en doe mee!