SQL-Injecties: aanvallen op het hart van je site

Tobias Schüring Laatst bijgewerkt op 15.01.2020
6 Min.
SQL-injecties

Naast deBrute Force aanvallen zijn er steeds weer WordPress SQL Injecties staan op de lijst van de grootste gevaren voor WordPress sites. Dit zijn relatief eenvoudige manipulaties van de database van uw pagina's. Hackers kunnen gevoelige gegevens in handen krijgen of hun eigen beheeraccounts opzetten en uw site naar believen manipuleren. We laten zien hoe de aanval werkt en waarom hij zo gevaarlijk is.

Maart 2008: Hackers (waaronder overigens een echt meesterbrein) bemachtigen 134 miljoen kredietkaartgegevens van het Amerikaanse bedrijf Heartland Payment Systems. Medio 2016: vermoedelijke Russische hackers krijgen toegang tot de database met geregistreerde kiezers van de Illinois State Board of Elections. Hetzelfde gebeurt in Arizona. Februari 2017: Gegevens van 65.000 gebruikersaccounts worden gestolen van de Amerikaanse wapenverkoper Airsoft GI. Maart 2017: Vermoedelijke Chinese hackers bemachtigen de persoonlijke gegevens van 4.000 klanten van een Koreaanse app en sturen sms-berichten, waarvan sommige obsceen, naar de slachtoffers.

Al deze aanvallen hebben één ding gemeen: er zit een relatief eenvoudige hack achter die SQL-injectie wordt genoemd. Bij deze aanval krijgen hackers toegang tot de database en dus tot alle gebruikersgegevens van een pagina. In feite worden SQL-injecties daarom beschouwd als een van de grootste gevaren voor websitebeheerders. Ook en vooral voor webmasters die voornamelijk werken met WordPress.

En aangezien, ten laatste sinds WooCommerce , vooral grotere en complexere winkels zonder problemen kunnen worden bediend met WordPress , is het belangrijk het risico van WordPress SQL Injection te begrijpen en te weten hoe het werkt.

Hoe "gevaarlijk" zijn WordPress SQL Injecties?

De vraag naar de "gevaarlijkheid" van een hack op WordPress kan niet worden beantwoord aan de hand van één enkele indicator. In plaats daarvan moet men ten minste twee aspecten in aanmerking nemen: Enerzijds de waarschijnlijkheid waarmee het eigen WordPress -WordPress -project het slachtoffer kan worden van een dergelijke aanval, en anderzijds de schade die een hack kan aanrichten.

Bij Brute Force aanvallen bijvoorbeeld is het aantal aanvallen per maand zo hoog (in sommige gevallen meer dan 1 miljard gemeten aanvallen + geschat aantal niet-gemelde gevallen) dat men eigenlijk kan stellen dat elk WordPress -WordPress - project vroeg of laat het doelwit van een dergelijke aanval is. De schade die door een geslaagde hack kan worden aangericht, is talrijk. In de meeste gevallen dienen Brute Force -aanvallen ook om websites te kapen en in een botnet op te nemen. Cross-site scripting daarentegen komt veel minder vaak voor, maar wordt vooral gebruikt om websites te infecteren met kwaadaardige code.

De non-profitorganisatie Open Web Application Security Project (OWASP) publiceert regelmatig een top 10-lijst van de grootste veiligheidsrisico's voor webapplicaties. En SQL-injecties staan hier steevast op de eerste plaats, zelfs op de (zij het voorlopige) lijst voor 2017.

Dit is een grafische weergave van de top 10-lijst van de grootste veiligheidsrisico's voor webapplicaties, die regelmatig wordt gepubliceerd door de non-profitorganisatie OWASP. SQL injecties staan hier op de eerste plaats.
De non-profitorganisatie OWASP publiceert regelmatig een top 10-lijst van de grootste veiligheidsrisico's voor webapplicaties. SQL-injecties staan hier regelmatig op de eerste plaats.

In feite, SQL injecties zijn hier om te blijven. De hack bestaat al meer dan 15 jaar. En volgens Akamai's State of the Internet Security Report voor 2017 is de frequentie van SQL-aanvallen met 28 procent toegenomen sinds het eerste kwartaal van 2016. In het eerste kwartaal van 2017 vertegenwoordigden SQL-injecties de meest voorkomende hack, goed voor 44 procent van de aanvallen. 

Hieruit blijkt dat in het eerste kwartaal van 2017 SQL-injectie de meest voorkomende hack was, goed voor 44% van de aanvallen.
In het eerste kwartaal van 2017 vertegenwoordigde SQL-injectie de meest voorkomende hack, goed voor 44% van de aanvallen, volgens het 2017 State of the Internet Security Report van Akamai.

Wordfence, fabrikant van een beveiligingssoftware voor WordPress , komt tot de conclusie dat SQL-injecties een groot gevaar vormen, vooral voor WordPress gebruikers. Uit een analyse van bijna 1 600 beveiligingslekken op Plugins, die in een periode van 14 maanden werden gemeld, blijkt duidelijk dat SQL-injecties het op een na meest voorkomende beveiligingsrisico zijn voor WordPress sites.

Uit de grafiek blijkt duidelijk dat SQL-injecties het op een na meest voorkomende veiligheidsrisico ooit zijn voor WordPress  sites.
Uit de grafiek blijkt dat SQL-injecties het op een na meest voorkomende veiligheidsrisico ooit zijn voor WordPress sites.

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

De cijfers tonen aan dat WordPress SQL Injecties na Brute Force aanvallen en XSS kwetsbaarheden behoren tot de meest voorkomende soorten aanvallen. Bovendien richten SQL-injecties zich op een bijzonder gevoelig onderdeel van uw site: uw database. Vooral voor winkeleigenaars zijn deze hacks een existentiële bedreiging. Daarom is het belangrijk te begrijpen hoe ze werken en wat u ertegen kunt doen.

WordPress SQL Injecties richten zich op het hart van uw site: de database.

Om te begrijpen hoe SQL injectie werkt, moet je begrijpen hoe WordPress fundamenteel in elkaar zit. Als u dit al weet, kunt u dit gedeelte gerust 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 is een MySQL database. SQL staat voor Structured Query Language, een volwaardige programmeertaal waarmee structuren in een database kunnen worden gecreëerd en gegevens kunnen worden ingevoerd, gewijzigd en gewist.

Telkens wanneer u een artikel schrijft, een nieuwe categorie aanmaakt, uw wachtwoord wijzigt of zelfs wanneer uw gebruikers een commentaar schrijven, worden deze nieuwe gegevens in de database opgeslagen. Dit is dus waar elk stukje inhoud van uw website zich bevindt.

Telkens wanneer een gebruiker uw pagina oproept en om bepaalde inhoud verzoekt, haaltWordPress de juiste gegevens uit de database, voegt die samen met PHP en creëert een HTML-document dat uiteindelijk naar de browser van de gebruiker wordt doorgestuurd. De gebruiker is niet op de hoogte van alle processen die tot dan toe hebben plaatsgevonden.

SQL Injecties injecteren externe code in de database

Zelfs als u nooit direct met de database werkt, maar alleen met de WordPress backend: De database is het hart van uw website.

Maar zoals ik al zei: Gebruikers kunnen ook gegevens in de database invoeren. Het schrijven van een commentaar, het aanmaken van een gebruikersaccount, het invullen en verzenden van een contactformulier - al deze acties genereren gegevens die in de databank worden opgeslagen.

Maar wat als iemand deze indirecte toegang tot uw database gebruikt om kwaadaardige code in de database te smokkelen? Dit wordt SQL injectie genoemd.

Het idee hierachter is niet eens bijzonder ingewikkeld: Als er geen beveiligingsmaatregelen zijn getroffen, hoeft de hacker alleen maar SQL-code in te voeren in een formulierveld (bv. bij het schrijven van een commentaar). Deze code 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, metacharacters genoemd, zijn bijvoorbeeld ; " ' en '.

Het CMS is van mening dat dit onschadelijke gegevens zijn en geeft de invoer zoals gebruikelijk door aan de database met de opdracht deze op te slaan. De SQL-interpreter herkent de code als een actieverzoek op basis van de metacharacters en voert de databaseopdracht uit.

Overigens geldt voor SQL-injecties hetzelfde als voor Brute Force-aanvallen: het is bijna nooit zo dat een hacker alleen achter de computer zit en handmatig codes in formulieren invoert. Deze aanvallen worden ook uitgevoerd via geautomatiseerde botnets die duizenden websites tegelijk scannen op kwetsbaarheden en toeslaan wanneer zij er een ontdekken.

Wat kan er nu gebeuren?

  • De hacker omzeilt alle authenticatiemechanismen of verschuilt zich achter de identiteit van een bestaande gebruiker om toegang te krijgen. Als een hacker bijvoorbeeld een nieuwe admin-account aanmaakt, wordt dit ook wel een privilege escalation exploit genoemd.
  • Op die manier kan hij gegevens bespioneren, wijzigen of wissen. Dit is vooral van cruciaal belang als u een onlinewinkel exploiteert en over de betalingsgegevens van uw klanten beschikt.
  • Hij kan de controle over uw hele website en webruimte overnemen, bijvoorbeeld door in te loggen als admin en toegang te krijgen tot uw backend. Op die manier heeft een hacker de volledige controle over uw site en kan hij deze misbruiken als spamsmokkelaar, kwaadaardige code injecteren of in een botnet opnemen.

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 winkeliers is het gevaar van SQL-injecties existentieel.

Daarom is het belangrijk om uw site dienovereenkomstig te beschermen: De gebruikersinvoer moet worden gecontroleerd en schoongemaakt. U moet ook gegevens maskeren om de uitvoering van kwaadaardige code te voorkomen. Dit proces wordt "Data Sanitization and Validation" genoemd en wordt uitvoerig behandeld in bijvoorbeeld de WordPress Codex. In een van de volgende artikelen zullen wij echter dieper op dit onderwerp ingaan en u laten zien hoe u kunt voorkomen dat kwaadaardige code actief wordt in uw database.

In principe helpt een uitgebreide beveiligingPlugins ook hier: want die zijn vooral in staat om geautomatiseerde aanvallen op uw pagina's te blokkeren, die de basis vormen voor veel hacks.

Als systeembeheerder waakt Tobias over onze infrastructuur en vindt hij alle mogelijke manieren om de prestaties van onze servers te optimaliseren. Door zijn onvermoeibare inzet is hij vaak 's nachts bij Slack te vinden.

Gerelateerde artikelen

Reacties op dit artikel

Laat een opmerking achter

Jouw e-mailadres zal niet worden gepubliceerd. Verplichte velden zijn met een * gemarkeerd.