In april 2025 werd ik gevraagd om een gehackte website op te schonen. Dat ging goed en alles was opgeruimd, maar bij na het inloggen op de site bleek deze al heel snel weer een probleem te tonen. Hierbij was 1 core bestand (wp-includes/meta.php
) aangepast en de rechten ervan aangepast, zodat deze niet meer gelezen kon worden door WP.
Zoektocht
Alle bestanden waren verder schoon en ook in de database was niets te vinden. Er werd niet ingelogd op de site of het hostingaccount en in de access log was niets te zien van een hacker. Sterker nog, ik had de toegang voor iedereen dicht gezet, dus verkeer naar de site was niet eens mogelijk, behalve voor mijn eigen verbinding.
In het hostingpaneel (IONOS) had ik al gecontroleerd of er cron jobs waren opgevoerd voor deze gebruiker, maar dat was niet het geval. Na een goede nachtrust (het was inmiddels al laat in de avond) vond ik nog een optie om via SSH in te loggen op het account en toen had ik de boosdoener gelukkig snel gevonden!
Crontab
Ondanks dat het account suggereerde dat er geen cron job was voor deze gebruiker, wees het systeem toch duidelijk aan dat dit wel het geval was:

Met crontab -l
vraag ik de jobs op, met crontab -r
maak ik de lijst leeg. Het laatste commando is ter controle.
De * * * * *
zorgt er voor dat het elke minuut wordt uitgevoerd.
Wat doet de code precies?
Aangezien deze code versleuteld is heb ik met online tools dit proberen uit te zoeken. Via Mobilefish.com heb ik de code in deze functie ontsleuteld, wat resulteerde in:

Hier zien we opnieuw een code met een functie die de code evalueert. Dit keer met iets andere versleuteling, dus daarvoor heb ik Base64 Decode and Encode gebruikt met dit resultaat:

Het pad bevatte informatie van de klant, dus dat heb ik even verborgen, maar hier zien we al meer wat het doet. Deze ‘serialized content’ wordt door de eerdere functie opgeknipt en verwerkt. Het bestand wp-includes/meta.php
wordt hiermee van extra code voorzien en opnieuw weggeschreven.
Eind goed al goed!
Na het verwijderen van de cron job was het probleem gelukkig verholpen en bleef de website schoon.