10 manieren waarop je WordPress-website wordt gehackt

Jouw WordPress website heeft meerdere plugins. Die plugins voegen functionaliteiten toe, maar brengen ook risico's met zich mee. Verouderde of slecht gebouwde plugins zijn de meest voorkomende oorzaak van gehackte websites.

In dit artikel lees je welke beveiligingsproblemen het vaakst voorkomen en welk risico jij en je bezoekers lopen als een aanvaller er gebruik van maakt.

1. Cross-Site Scripting:
Wanneer een aanvaller zijn eigen code in jouw website verstopt

In 2023 was dit verantwoordelijk voor meer dan de helft van alle beveiligingsproblemen in WordPress-plugins. Het is daarmee niet alleen de meest voorkomende kwetsbaarheid, maar ook een van de snelst misbruikte. Zodra een Cross-Site Scripting kwetsbaarheid bekend wordt, duurt het vaak maar enkele uren voordat aanvallers er actief gebruik van maken.

Wat is Cross-Site Scripting precies?

Een website toont informatie die gebruikers invoeren: reacties, berichten, zoekopdrachten. Normaal wordt die invoer behandeld als tekst. Bij een Cross-Site Scripting kwetsbaarheid behandelt de website de invoer als uitvoerbare code. Een aanvaller kan dan een stukje programmacode invoeren dat vervolgens wordt opgeslagen op de website en uitgevoerd in de browser van elke bezoeker die de betreffende pagina opent.

Wat kan er misgaan?

  • Bezoekers doorsturen naar malafide websites of phishingpagina's
  • Inloggegevens stelen door sessiecookies te onderscheppen. Een sessiecookie is een klein bestandje dat bijhoudt dat jij ingelogd bent. Wie die cookie heeft, kan inloggen zonder wachtwoord
  • De inhoud van je website wordt aangepast of onleesbaar gemaakt
  • In combinatie met andere kwetsbaarheden kan een aanvaller acties uitvoeren namens jou als beheerder

2. SQL Injection:
Wanneer een aanvaller de database van je website leegtrekt

Elke WordPress-website heeft een database: hier staan onder andere alle teksten van je pagina's en blogs, gebruikersgegevens, instelingen en meer. Bij deze kwetsbaarheid kan een aanvaller zijn eigen opdrachten aan die database toevoegen zonder toestemming.

Wat kan een aanvaller doen met SQL injection?

SQL Injection geeft toegang tot alles wat in de database staat. Dat omvat gebruikersnamen en wachtwoorden van alle accounts, e-mailadressen en persoonlijke gegevens van klanten of leden, bestellingen en betalingsgegevens, en privéberichten of niet-gepubliceerde inhoud.

In ernstigere gevallen kan een aanvaller niet alleen gegevens lezen, maar ook nieuwe gegevens invoegen. Het aanmaken van een beheerdersaccount voor zichzelf is dan een logische volgende stap, waarna de website volledig in zijn handen is.

Concreet voorbeeld In de WordPress Automatic-plugin ontbraken beveiligingschecks, waardoor aanvallers zonder account direct opdrachten konden sturen naar de database. De kwetsbaarheid werd kort na bekendmaking op grote schaal misbruikt.

Wat kan er misgaan?

  • Alle gegevens in je database zijn leesbaar: namen, e-mailadressen, berichten, betalingen
  • Aanvallers kunnen nieuwe beheerdersaccounts aanmaken voor zichzelf
  • Gewijzigde databaseinhoud is vaak moeilijk terug te draaien

3. Broken Access Control:
Wanneer deuren openstaan die op slot zouden moeten zijn

Een website heeft verschillende soorten gebruikers met verschillende rechten. Dit werkt alleen als de website bij elke actie controleert wie er iets probeert te doen en of dat is toegestaan. Als die controle ontbreekt of niet klopt, staat er een deur open die op slot had moeten zijn. In 2023 was dit verantwoordelijk voor bijna 13% van alle beveiligingsproblemen in alle WordPress websites.

Er zijn twee varianten. Bij een authenticatieprobleem kan iemand zonder account acties uitvoeren die alleen voor ingelogde gebruikers bedoeld zijn. Bij een autorisatieprobleem kan een gewone ingelogde gebruiker dingen doen die alleen een beheerder mag.

Concreet voorbeeld In de InstaWP-plugin ontbrak een autorisatiecontrole. Hierdoor kon iemand zonder account de website koppelen aan een externe dienst, instellingen aanpassen en nieuwe beheerdersaccounts aanmaken, volledig op afstand, zonder wachtwoord.

Wat kan er misgaan?

  • Volledige overname van de website zonder inloggegevens
  • Installatie van permanente achterdeuren
  • Aanpassing van website-instellingen en inhoud
  • Inzet van je server voor aanvallen op anderen

4. Privilege Escalation:
Wanneer een bezoeker zichzelf tot beheerder maakt

WordPress werkt met een systeem van gebruikersrollen. Een gewone bezoeker mag niets beheren. Een redacteur mag artikelen schrijven. Een beheerder mag alles. Plugins kunnen dit systeem verstoren, bijvoorbeeld door niet goed te controleren wie een bepaalde actie uitvoert.

De meest voorkomende oorzaken zijn:

  • Slechte controle op gebruikersrechten: Een plugin voert een gevoelige actie uit zonder te controleren of de gebruiker daar wel toestemming voor heeft. Iemand met minimale rechten kan zo handelingen uitvoeren die alleen een beheerder mag doen.
  • Fouten in inlogfunctionaliteit: Plugins die een alternatieve manier van inloggen bieden, zoals via sociale media, bevatten soms een fout waardoor een aanvaller kan inloggen als een willekeurige gebruiker, inclusief de beheerder, zonder het wachtwoord te kennen.
  • Onbeveiligde achterdeurtjes voor ontwikkelaars: Sommige plugins bieden snelkoppelingen voor bepaalde acties die bedoeld zijn voor beheerders, maar per ongeluk ook beschikbaar zijn voor gewone gebruikers.

Privilege Escalation is een van de gevaarlijkste soorten kwetsbaarheden in WordPress. Het verschil met veel andere aanvallen is dat de aanvaller geen langdurig technisch proces nodig heeft: één fout in een plugin kan genoeg zijn om volledige controle over je website te krijgen.

Concreet voorbeeld In augustus 2024 werd een ernstige kwetsbaarheid ontdekt in LiteSpeed Cache, een veelgebruikte snelheidsplugin. Iemand zonder account kon zichzelf beheerdersrechten geven. De kwetsbaarheid werd binnen dagen na bekendmaking al op grote schaal misbruikt.

Wat kan er misgaan?

  • Een nepplugin installeren die een permanente achterdeur opent, zodat de aanvaller ook na een wachtwoordwijziging toegang houdt tot je website.
  • Gevoelige gegevens stelen uit je database, zoals e-mailadressen, bestelgeschiedenissen of privéberichten.
  • Je website inzetten voor SEO-spam, phishingpagina's of malwareverspreiding.
  • Je site onderdeel maken van een netwerk van gehackte websites, die samen gebruikt worden voor aanvallen op andere doelwitten.

5. Remote Code Execution:
Wanneer een aanvaller jouw server als zijn eigen computer gebruikt

Dit is de ernstigste kwetsbaarheid. Een aanvaller kan willekeurige opdrachten uitvoeren op de server waarop jouw website draait, alsof hij op afstand achter het toetsenbord zit.

Hoe werkt Remote Code Execution?

Een webserver voert voortdurend code uit om pagina's te tonen, formulieren te verwerken en gegevens op te slaan van je website. Plugins kunnen invoer van gebruikers verwerken en die invoer doorgeven aan de server. Als een plugin niet goed controleert wat er binnenkomt, kan een aanvaller in plaats van normale invoer een computeropdracht meesturen. De server voert die opdracht dan uit, zonder te weten dat het kwaadaardig is.

Concreet voorbeeld Begin 2024 werd een ernstige kwetsbaarheid ontdekt in Bricks Builder. Iemand zonder account kon via dit lek kwaadaardige code uitvoeren op de server. Websites werden in korte tijd op grote schaal gehackt.

Wat kan er misgaan?

  • Alle bestanden op de server lezen, kopiëren of verwijderen
  • Je website wordt gebruikt om kwaadaardige software op het apparaat van de bezoeker te installeren
  • Toegang krijgen tot andere websites die op dezelfde server worden gehost
  • Een permanente achterdeur inbouwen die actief blijft na herstel

6. Arbitrary File Upload:
Wanneer je website een achterdeur krijgt

Veel WordPress-plugins of -thema's bieden gebruikers de mogelijkheid om bestanden te uploaden, zoals een profielfoto of een document. Zo'n upload is op zichzelf niet gevaarlijk, mits de plugin goed controleert wat er precies binnenkomt.

