WordPress gehackt? Malware en backdoors opsporen en je site herstellen

INHOUD
    PC Patrol

    Wij regelen je hosting, jij doet de business.

    • Managed webhosting & WordPress
    • Cloud VPS in EU-datacenter
    • Microsoft 365 & e-mail
    • Nederlandse support
    Bekijk onze diensten

    Is je WordPress site gehackt? Dan wil je twee dingen tegelijk: weten wat er precies is binnengedrongen, en je site veilig en volledig herstellen zonder dat de aanvaller terugkomt. Een gehackte WordPress site bevat vaak meer dan zichtbare spam, namelijk verborgen malware en backdoors die na een simpele opschoonactie blijven zitten. In deze stap-voor-stap handleiding leggen we uit hoe je na een hack malware en backdoors opspoort, je WordPress site opschoont en herinfectie en een Google-blacklisting voorkomt.

    Wat zijn malware en backdoors in een gehackte WordPress site?

    Wanneer je WordPress website is gehackt, wordt er vaak meer geplaatst dan alleen zichtbare spam. Aanvallers installeren malware om data te stelen of je server te misbruiken en backdoors om later eenvoudig opnieuw binnen te komen. Een backdoor is meestal een verborgen script of gemanipuleerd WordPress bestand waarmee een hacker, zelfs na een herstelde login, alsnog toegang kan krijgen.

    Het lastige is dat deze bestanden vaak verstopt zitten tussen legitieme WordPress core bestanden, thema’s en plugins. Daarom is het belangrijk systematisch te werk te gaan in plaats van alleen een verdachte plugin uit te schakelen.

    Stap 1: Zet je gehackte WordPress site in quarantaine

    Schakel tijdelijk alle frontend toegang uit door onderhoudsmodus te activeren of de site achter een simpele serverauthenticatie te zetten. Dit verkleint de kans dat malware verder wordt verspreid of dat bezoekers worden doorgestuurd naar phishing pagina’s. Met WP-CLI activeer je onderhoudsmodus in één commando:

    wp maintenance-mode activate

    Log daarna in via SFTP of SSH en maak een volledige backup van bestanden en database, hoe besmet die ook lijkt. Deze kopie gebruik je later om verdachte code te analyseren:

    tar -czf ~/site-besmet-$(date +%F).tar.gz /var/www/jouwsite
    wp db export ~/db-besmet-$(date +%F).sql

    Heb je nog een oudere schone backup, dan kan die later helpen bij het vergelijken van bestanden. In een andere blog hebben we al eens uitgelegd hoe je veilig een gehackte WordPress website herstelt met een backup. Dat artikel vind je hier: WordPress website herstellen na een hack.

    Stap 2: Verdachte WordPress bestanden en code herkennen

    Controleer core bestanden, thema’s en plugins

    Vergelijk de WordPress core bestanden met een originele download van dezelfde versie. Bestanden die plotseling extra code bevatten of onverwachte wijzigingen in wp-config.php en index.php zijn vaak een rode vlag. Controleer ook de map wp-content, vooral uploads, op PHP bestanden die daar normaal niet horen te staan. Dit commando vindt ze direct:

    find wp-content/uploads -name "*.php" -type f

    Een veelgebruikte truc is het verstoppen van backdoors in bestandnamen die sterk lijken op standaard WordPress bestanden, bijvoorbeeld wp-config-old.php of functions-old.php. Zoek in alle PHP-bestanden naar verdachte functies en recent gewijzigde bestanden:

    # Verdachte functies in PHP-bestanden opsporen
    grep -rEl "eval\(|base64_decode|gzinflate|str_rot13|system\(|shell_exec" \
      --include="*.php" .
    
    # Bestanden gewijzigd in de afgelopen 14 dagen
    find . -name "*.php" -mtime -14 -type f

    Niet elke hit is malware (sommige plugins gebruiken deze functies legitiem), maar bestanden die én recent gewijzigd zijn én deze functies bevatten verdienen handmatige controle in een code-editor.

    Scan automatisch met WP-CLI en security plugins

    Heb je SSH-toegang, dan is WP-CLI de snelste manier om manipulatie van core bestanden te ontdekken. Deze commando’s vergelijken elk bestand met de officiële checksums van WordPress.org en tonen direct welke bestanden zijn gewijzigd of toegevoegd:

    # Core bestanden verifiëren
    wp core verify-checksums
    
    # Alle plugins verifiëren
    wp plugin verify-checksums --all

    Aanvullend kun je een malwarescanner zoals Wordfence of Sucuri Scanner draaien. Die herkennen bekende malware-signaturen in thema’s, plugins en uploads. Vertrouw nooit blind op één scanner: combineer een plugin-scan met de handmatige checks hierboven, want nieuwe backdoors staan vaak nog niet in signature-databases. Let op: malware komt regelmatig binnen via illegale of “nulled” plugins en thema’s. Waarom dat zo riskant is, lees je in ons artikel over de risico’s van gratis WordPress plugins en thema’s.

    Vergeet .htaccess, cronjobs en must-use plugins niet

    Drie plekken die bij een opschoonactie vaak worden overgeslagen: het .htaccess bestand (aanvallers voegen hier redirects naar phishing-sites toe), de map wp-content/mu-plugins (must-use plugins worden automatisch geladen zonder dat je ze kunt deactiveren) en server-cronjobs die malware na verwijdering opnieuw downloaden. Controleer ze zo:

    # Alle .htaccess bestanden vinden en bekijken
    find . -name ".htaccess" -exec cat {} \;
    
    # Must-use plugins controleren
    ls -la wp-content/mu-plugins/
    
    # Cronjobs van alle relevante gebruikers bekijken
    crontab -l
    sudo ls /etc/cron.d/ /var/spool/cron/crontabs/
    
    # WordPress' eigen geplande taken op vreemde entries checken
    wp cron event list

    Scan database en gebruikersaccounts

    Malware beperkt zich niet altijd tot bestanden. Controleer de wp_options tabel op onbekende scripts in geserialiseerde data en kijk of er extra admin accounts zijn aangemaakt:

    # Alle administrators tonen
    wp user list --role=administrator
    
    # Verdacht account verwijderen en content toewijzen aan jouw account
    wp user delete VERDACHT_ID --reassign=JOUW_ID
    
    # Alle wachtwoorden resetten en sessies vernietigen
    wp user reset-password $(wp user list --field=ID) --skip-email
    wp user session destroy --all $(wp user list --field=ID)
    
    # wp_options doorzoeken op injectiescripts
    wp db query "SELECT option_name FROM wp_options WHERE option_value LIKE '%<script%' OR option_value LIKE '%base64_%';"

    Combineer dit met het instellen van sterke wachtwoorden en bij voorkeur two-factor authenticatie via een security plugin.

    Stap 3: Opschonen, herstellen en beter beveiligen

    Verwijder alle verdachte bestanden en herinstalleer WordPress core, thema’s en plugins vanuit betrouwbare bronnen. Vervang zo veel mogelijk code in plaats van alleen losse regels te verwijderen:

    # Core volledig vervangen door een schone download (behoudt wp-content en wp-config.php)
    wp core download --force --skip-content
    
    # Plugins en thema's opnieuw installeren vanaf WordPress.org
    wp plugin install $(wp plugin list --field=name) --force
    wp theme install $(wp theme list --field=name) --force
    
    # Daarna alles updaten
    wp core update && wp plugin update --all && wp theme update --all
    
    # Security keys vernieuwen zodat gestolen cookies waardeloos worden
    wp config shuffle-salts

    Moet je terugvallen op een backup, kies dan bewust welke methode je gebruikt. In onze handleiding WordPress backup terugzetten zonder downtime vergelijken we vier methodes, inclusief de valkuilen na een hack.

    Stel vervolgens een veiligere hosting en beheeromgeving in. Bij PC Patrol adviseren we vaak managed webhosting, zodat updates, monitoring en beveiligingslagen structureel worden bewaakt. Wil je weten wat dit voor jouw site kan betekenen, bekijk dan onze pagina over managed webhosting.

    Stap 4: Controleer of je site echt schoon is

    Na het opschonen wil je zeker weten dat er niets is achtergebleven. Draai de checksum-verificatie en malwarescan opnieuw en monitor minimaal twee weken je toegangslogs op verdachte requests naar verwijderde bestanden: aanvallers proberen hun backdoor vrijwel altijd opnieuw te bereiken.

    # Herverifiëren na opschonen
    wp core verify-checksums && wp plugin verify-checksums --all
    
    # Toegangslogs live volgen op pogingen om bekende backdoor-bestanden te bereiken
    tail -f /var/log/nginx/access.log | grep -E "\.php" | grep -vE "wp-admin|wp-login|wp-cron|admin-ajax"

    Controleer daarna in Google Search Console of er beveiligingswaarschuwingen of handmatige acties openstaan en vraag indien nodig een beoordeling aan. Check ook of je domein op blocklists staat, bijvoorbeeld via Google Safe Browsing en VirusTotal. Draait je site op een eigen server, lees dan ook hoe je met threat hunting op een Linux VPS verborgen bedreigingen op serverniveau opspoort. Vergeet tot slot niet de onderhoudsmodus weer uit te zetten met wp maintenance-mode deactivate.

    Liever nooit meer zelf malware opsporen?

    Dit stappenplan doorlopen kost al snel een hele dag, en de tweede keer wil je niet meer in deze positie zitten. Besteed je WordPress-beheer uit, dan draaien wij updates, dagelijkse backups, malware-scans en monitoring op de achtergrond, zodat een hack veel minder kans krijgt. Wil je ook de hosting bij ons onderbrengen? Op onze managed WordPress hosting staan Imunify360, LiteSpeed en automatische updates standaard ingeschakeld.

    Veelgestelde vragen over een gehackte WordPress site

    Hoe weet ik of mijn WordPress site gehackt is?

    Signalen dat je WordPress site gehackt is: onverwachte redirects, onbekende admin-gebruikers, vreemde PHP-bestanden in uploads, een dalende positie in Google of een waarschuwing in Search Console. Een combinatie van wp core verify-checksums en een malwarescanner geeft snel uitsluitsel.

    Is een malwarescanner-plugin genoeg om een hack op te lossen?

    Nee. Scanners vinden bekende malware, maar missen vaak verse backdoors en aanpassingen in de database of .htaccess. Volg daarom altijd het volledige stappenplan: quarantaine, handmatige controle, herinstallatie van core en plugins, en nacontrole.

    Hoe voorkom ik dat mijn WordPress site opnieuw gehackt wordt?

    Houd alles up-to-date, gebruik 2FA, verwijder ongebruikte plugins en thema’s, en zorg voor een Web Application Firewall, dagelijkse backups en security monitoring. Op onze blog delen we regelmatig verdiepende artikelen over WordPress veiligheid en hosting, zodat je de kans op een nieuwe hack zo klein mogelijk maakt.

    Tik je bedrijfsnaam in en check de extensies.

    Eén afrekening, drie domeinen, volledige bescherming.