Gehackte WordPress site opruimen

Gehackte WordPress website opruimen

security, protection, anti virus-265130.jpg

Je WordPress website is gehackt en je bent er net achter gekomen of vervelender, je hebt net een bericht gehad van je hoster of nog erger je klant dat je site spam weergeeft. Voordat je het weet wordt je site (deels) door je hoster geblokkeerd en of door Google op de zwarte lijst gezet. Hier moet je natuurlijk zo spoedig mogelijk wat aan doen! Maar wat? In dit artikel gaan we verder in hoe je dit eventueel kan oplossen.

Scenario I – Goede Backup beschikbaar

Er is een goede backup om mee te werken die recent genoeg is, schoon is en op basis waarvan weer gewerkt kan worden.

Logbestanden, database en bestanden doornemen

Voordat we de backup terugzetten is het nuttig om de logs door te nemen en de bestanden te doorzoeken op sporen en kwaadaardige code die de hacker heeft achter gelaten. Hier kunnen we zaken van leren. Aangezien we in dit scenario een goede backup hebben is deze stap niet noodzakelijk. En aangezien deze stap redelijk wat kennis van PHP, XHTML, JavaScript en CSS vereist is deze stap niet voor iedereen in de wieg gelegd. In het geval van scenario twee is deze stap wel noodzakelijk. Zie scenario twee voor verdere uitleg.

Backup terugzetten

Mocht je een backup van je site inclusief de database hebben en is deze recent genoeg dan zet je deze terug d.m.v. FTP en PMA. Als alle bestanden zo zijn vervangen heb je geen besmette bestanden meer. Je zult echter nog wel moeten nagaan waar het mis was gegaan.

Bestandrechten en maprechten nagaan

In principe, als een hoster de server goed heeft geconfigureerd, moeten alle mappen CHMOD 755 zijn en alle bestanden 644. Hiermee kun je als algemene gebruiker en gebruiker met webserver rechten alle nodige handelingen op je WordPress website verrichten. Deze rechten kun je vanaf de terminal met een SSH verbinding doornemen of met je FTP cliënt – FileZilla aanbevolen.

Wachtwoorden aanpassen

Wachtwoorden van je database en FTP account kunnen het beste worden aangepast om te voorkomen dat de hacker, mocht hij deze hebben verkregen, deze zal gebruiken om zaken op je site aan te passen

Alles Updaten

Na het uploaden van de goede backup is het zeer verstandig om te zorgen dat je site de laagtste WordPress versie draait en met de de meest recente plugin versies werkt. Dus updaten die handel!

Scenario II – Geen goede Backup

Mocht je geen geschikte backup hebben, dan zul je je handen uit je mouwen moeten steken en alles nagaan op spam en of kwaadaardige code. Dit scenario komt helaas vaak genoeg voor.

NB Deze stappen vereisen de nodige kennis van XHTML, CSS, PHP en of terminal commando’s!

Maak een nieuwe backup

Maak een backup van alles wat je hebt – database en bestanden – aangezien je straks zaken gaat aanpassen en als er iets misgaat wil je wel een bestand of de database kunnen terugzetten.

Sherlock Holmes Mode

Logzoektocht

Check all logbestanden – access  en error logs – op verdachte en recente activiteiten. Deze kunnen je helpen om erachter te komen welke bestanden zijn aangepast. Voor doorzaken van de Apache error logs kun je dit vaak via Plesk of Cpanel doen.

SSH Search and Destroy

Om alle bestanden snel te doorzoeken om een aantal standaard methodes waarmee hackers code opslaan kun je vanuit de terminal – Onder Windows met PuTTY – met SSH toegang tot je website of met een lokale kopie op je PC of Mac snel alle bestanden doorzoeken. Dit wil niet zeggen dat je alles hiermee kan te pakken krijgen, maar wel veel. De volgende commando’s zijn top:

Op versluierde (obfuscated) code zoeken. Hackers versleutelen of versluieren vaak hun code

Zoeken op code die wordt verborgen door als base64 code weer te geven:

1 grep -r base64_decode *

Nakijken of je FTP account gehackt is

1 last -i | grep youruser

 

1 last -if /var/log/wtmp.1 | grep youruser

Op recent aangepaste bestanden zoeken – in dit geval gedurende de laatste drie dagen

1 find /home/yourusername/www.yourwebsite.com/ ! -name "log" -mtime -3

Mocht je niet met de terminal uit de voeten kunnen gebruikt dan de optie die hierna volgt.

Exploit Scanner

Installeer Exploit Scanner als plugin en draai deze vanuit je WordPress Dashboard. Deze plugin doet hetzelfde wat je vanaf de terminal kan doen. Dat wil zeggen, deze plugin zoekt op code die verdacht is en weergeeft deze weer in een lijst. Op basis van de lijst kun je dan bestanden controleren. De plugin zoekt op code zoals

1 base64_decode

 

1 eval(

en op

1 visibilityhidden

. Sommige hits zullen false positives zijn dus je moet alles wel goed controleren!

Voorbeeld van kwaadaardige code die ik onlangs had verwijderd (niet compleet en breaks toegevoegd):

1
2
3
4
5
6
eval (base64_decode("ZXJyb3JfcmVwb3J0aW
5nKDApOwokYm90X2xpc3QgPSBhcnJheSgiOC
42LjQ4IiwiNjIuMTcyLjE5OSIsIjYyLjI3Lj
U5IiwiNjMuMTYzLjEwMiIsIjY0LjE1Ny4xMzciL
CI2NC4xNTcuMTM4IiwiNjQuMjMzLjE3MyIsIjY
0LjY4LjgwIiwiNjQuN

Vaak wordt er code op verschillende locaties in verschillende bestanden geplaats. Daarnaast zijn er ergens – waar het lek zat – bestanden geplaatst die deze code genereerde of een extern bestand de mogelijkheid gaven dit te doen. Een lek door het gebruik van timthumb of thumb.php in vele thema’s was laatst de oorzaak (hier uitleg en fix) .

Bestanden vergelijken

Je kunt ook een schone kopie van WordPress (dezelfde versie als op je site) vergelijken met de besmette versie. Daarvoor gebruik ik Meld.  Maar je kunt op *Nix dit ook met een commando doen:

1 diff --brief --recursive <dir 1> <dir 2>

Deze methode is handig voor de wp-admin en wp-includes map. Niet zozeer voor de andere mappen.

Maprechten controleren

Na het opruimen alle bestandsrechten nakijken zoals in scenario I hierboven aangegeven.

Wachtwoorden aanpassen & Updaten

Zoals in scenario I aangegeven ook de wachtwoorden van de database en gebruikers wijzigen alsmede die voor FTP. Better safe than sorry! Zodra dat gedaan is kun je de zaken updaten. En daarmee bedoelen we WordPress en alle bestaande plugins die kunnen worden upgedate.