SQL-injecties

SQL-injecties: aanvallen op het hart van je website

Naast brute force aanvallen staan SQL-injecties herhaaldelijk op de lijst van de grootste gevaren voor WordPress websites. Dit zijn relatief eenvoudige manipulaties van de database van je website. Zo krijg je gevoelige gegevens in handen of stel je zelf beheerdersaccounts in en kun je een website naar believen manipuleren. We laten zien hoe de aanval werkt en waarom hij zo gevaarlijk is.

In maart 2008 werden 134 miljoen creditcardgegevens van onder andere het Amerikaanse bedrijf Heartland Payment Systems ontfutseld door een waar meesterbrein. Deze aanval is gebaseerd op een relatief eenvoudig uit te voeren hack die SQL Injection heet. Bij deze aanval wordt toegang verkregen tot de database van een website en daarmee tot alle gegevens van een website. In feite worden SQL-injecties daarom beschouwd als een van de grootste gevaren voor websites – ook en vooral voor mensen die hoofdzakelijk met WordPress werken.

En omdat uiterlijk vanaf WooCommerce vooral ook grotere en complexere shops zonder problemen met WordPress kunnen werken, is het belangrijk te begrijpen hoe groot het risico van een WordPress SQL Injectie is en hoe ze werken.

WordPress SQL-injecties – hoe gevaarlijk zijn ze?

De vraag naar de "gevaarlijkheid" van een WordPress hack kan niet beantwoord worden in de vorm van een enkele indicator. Veeleer moet men minstens twee aspecten in overweging nemen: Ten eerste de kans dat het eigen WordPress-project slachtoffer wordt van zo'n aanval, en ten tweede de schade die een hack kan veroorzaken.

In het geval van brute force aanvallen is het aantal aanvallen per maand zo hoog (in sommige gevallen meer dan 1 miljard gemeten aanvallen + het aantal niet gerapporteerde gevallen) dat je eigenlijk kunt zeggen: Elke WordPress website is vroeg of laat het doelwit van zo'n aanval. De schade die door een geslaagde hack kan worden aangericht is veelvoudig. Brute force aanvallen worden meestal gebruikt om websites te kapen en te integreren in een botnet. Cross-site scripting daarentegen komt veel minder vaak voor, maar wordt vooral gebruikt om websites te infecteren met kwaadaardige code.

De non-profit organisatie Open Web Application Security Project (OWASP) publiceert regelmatig een top 10 lijst van de grootste beveiligingsrisico's voor webapplicaties. In het verleden stonden SQL-injecties altijd op de eerste plaats, maar sinds 2021 staan ze "slechts" op de derde plaats.

In feite zijn SQL-injecties een blijvertje. De hack is al meer dan 20 jaar bekend. Ook de frequentie van SQL-injecties is in de loop der tijd toegenomen.

Wordfence, producent van beveiligingssoftware voor WordPress, komt tot de conclusie dat SQL-injecties vooral voor WordPress-websites een groot gevaar vormen. Een analyse van bijna 1.600 beveiligingslekken in plugins die over een periode van 14 maanden zijn gemeld, laat duidelijk zien dat SQL-injecties het op één na meest voorkomende beveiligingsrisico zijn voor WordPress websites.

WordPress SQL injections Wordfence Analysis
De grafiek laat zien dat SQL-injecties het tweede meest voorkomende beveiligingsrisico zijn voor WordPress websites.

Bij al deze cijfers moet je natuurlijk niet vergeten dat het aantal niet gemelde gevallen veel hoger ligt – SQL-aanvallen worden vaak niet eens opgemerkt en komen niet in de statistieken voor.

De cijfers laten zien dat WordPress SQL-injecties tot de meest voorkomende soorten aanvallen behoren, na brute force aanvallen en XSS kwetsbaarheden. Bovendien richten SQL-injecties zich op een bijzonder gevoelig deel van je website: je database. Vooral voor webwinkels vormen deze hacks een existentiële bedreiging. Daarom is het belangrijk om te begrijpen hoe ze werken en wat je er tegen kunt doen.

WordPress SQL injections richten zich op het hart van je website

Om te begrijpen hoe SQL-injectie werkt, moet je de basisstructuur van WordPress begrijpen. Als je dit al weet, kun je dit gedeelte rustig overslaan.

De database is de basis van elke WordPress installatie: alle inhoud wordt hier opgeslagen. Het CMS zelf maakt het vervolgens mogelijk om deze inhoud weer te geven en te bewerken. WordPress gebruikt een MySQL database. SQL staat voor Structured Query Language, een volwaardige programmeertaal waarmee structuren in een database kunnen worden gemaakt en gegevens kunnen worden ingevoegd, gewijzigd en verwijderd.