Het gevaar ontstaat wanneer die controle ontbreekt of slecht is uitgevoerd. Een aanvaller kan dan een bestand uploaden dat er onschuldig uitziet maar in werkelijkheid een uitvoerbaar programma is. Op een WordPress-website is dat vaak een .php-bestand: de taal waarin WordPress zelf geschreven is. Zodra zo'n bestand op de server staat, kan de aanvaller het op afstand activeren en commando's uitvoeren op jouw website.

Drie veelvoorkomende oorzaken

  • Geen bestandscontrole: de plugin staat elk bestandstype toe
  • Vertrouwen op de bestandsnaam: een gevaarlijk bestand hernoemen naar bijvoorbeeld foto.jpg is genoeg om de check te omzeilen
  • Te ruime uploadrechten: gewone bezoekers mogen uploaden op plekken waar dat niet hoort

Wat kan er misgaan?

  • Volledige controle over de server
  • Je website verspreidt malware naar je bezoekers
  • Phishingpagina's op jouw domeinnaam
  • Verborgen achterdeur die actief blijft na het dichten van het lek

7. Local File Inclusion
Wanneer een aanvaller in de archiefkast van je server kan rondneuzen

Een WordPress-website bestaat uit veel meer dan alleen de pagina's die bezoekers zien. Op de achtergrond staan bestanden met instellingen, inloggegevens, gebruikersgegevens en systeemconfiguraties. Normaal zijn die bestanden volledig afgeschermd. Bij een Local File Inclusion-kwetsbaarheid kan een aanvaller de website misleiden om die verborgen bestanden toch te openen en te tonen.

De situatie wordt gevaarlijker als de website ook een uploadfunctie heeft. Een aanvaller uploadt dan een afbeelding met verborgen programmacode en laat die vervolgens uitvoeren via dit lek. Het resultaat is vergelijkbaar met een volledige serverovername.


8. Cross-Site Request Forgery:
Wanneer jouw klik iets doet wat jij nooit bedoeld had

Wanneer je ingelogd bent op je WordPress-website, herkent de server jou als beheerder. Elke actie die je uitvoert, zoals een instelling wijzigen of een gebruiker aanmaken, wordt door de server verwerkt omdat die weet dat jij het bent.

Een Cross-Site Request Forgery aanval maakt misbruik van dat vertrouwen. Een aanvaller maakt een link of een pagina die, zodra jij erop klikt, automatisch een verzoek stuurt naar jouw eigen website. Omdat jij op dat moment ingelogd bent, denkt de server dat jij die actie bewust hebt uitgevoerd.

Het verschil met veel andere aanvallen is dat de aanvaller jouw website niet rechtstreeks binnendringt. Hij gebruikt jou als tussenpersoon, zonder dat je het doorhebt.

Op zichzelf is dit lek lastig te misbruiken omdat de aanvaller je moet verleiden om op iets te klikken. Maar gecombineerd met Cross-Site Scripting vervalt die stap volledig en kan de aanval automatisch worden uitgevoerd zodra jij als beheerder een bepaalde pagina bezoekt. Dit was in 2022 de meest voorkomende kwetsbaarheid in WordPress-plugins en stond in 2023 op de tweede plek.

Wees dus voorzichtig met links in e-mails of berichten die verwijzen naar de beheerdersomgeving van je eigen website. Klik niet op zulke links als je de afzender niet volledig vertrouwt.

Wat kan er misgaan?

  • Website-instellingen worden gewijzigd zonder dat jij dat doorhebt
  • Nieuwe beheerdersaccounts worden aangemaakt
  • Inhoud wordt aangepast of verwijderd

9. Sensitive Data Exposure:
Wanneer je website te veel vertelt

Je website geeft onbedoeld gevoelige informatie prijs aan mensen die daar geen toegang toe zouden mogen hebben. Dat hoeft niet via een gerichte aanval te gaan: soms staat informatie gewoon openbaar toegankelijk zonder dat je het weet.

Veelvoorkomende oorzaken

