Formulieren op websites zijn erg handig. Je plaatst er reacties mee, gebruikt ze voor inschrijvingen en neemt er contact mee op. Dat veel sites een formulier hebben, maakt het ook interessant voor hackers. Zo worden contactformulieren regelmatig misbruikt om spam mee te versturen. Leer daarom meer over hoe dit kan en beveilig je formulier met een Google reCAPTCHA!
Inhoudsopgave
Waarom ook jouw website?
Gebruikt je website een database en heb je ergens formulier staan? Je site is dan om die twee redenen interessant voor hackers. Het stelt ze in staat om spam te versturen. Ook kunnen ze zo malware plaatsen die je omleidt naar phishingpagina’s. Jijzelf, je bezoeker en Google worden daar niet blij van. Zoekmachines zullen je al snel lager in de resultaten zetten. Leer daarom meer over de werkwijze van hackers en geef ze geen kans.
Bij een formulier vul je een tekstveld in en klik je op de knop om de boodschap te verzenden. De server verwerkt het bericht en stopt het in de database bij alle andere berichten. Is het een contactformulier, dan krijg jij en de gebruiker vaak een ontvangstbevestiging per e-mail. Gaat het om een reactie op een artikel? Dan verzoek je de server deze reacties te tonen bij het bezoeken van die pagina. Hierbij wordt de database weer uitgelezen.
Hoe wordt een formulier op een website misbruikt?
Bij een formulier is dus sprake van tekstinvoer en e-mailverkeer. Ook word je database gevuld en uitgelezen. Die handelingen kunnen op meerdere manieren worden misbruikt.
Cross Site Scripting (XSS)
In geval van Cross Site Scripting (XSS) staat er code op je website die je er zelf niet op hebt gezet. Een hacker plaatst dit dan via bijvoorbeeld een onveilig reactieformulier. Met die code ‘vraagt’ de hacker wachtwoorden toe te sturen. Op de pagina merk je daar niets van – je krijgt geen vreemde tekens of pop-ups te zien. Vervolgens leest de website de code alsof het gewoon bij de website hoort. Zo verkrijgt de hacker het wachtwoord.
Meer over XSS
Cross Site scripting verwees oorspronkelijk naar het laden van een website-toepassing vanaf een niet-gerelateerde site. Daarmee ‘kruist’ het verkeer op deze sites elkaar. De term wordt tegenwoordig ook gebruikt bij andere manieren van code-injectie.
SQL-injectie
Deze malafide methode werkt met databases. Een database is de plek waar van alles bewaard wordt voor later. Je kunt het zien als een digitale archiefkast. Een website communiceert met een database door middel van de digitale taal Structured Query Language (SQL). Via SQL communiceert een server en site met elkaar over de plek waar een bericht moet komen te staan.
Als aanvullende beveiliging ontbreekt, is het mogelijk die communicatie te onderscheppen. Dit maakt het mogelijk in SQL de website een commando te geven. Dit heet SQL-injectie (SQL-injection). De kraker misbruikt dit om beheerder van de databaseserver te worden of gegevens te achterhalen. Daarmee plaatst hij malware, vervalst hij een identiteit, knoeit hij met transacties of legt hij gegevens bloot die soms zelfs vernietigd worden.
Email header injection
Email header injection maakt gebruik van een specifiek invulveld bij e-mail. Bij het versturen van e-mail heb je te maken met een ontvanger, een carbon copy (CC) en een blind carbon copy (BCC). Een adres in het CC-veld, zorgt dat de originele ontvanger ziet naar welke ontvangers dit bericht nog meer is verstuurd. De e-mailadressen in het BCC-veld zijn door de originele ontvanger niet te zien.
Een hacker voegt bij email header injection een BCC-vlak toe met honderden e-mailadressen. Door dit proces te automatiseren, kan een kwaadwillende met gemak snel honderden e-mails per keer versturen. Ontvang je zelf enkele spamberichten vanaf je contactformulier? Er is dan een aanzienlijke kans dat er ondertussen honderden e-mailadressen in de BCC staan, waar jij geen weet van hebt.
Hoe vinden hackers je website?
Online worden lijsten van plugin-versies bijgehouden, inclusief lekken. Daarnaast staat in de map van een plugin vaak het bestand readme.txt. Daarmee geeft de maker informatie mee, zoals het versienummer van de plugin. Een hacker gaat vervolgens met de gegevens uit zo’n database op zoek naar websites met die lekke plugins.
Nu hoeven hackers niet per se complexe tools te gebruiken voor het vinden van kwetsbare sites. Zo kunnen ze ook gewoon Google gebruiken met een specifieke zoekopdracht. Inurl is daar een voorbeeld van. Zoek maar eens naar de volgende tekst:
inurl:wp-content/plugins/contact-form-7
De websites in de Google-resultaten van deze zoekopdracht gebruiken de WordPress-plugin Contact Form 7. Hierop kun je handmatig zoeken, maar hackers zullen er een script voor schrijven. Dit script gaat automatisch sites langs en controleert of ze oudere, ‘lekke’ versies van plugins gebruiken.
Overigens vormt het kunnen bekijken van de inhoud van de plugin-map vanuit Google reeds een veiligheidsrisico, welke los staat van de plugin zelf. Daarmee geeft dit voorbeeld extra goed aan hoe makkelijk het is om een kwetsbare website te vinden.
Uiteraard bestaan er nog andere methodes waarop een kwaadwillende toegang krijgt tot jouw WordPress-site. Gelukkig kun je ze het een stuk moeilijker maken…
Twee simpele oplossingen
Je weet inmiddels hoe criminelen formulieren misbruiken en je website kunnen vinden. Uiteraard wil je er nu voor zorgen dat dit jou niet overkomt. In een notendop zijn hier twee manieren voor: je website up-to-date houden en een reCAPTCHA gebruiken.
1. Houd je plugins up-to-date
Misschien ga je ervan uit dat een plugin altijd gecontroleerd en veilig is. Dat is helaas niet altijd zo. Zelfs de bekendste, meest gedownloade plugins voor WordPress kunnen fouten bevatten. Bevat een plugin een lek, dan kunnen hackers toegang krijgen door het te misbruiken. Wordt een plugin actief onderhouden? Vaak brengt de ontwikkelaar dan een update uit om het lek te dichten. Daarom is het ook zo belangrijk om je website up-to-date te houden.
Patchman bij Antagonist voor extra beveiliging
Zit er een kwetsbaarheid in een bekende plugin? Patchman maakt hier een ‘patch’ voor om het lek af te dichten. Vaak al voordat de ontwikkelaar de update klaar heeft. Zo is jouw website automatisch beter beschermd!
Binnen WordPress kun je dit handmatig doen. Log eerst in op het WordPress-dashboard van je website. Daar zie je aan de linkerkant ‘Plugins’ staan. De cirkel met het getal ernaast geeft het aantal beschikbare updates aan. Wanneer je daarop klikt, zie je alle plugins die op je WordPress-site zijn geïnstalleerd. Door voor de plugins een vinkje te zetten en bovenaan te klikken op de knop ‘Plugins bijwerken’, voer je de updates uit. Wil je het jezelf makkelijk maken? Stel via Installatron gemakkelijk automatische updates in. Zo hoef je zelden nog handmatig te updaten.
Geen updates meer je voor je plugin?
Mogelijk is de ondersteuning ervoor gestopt. De ontwikkelaar brengt dan geen nieuwe versies meer uit. Zit er een kwetsbaarheid in je versie? Dan blijft die kwetsbaarheid op je site staan, zolang de plugin is geïnstalleerd. Als oplossing verwijder je de plugin of vervang je hem met een up-to-date alternatief met dezelfde functie. Zo houd je jouw website veilig.
2. Stel een Google reCAPTCHA in
Je kunt gebruikmaken van bijvoorbeeld Google reCAPTCHA. Daarmee voer je controle uit op formulieren op je website. Vroeger moest je hierbij een simpele opdracht uitvoeren om te bewijzen dat je een mens bent. Bij de nieuwste versie van reCAPTCHA hoeft dat niet meer. Die stelt gebruiksvriendelijk en automatisch vast of het surfgedrag overeenkomt met die van een mens of bot. Volg voor het instellen van een reCAPTCHA ons stappenplan.
Gebruik je Contact Form 7 voor WordPress?
- Vraag eerst de sleutels op bij Google (sitesleutel en geheime sleutel).
- Log vervolgens in op WordPress en ga bij Plugins naar Contact Form 7.
- Vul bij Integratie → reCAPTCHA → Setup Intergration de bij Google verkregen sleutels in.
- Sla op en het is klaar! Nu maakt je formulier gebruik van een reCAPTCHA.
Formulieren beter beveiligd
Hopelijk heb je meer inzicht gekregen in hoe onbeveiligde formulieren en verouderde plugins leiden tot malware of het versturen van spam. Stel daarom eenmalig een reCAPTCHA in en maak het jezelf makkelijk met automatische updates. Zo heb je geen omkijken meer naar de veiligheid van de formulieren op jouw WordPress-website. Veel succes!
P.S. Blijf op de hoogte en volg ons via Facebook, X, Instagram, e-mail en RSS. Heb je vragen, tips of opmerkingen? Laat het achter als reactie. Vond je het artikel nuttig? Deel het dan met anderen!
Informatief artikel, dank je wel. Ik had geen idee dat Email header injection zo werkt en het zo ‘ongezien’ kan gebeuren. Kun je achterhalen dat er BCC’s worden verzonden? Misschien niet de daadwerkelijke emails maar wel dat er überhaupt BCC zijn toegevoegd?
Nog een tip voor mensen die geen Google diensten willen gebruiken. Er zijn meerdere captcha oplossingen, o.a.:
– Cloudflare Turnstile
– Friendly Captcha
Of zoek op ‘privacy vriendelijke captcha’.
Bedankt voor de feedback, Sharon! Als jij de verzendende partij bent wel, bijvoorbeeld via je mailprogramma of -systeem (veel WordPress-plugins houden het bij). Ook kun je via DirectAdmin inzien naar wie mail is verzonden. Dat is nuttig wanneer je opmerkt dat er afwijkende e-mails worden verzonden vanaf je website.
Als ontvanger kun je via de headers afleiden dat de BBC bestaat, maar enkel als je zelf in de BCC zit. Echter, of je dan de enige bent of dat er anderen zijn, is niet te achterhalen.
Verder zijn die privacyvriendelijke alternatieven voor Google reCAPTCHA zeker interessant! Wellicht kunnen we daar op korte termijn eens een blogartikel aan besteden.