Telkens als je een artikel schrijft, een nieuwe categorie aanmaakt, je wachtwoord verandert of een commentaar schrijft, worden deze nieuwe gegevens opgeslagen in de database. Hier wordt elk stukje inhoud op je website opgeslagen.

Wanneer je website wordt geopend en bepaalde inhoud wordt opgevraagd, haalt WordPress de juiste gegevens uit de database, brengt die samen met PHP en maakt een HTML-document dat uiteindelijk naar de browser van de client wordt gestuurd. De client is zich niet bewust van alle processen die tot dan toe plaatsvinden.

SQL injections injecteren externe code in de database

Ook al heb je nooit direct contact met de database, maar alleen met de backend van WordPress, de database is het hart van je website.

Maar zoals gezegd kunnen gebruikers ook gegevens in de database invoeren. Een commentaar schrijven, een gebruikersaccount aanmaken, een contactformulier invullen en versturen – al deze acties genereren gegevens die in de database worden opgeslagen.

Maar wat als iemand deze indirecte toegang tot je database gebruikt om kwaadaardige code naar binnen te smokkelen? Dit heet een SQL-injectie.

Het idee hierachter is niet eens bijzonder ingewikkeld: Als er geen beveiligingsmaatregelen zijn, hoeft de SQL-code alleen in een formulierveld te worden ingevoerd (bijvoorbeeld bij het schrijven van een commentaar). Het bevat tekens die een speciale functie hebben voor de SQL-interpreter, die verantwoordelijk is voor het uitvoeren van SQL-commando's in de database. Zulke speciale tekens, metacharakters genoemd, zijn bijvoorbeeld ; „ ‚ en \.

Het CMS denkt dat het ongevaarlijke gegevens zijn en geeft de invoer zoals gebruikelijk door aan de database met de opdracht die op te slaan. De SQL-interpreter herkent de code op basis van de metacharakters als een actieverzoek en voert de databaseopdracht uit.

Overigens geldt voor SQL-injecties hetzelfde als voor brute force aanvallen: vrijwel niemand zit alleen achter de computer en voert handmatig SQL-codes in formulieren in. Deze aanvallen worden ook uitgevoerd via geautomatiseerde botnets die duizenden websites tegelijk scannen op kwetsbaarheden en toeslaan waar ze er een ontdekken.

Wat kan er nu gebeuren?

  • Alle authenticatiemechanismen worden omzeild of de identiteit van een bestaande gebruiker wordt gebruikt om toegang te krijgen. Als bijvoorbeeld een nieuwe admin-account wordt aangemaakt, wordt dit ook wel een privilege escalation exploit genoemd.
  • Op deze manier kunnen gegevens worden bespioneerd, gewijzigd of verwijderd. Dit is vooral kritisch als je een webwinkel runt en betalingsgegevens hebt.
  • Je kunt ook de controle nemen over je hele website en je webspace. Dit is mogelijk door in te loggen als admin. Via de backend krijg je volledige controle over je website – en zo kan hij worden misbruikt als spammer of in een botnet worden opgenomen, of kan er eenvoudigweg kwaadaardige code worden ingevoerd.

"*" geeft verplichte velden aan

Ik wil me abonneren op de nieuwsbrief om op de hoogte te blijven van nieuwe blogartikelen, ebooks, features en nieuws over WordPress. Ik kan mijn toestemming te allen tijde intrekken. Bekijk ons Privacybeleid.
Dit veld dient ter validatie en mag niet worden gewijzigd.

Conclusie: Vooral door de automatisering WordPress zijn SQL Injecties zeer gevaarlijk.

WordPress SQL-injecties behoren tot de gevaarlijkste hacks van allemaal. Ze zijn gemakkelijk uit te voeren, meestal geautomatiseerd en kunnen enorme schade aanrichten: Vooral voor shops is het gevaar van SQL-injecties existentieel bedreigend vanwege de gegevens in de database.

Daarom is het belangrijk om je website overeenkomstig te beschermen: Elke invoer van buitenaf moet worden gecontroleerd en opgeschoond. Je moet ook gegevens maskeren om de uitvoering van kwaadaardige code te voorkomen. Dit proces heet data sanitization and validation en wordt uitgebreid behandeld in bijvoorbeeld de WordPress Developer Guide.

Uitgebreide beveiligingsplugins zijn ook hier van fundamentele hulp: ze zijn vooral in staat om geautomatiseerde aanvallen op je websites te blokkeren, die de basis vormen voor veel hacks.

Vond je het artikel leuk?

Met jouw beoordeling help je ons om onze inhoud nog verder te verbeteren.

Laat een reactie achter

Je e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *.