WordPress

Malware verwijderen van je gehackte WordPress website

In dit artikel leggen we uit waarom en hoe WordPress websites gehackt worden. Daarnaast geven we een stappenplan om malware te verwijderen en je gehackte WordPress website op te schonen.

[av_notification title=’Tip’ color=’green’ border=’dashed’ custom_bg=’#444444′ custom_font=’#ffffff’ size=’large’ icon_select=’no’ icon=’ue800′ font=’entypo-fontello’ custom_class=”]
Je kan ook door ons je WordPress website hackvrij laten maken.
[/av_notification]

Waarom worden WordPress websites gehackt?

De belangrijkste motivatie voor de meeste hackers is geld. De gehackte websites worden ingezet om commerciële websites te promoten, vooral in de sferen van gokken, seks en geneesmiddelen. Door het hacken van een website kunnen er bijvoorbeeld duizenden spam e-mails gestuurd worden. Of er worden links op je website geplaatst waardoor Google wordt misleid en de commerciële websites hoger in de zoekresultaten komen. Af en toe zijn hacks ook ideologisch/politiek gemotiveerd.

Hoe kom je erachter dat je WordPress website gehackt is?

Hoe kan je WordPress website gehackt worden?

Om de controle over je WordPress website over te nemen, is het voor hackers noodzakelijk om op de één of andere manier een bestand op je server te kunnen uploaden of bewerken. Over het algemeen zijn er vier mogelijke ingangen die de hacker toegang geven tot je website:

  1. Onveilige wachtwoorden; de meeste WordPress hacks die wij tegenkomen hadden voorkomen kunnen worden door veiligere wachtwoorden te kiezen.
  2. Update-beleid; wanneer je WordPress, je plugins en je thema niet of zelden updated, vergroot je aanzienlijk de kans om gehackt te worden.
  3. Onveilige thema’s/plugins; soms kan je website up-to-date zijn, maar alsnog een onveilig thema/plugin bevatten. Schaf een plugin/thema daarom altijd aan vanaf een betrouwbare website.
  4. Slechte hosting; je kunt je website zelf helemaal beveiligd hebben, maar als het bij je hostingpartij bijvoorbeeld mogelijk is om bestanden te verplaatsen tussen je verschillende websites, dan is het slecht geregeld met de beveiliging.

Liever de video-uitleg om WordPress op te schonen?

We hebben ook een video-handleiding gemaakt waarin we stap voor stap uit leggen hoe je je gehackte WordPress website kunt opschonen. Je kunt deze hieronder bekijken, of dit artikel verder lezen.

Je WordPress website hackvrij maken

[av_notification title=’Tip’ color=’green’ border=’dashed’ custom_bg=’#444444′ custom_font=’#ffffff’ size=’large’ icon_select=’no’ icon=’ue800′ font=’entypo-fontello’ custom_class=”]
Het verwijderen van malware is een complex proces. Wij bieden je de informatie om het zelf te doen. Je kunt ook het verwijderen van malware aan ons uitbesteden.
[/av_notification]

Wanneer een hacker toegang heeft gehad tot je website, zijn mogelijk bestanden toegevoegd/gewijzigd, wachtwoorden aangepast en mogelijks zelfs nieuwe gebruikers toegevoegd. Wanneer je één van deze acties niet detecteert en opschoont, hebben alle andere acties geen zin, want de hacker kan zich dan nog steeds toegang verschaffen en opnieuw schade aanrichten. Het opschonen dient dus grondig te gebeuren.

We proberen alle stappen zo eenvoudig mogelijk uit te leggen, maar enige technische kennis is wel een vereiste. Zorg dat je in elk geval een beheerders-account hebt in WordPress, dat je FTP-toegang hebt (en dat je weet hoe FTP werkt), en dat je met een programma zoals phpMyAdmin of Adminer bij de database kunt komen. De stappen die we gaan nemen zijn:

[toc heading_levels=”3″]

[av_notification title=’Tip’ color=’green’ border=’dashed’ custom_bg=’#444444′ custom_font=’#ffffff’ size=’large’ icon_select=’no’ icon=’ue800′ font=’entypo-fontello’ custom_class=”]
Als je weet wanneer de hack heeft plaatsgevonden, kun je het opschonen overslaan door een backup van vóór de hack terug te zetten. Je verliest mogelijk wel wat reacties en formulier-inzendingen. Ga na het opschonen verder bij stap 5.
[/av_notification]

Backup je gehackte WordPress website

Je gaat je WordPress website grondig opschonen. Dat betekent dat je ook wel eens teveel kan opschonen en dat je eigenlijk beter opnieuw kunt beginnen. In zo’n geval is het altijd handig om een backup achter de hand te hebben. Zorg ervoor dat je zowel alle bestanden als alle databases toevoegt aan de backup.

Sluit de deuren

Zorg dat je WordPress website tijdelijk niet toegankelijk is van buitenaf. Theoretisch kunnen hackers je website namelijk opnieuw besmetten terwijl je nog bezig bent met het doorlopen van de stappen. Ook voorkom je zo dat je bezoekers nog besmet met mogelijk geïnstalleerde malware op je website.

Via het controlepaneel van je hosting-partij kun je vaak de website blokkeren door middel van een wachtwoord, of met een IP-filter. Als je toegang hebt tot je .htaccess-bestand kun je de volgende regels toevoegen om één specifiek IP-adres toe te laten (achterhaal jouw IP-adres op WhatIsMyIPAddress.com):

order deny,allow
deny from all
allow from 123.456.789.123

Zoek naar de oorzaak van je gehackte WordPress website

google-securityHet is belangrijk om er zo snel mogelijk achter te komen wat de oorzaak van de hack is en hoeveel impact de hack heeft.

Bestanden opschonen van je gehackte WordPress website

Bij een geslaagde hack kan de hacker een bestand plaatsen of bewerken in mogelijk elke map op je webserver; niet alleen in de map van bijv. de veroorzakende lekke plugin. Dit betekent dat je alle mappen en bestanden zou moeten langslopen, en dat is monnikenwerk. Gelukkig kun je het uitpluis-werk beperken in verschillende stappen. We leggen ze hieronder uit.

[av_iconlist position=’left’ font_color=” custom_title=” custom_content=” color=” custom_bg=” custom_font=” custom_border=” custom_class=”]
[av_iconlist_item title=’WordPress core opschonen (wp-admin en wp-includes)’ link=” linktarget=” linkelement=” icon=’ue925′ font=’entypo-fontello’]
Log in met FTP en ga naar de map van je WordPress website. In de root (topfolder) van je WordPress website staan minstens drie mappen: ‘wp-admin’, ‘wp-content’ en ‘wp-includes’. In de map ‘wp-content’ worden alle specifieke wijzigingen van jouw website bewaard, maar ‘wp-admin’ en ‘wp-includes’ bevatten puur bestanden van de WordPress core; bestanden die alleen wijzigen als er een nieuwe versie van WordPress uitkomt.

Om er in één keer zeker van te zijn dat er door hackers geen bestanden meer gewijzigd of geplaatst zijn in de WordPress core, kun je daarom gerust de mappen ‘wp-admin’ en ‘wp-includes’ verwijderen, en een schone variant van deze mappen terugzetten door WordPress opnieuw te downloaden.

Behalve mappen staan er ook nog bestanden in de root van je website. Vervang deze bestanden – op wp-config.php na (!) – met de bestanden uit je uitgepakte zip-bestand.

Staan er nog andere bestanden en mappen in de root van je website? Loop deze kritisch langs en bedenk of je ze thuis kunt brengen; heb je nog andere software op je website draaien? Zo niet, dan zijn ze misschien door de hacker geplaatst. Overleg bij twijfel met je webhost. Soms wordt een map als ‘stats’, ‘webstats’, ‘logs’ en ‘cgi-bin’ door je webhost voorgeïnstalleerd. Kijk in elk geval altijd even in deze mappen en zoek naar bestanden die eindigen met ‘.php’. Die horen daar namelijk niet zomaar thuis.
[/av_iconlist_item]
[av_iconlist_item title=’Plugins opschonen (wp-content/plugins)’ link=” linktarget=” linkelement=” icon=’ue822′ font=’entypo-fontello’]
Voor plugins zijn, net als de WordPress core, originele schone versies te vinden in de WordPress plugin repository. Het kan echter zo zijn dat daar niet al je plugins vandaan komen; premium plugins schaf je bijvoorbeeld ergens anders aan. Premium plugins zijn bovendien niet altijd automatisch te updaten. Hoe dan ook, om er zeker van te zijn dat je hele plugin-folder schoon is, zul je alle originelen moeten traceren.

In deze stap update je gelijk al je plugins naar de nieuwste versie. Dat is veilig, maar kan conflicten opleveren wanneer de WordPress core of je thema bijvoorbeeld nog niet compatible is met de laatste versie van de plugin. Zet in zo’n geval een oudere versie terug van je plugin, of – liever nog – update je thema (zie volgende stap) om te controleren of het probleem daarmee is opgelost.
[/av_iconlist_item]
[av_iconlist_item title=’Thema updaten (wp-content/themes)’ link=” linktarget=” linkelement=” icon=’ue84b’ font=’entypo-fontello’]
WordPress thema’s bevatten soms maatwerk aanpassingen van jezelf of je website bouwer. Die aanpassingen gaan verloren wanneer je je thema updated, tenzij de aanpassingen van je thema in een aparte map zijn bewaard door gebruik van een child thema.

Bevat je WordPress website geen child thema? Dan heb je in elk geval nog de mogelijkheid om je thema te updaten zoals uitgelegd in de vorige stap, al gaat maatwerk dan wel verloren. Wil je je maatwerk behouden, dan kun je deze gelegenheid aangrijpen om die wijzigingen eerst in een child thema onder te brengen. De child thema handleiding van WordPress legt uit hoe (let op: niet eenvoudig).

Bevat je WordPress website wel een child thema? In dat geval kun je je WordPress thema prima updaten zoals uitgelegd in de vorige stap. Vervolgens moet je er wel nog voor zorgen dat je child thema-map ook schoon is. Als je zelf nog een lokale kopie van je child thema hebt, kun je die terugzetten (soms werkt een hele oude backup ook prima, als je zeker weet dat je website op dat moment niet gehackt is geweest). Heb je geen kopie meer, dan dien je de map van het child thema met de hand langs te lopen. Lees daarvoor ook de volgende stap.

Vergeet tot slot niet om eventuele ongebruikte thema’s te verwijderen; daarmee verklein je de kans op problemen in de toekomst.
[/av_iconlist_item]
[av_iconlist_item title=’Overige bestanden controleren (wp-content)’ link=” linktarget=” linkelement=” icon=’ue849′ font=’entypo-fontello’]
Je hebt nu zoveel mogelijk opgeschoond zonder nauwkeurig te hoeven kijken, maar er zijn altijd wat bestanden en mappen die je met de hand langs moet lopen.

[/av_iconlist_item]
[av_iconlist_item title=’Controleer wp-config.php’ link=” linktarget=” linkelement=” icon=’ue804′ font=’entypo-fontello’]
Het bestand wp-config.php heb je tot nu toe onaangeraakt gelaten, maar moet je nog wel controleren. Dit bestand bevat alle basisconfiguratie voor je WordPress website. Heb je nog een oude backup tot je beschikking? Dan raden we aan om daar de wp-config.php van terug te plaatsen op je website. Pas dan wel het lijstje onder ‘Authentication Unique Keys and Salts’ aan door aan elke regel random code een paar tekens toe te voegen. Zo zorg je er onder andere voor dat ingelogde gebruikers (dus mogelijk ook hackers) niet meer zijn ingelogd.

Heb je geen backup? Open dan je wp-config.php en vul alle waarden die je ziet staan in bij de wp-config.php generator door alle stappen te doorlopen. Kies bij Authentication Keys & Salts voor ‘Auto Generate’. Klik na de laatste stap op ‘update’ en kopier en plak de code naar je wp-config.php. Zo weet je zeker dat je een schone wp-config.php hebt gegenereerd.
[/av_iconlist_item]
[av_iconlist_item title=’Zoeken naar .htaccess’ link=” linktarget=” linkelement=” icon=’ue803′ font=’entypo-fontello’]
Een .htaccess-bestand biedt de mogelijkheid om heel veel server-instellingen te configureren. Als een hacker dergelijke bestanden aanpast kan dit dus zeer schadelijk gedrag vertonen. In de root van je WordPress website staat sowieso een .htaccess-bestand, maar in principe kan er in elke map op je website eentje staan. Zoek daarom met een FTP-programma naar ‘.htaccess’ in alle mappen op je website.

Het .htaccess-bestand in de root van je website bevat in principe enkel de volgende regels:

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

Staat er meer code in je .htaccess-bestand? Dat kan door een plugin zijn toegevoegd, maar het kan ook een hack zijn. Verwijder bij twijfel alle overige code uit je .htaccess-bestand; wellicht werkt een plugin dan niet meer optimaal, maar de meeste plugins kunnen de benodigde code automatisch weer toevoegen aan het .htaccess-bestand als dat nodig is.

Kom je nog meer .htaccess-bestanden tegen?

Ga dan na waar ze staan. Staan ze in een plugin of thema map? Dan zijn ze in principe veilig omdat je deze folders al hebt opgeschoond in de vorige stappen. Kom je ze echter tegen in de uploads map, child thema, etc., dan is het wel even de moeite om ze na te kijken. Overigens wordt er soms een .htaccess-bestand geplaatst in wp-content/uploads om te voorkomen dat bezoekers niet zonder toestemming door je upload-mappen kunnen bladeren. In zo’n geval kom je wellicht de volgende regel tegen in je .htaccess-bestand:

Options -Indexes

Dit is geen schadelijke regel, dus die kun je gerust laten staan.
[/av_iconlist_item]
[/av_iconlist]

Gebruikers opschonen

Nu alle bestanden schoon zijn, is het nog steeds mogelijk dat hackers toegang hebben tot je website. Ze kunnen bijvoorbeeld een extra beheerders-account aangemaakt hebben, of het wachtwoord hebben gewijzigd van één van de andere gebruikers. Bovendien is de kans ook aanwezig dat hackers zijn binnengekomen doordat ze een zwak wachtwoord wisten te raden.

Ga daarom in WordPress naar ‘Gebruikers’ en verwijder alle gebruikers die er niet thuishoren. Stel voor alle overige gebruikers een nieuw (complex!) wachtwoord in. Zo weet je zeker dat een hacker niet kan inloggen met een bestaande account. Leg aan je bestaande gebruikers uit waarom het noodzakelijk is om een complex wachtwoord te gebruiken.

Controleer database

De gevorderden onder ons kunnen nu ook nog eens een kijkje nemen in de database. Met een programma als PhpMyAdmin of Adminer kun je relatief eenvoudig door je database bladeren. Allereerst kun je eens een kijkje nemen in de ‘wp_users’ tabel; zie je nog gebruikers staan die er niet thuishoren? Verwijder deze dan alsnog handmatig. Soms lukt het hackers namelijk om een onzichtbare gebruiker toe te voegen.

Bekijk verder eens de tabelstructuur en vergelijk deze met de standaard WordPress Database structuur; zijn er tabellen toegevoegd die je niet thuis kunt brengen? Bekijk ze dan eens nader. Overigens voegen sommige plugins ook tabellen toe aan je database. Verwijder dan enkel de tabellen van inmiddels verwijderde plugins.

Wijzig alle wachtwoorden

wordpress-users-veiligheidIn de vijfde stap heb je de wachtwoorden van je gebruikers al gewijzigd, maar wellicht hebben hackers in de achtergrond nog meer wachtwoorden weten te achterhalen. Wijzig daarom in elk geval het wachtwoord van je database, maar ook je FTP-account, het hosting config panel, etc. Zo hoef je niet te twijfelen of je website wel weer helemaal veilig is. Vul het nieuwe database-wachtwoord ook in bij ‘DB_PASSWORD’ in het bestand wp-config.php.

Live zetten en testen

Je bent nu zover om je WordPress website weer live te zetten. Verwijder de blokkade van stap 1 en controleer of je website weer toegankelijk is zonder dat je ingelogd bent, bijvoorbeeld door je website te bezoeken vanaf een ander netwerk, of met je telefoon zonder wifi aan.

Mogelijk krijg je nu nog wel meldingen van Google dat je WordPress website malware bevat. In dat geval kan je WordPress website op een blacklist zijn gezet, waardoor deze ook niet meer in de zoekresultaten van Google wordt weergegeven. Gebruik de mogelijkheden die Google biedt om je WordPress website weer terug in de zoekresultaten te krijgen.

  1. Google Diagnostic Center (vervang www.voorbeeld.nl in de url voor je eigen domein). Met deze tool controleer je of de website op de blacklist van Google staat.
  2. In Google Webmasters wordt aangegeven of en wanneer Google een probleem met je WordPress website heeft geïndexeerd.
  3. Dien met de Google Reconsideration Tool een verzoek in bij Google om je WordPress website opnieuw te laten indexeren.

[av_video src=’https://www.youtube.com/watch?t=112&v=lc3UjnDcMxo’ format=’16-9′ width=’16’ height=’9′ custom_class=”]

Updaten

Achter de schermen van WordPress is een grote community van ontwikkelaars continu bezig met het verbeteren van de code. Dit heeft als voordeel dat bekende lekken in WordPress, plugins en thema’s vaak heel snel worden gedicht door het uitbrengen van een nieuwe versie. Zorg er daarom altijd voor dat je website up-to-date. Zo verklein je de kans behoorlijk om opnieuw gehackt te worden én kun je een nieuwe update heel snel uitvoeren omdat het dan vaak maar een kleine wijziging is.

Handige links

Plugins

Onderstaande plugins helpen je om je website te beveiligen. En wanneer je website gehackt is kunnen de plugins je ook helpen om de website op te schonen.

4 reacties op “Malware verwijderen van je gehackte WordPress website”

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.

Gerelateerde artikelen

  • WordPress voor bedrijven

    Waarom WordPress geschikt is voor (grote) bedrijven: 10 redenen

    Veilig, stabiel, toekomstbestendig en héél prettig om in te werken! WordPress is voor bedrijven van iedere omvang een heel geschikt CMS.

  • WordPress website beveiligen tegen ongenode gasten

    WordPress website beveiligen: 10 tips en tricks

    Je WordPress website beveiligen is één van de belangrijkste dingen die er is. Toch zijn er veel WordPress websites niet goed beveiligd.

  • WordPress onderhoud

    WordPress website vast in maintenance mode

    Leer in dit blog wat de ‘maintenance’ modus van WordPress is en hoe je je website snel weer online kan krijgen!