Er zijn veel manieren waarop een website onbedoeld informatie vrijgeeft:

  • Verouderde plugins en thema's: Software met bekende beveiligingslekken kan worden misbruikt om toegang te krijgen tot bestanden of gegevens die afgeschermd zouden moeten zijn.
  • Verkeerde bestandsrechten: Bepaalde bestanden op een WordPress-server bevatten zeer gevoelige informatie, zoals de inloggegevens voor de database. Als zo'n bestand toegankelijk is via het internet, heeft een aanvaller in één stap toegang tot de volledige inhoud van je website.
  • Onbeveiligde back-ups: Veel websitebeheerders slaan back-ups op in een map die gewoon via de browser te bereiken is, zonder wachtwoordbeveiliging of versleuteling. Een aanvaller die zo'n bestand vindt, heeft een complete kopie van je website.
  • Te veel informatie via de API: WordPress heeft een ingebouwde manier om data op te vragen via een webadres. Op veel websites is het mogelijk om via een standaard URL een volledige lijst van alle gebruikers op te vragen, inclusief gebruikersnamen. Die informatie is bruikbaar voor geautomatiseerde inlogpogingen.
  • Logbestanden: Websites slaan allerlei technische informatie op in logbestanden. Als die bestanden bereikbaar zijn, bieden ze aanvallers een gedetailleerd overzicht van hoe de website werkt.
  • Geen versleuteling: Als je website geen beveiligde verbinding gebruikt (herkenbaar aan het slotje en "https" in de browser), kunnen gegevens die bezoekers invoeren worden onderschept.

10. CSV Injection:
Wanneer een exportbestand een valstrik wordt

Je exporteert een lijst met klantgegevens van je website naar een Excel-bestand. Je opent het bestand en zonder dat je het doorhebt, wordt er op de achtergrond een programma uitgevoerd dat jouw inloggegevens doorstuurt naar een onbekende partij. Dat is wat CSV Injection in theorie mogelijk maakt.

CSV-bestanden zijn eenvoudige tekstbestanden die je kunt openen in Excel. WordPress-plugins gebruiken dit formaat voor het exporteren van gegevens zoals contactformulieren of ledenlijsten. Het probleem: zo'n bestand maakt geen onderscheid tussen gewone tekst en een uitvoerbare formule.

Als een kwaadwillende een formulier invult met tekst die begint met een =-teken, ziet Excel dat als een formule. Als jij later dat exportbestand opent, kan die formule worden uitgevoerd. Dit vereist dat jij het bestand downloadt én opent in een programma dat formules uitvoert — de aanval werkt niet automatisch. Het risico is in de praktijk klein, maar het is goed om je hiervan bewust te zijn als je regelmatig exportbestanden opent met klant- of gebruikersgegevens.

Wat kan er misgaan?

  • Schadelijke software op je computer: Als Excel macro's heeft ingeschakeld, kan de formule een programma starten dat malware installeert of bestanden versleutelt.
  • Diefstal van gegevens: De formule kan gevoelige informatie, zoals inloggegevens, naar een externe server sturen.

Beperk je risico's

Wat jij kunt doen om je WordPress website te beschermen.

  • Update WordPress, thema's en plugins regelmatig
  • Verwijder plugins die je niet actief gebruikt; elke ongebruikte plugin is een potentieel toegangspunt
  • Maak elke dag een back-up van je website en bewaar deze buiten je website, zodat je snel kunt herstellen
  • Gebruik een firewall om je website die bekende kwetsbaarheden monitort en blokkeert, ook als er nog geen update beschikbaar is
  • Kies een hostingprovider die beveiliging serieus neemt
  • Controleer of je website altijd een beveiligde verbinding gebruikt
  • Houd bij welke plugins je gebruikt. Als er een beveiligingsprobleem wordt gemeld op een van van je plugins, update deze dan direct. Bij sommige lekken worden websites al binnen enkele uren gehackt.
  • Controleer regelmatig wie beheerder rechten heeft op je website. Heeft iemand deze niet meer nodig of ken je diegene niet. Verwijder deze dan.

Bescherm je reputatie

Een gehackte website is niet alleen een technisch probleem. Het heeft gevolgen voor je bezoekers, je reputatie en in sommige gevallen je aansprakelijkheid. Je wilt alles waar je zo hard voor gewerkt hebt niet kwijtraken.

Wil je de beveiliging, onderhoud en optimalisatie van je WordPress website uitbesteden?

Krijg Website Rust

Oranje en wit boek met de titel

Ontvang het gratis e-book

Het moment van het eerste contact

Op je website, je digitale praktijkruimte, telt de eerste indruk. Ontdek de psychologie achter online vertrouwen en hoe je dit inzet op je eigen website.

Ebook aanvragen - Eerst ontmoeting (#34)

© 2019 - DEVOS Digital, onderdeel van My Goal My Path LTD