Eerste hulp bij hacken. Zo steel je wachtwoorden en creditcardgegevens
Een van de meestgebruikte manieren om gevoelige informatie te stelen, is het injecteren van kwaadaardige code in websites. Hoe werkt dit?
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.