Wat lees je hier?
Magento is een populair e-commerce platform. Daarom trekt het ook de aandacht van criminelen. Er worden dagelijks veel transacties gedaan die doelwit worden van malafide praktijken. Onlangs heb ik twee verschillende webshops moeten opschonen nadat ze gehackt bleken te zijn. In dit artikel laat ik zien welke stappen ik daarvoor heb genomen.
“De meest voor de hand liggende “lekken” zijn missende security patches die zijn misbruikt. Over het belang daarvan hebben we al eerder eens geschreven in het artikel Magento security Patches.”
Wat moet je doen na een Magento hack?
- Nagaan via welk route de hack is ontstaan
- Deze route dichten
- De infecties opschonen en de hackers toegang ontsluiten
De stappen zien er erg simpel uit maar het is een arbeidsintensief proces.
Hoe is de hack of infectie ontstaan?
Er zijn verschillende manieren om dit te achterhalen. De meest voor de hand liggende “lekken” zijn missende security patches die zijn misbruikt. Over het belang daarvan hebben we al eerder eens geschreven in het artikel Magento security Patches. Dat kunnen overigens ook lekken zijn in gebruikte extensies in de webwinkel.
Er zijn een aantal manieren om te weten te komen of er missende patches zijn:
- Magereport; een gebruiksvriendelijke tool die overzichtelijk weergeeft of er patches missen
- Magentary security test; ook een tool, deze ziet er niet zo gelikt uit maar geeft zeker ook bruikbare info
applied.patches.list
bekijken. Hierin staat een log van alle geïnstalleerde patches. Dit geldt alleen voor Magento 1. De locatie van het bestand is app/etc/applied.patches.list
- Voor het opschonen van de hacks van de twee webshops heb ik gebruikt gemaakt van de software van onze partner Sansec, namelijk eComscan. Deze heeft het voordeel ook lekken in extensies van 3e partijen te vinden. Dit is wel een commerciële tool en daar zijn dus kosten aan verbonden.
- Magescan; dit is ook een commandline tool die ook scant op Magento patches en lekken in extensies: /steverobbins/magescan. Deze tool is gratis te gebruiken.
- Maldet; dan is er nog Linux Malware Detect (Maldet). Dat is een tool die scant op malware infecties. Deze kan ook helpen geïnfecteerde bestanden te vinden.

Magento lekken dichten
Na het uitvoeren van de vorige stappen zullen er waarschijnlijk één of meer problemen naar voren gekomen zijn. Het is belangrijk om deze lekken te dichten voordat je de boel gaat opschonen, anders kan de misbruiker via die lekken weer misbruik maken van het lek. Dit gaat vaak automatisch en gebeurt zelfs, terwijl je bezig bent met opschonen. Daarom eerst het lek dichten, dan opschonen.
Het zal gaan om de volgende onderdelen:
- Magento core lek; patches installeren of Magento versie updaten
- Lek in extensie van derde partij; extensie updaten of helemaal verwijderen (alleen uitschakelen kan het lek in sommige gevallen nog steeds misbruikt worden)
Magento infecties opschonen en hackers ontsluiten
Deze laatste stap is vaak het meeste werk. In principe heb je geen idee welke bestanden of database velden “geïnfecteerd” zijn. eComscan maakt dat gelukkig makkelijk inzichtelijk via een rapport. Maar er zijn ook andere manieren.
Manieren om infecties op te sporen:
- Maldet; dan is er nog Linux Malware Detect (Maldet). Dat is een tool die scant op malware infecties. Deze helpt ook geïnfecteerde bestanden te vinden. /projects/linux-malware-detect/
- Magento Malware Scanner: deze wordt niet meer onderhouden en is overgegaan op de eerder genoemde eComscan. Maar kan wellicht toch interessant zijn om te noemen: /gwillem/magento-malware-scanner
- Voor onze klanten gebruiken wij altijd GIT versiebeheer. Hierin worden wijzigingen in bestanden bij gehouden. De logs (
git log
) of status (git status
) hiervan bekijken geeft inzicht in eventuele infecties. - Via de commandline zoeken naar bestanden die gewijzigd zijn in de afgelopen 30 dagen. Voor bijvoorbeeld magento 1;
find magento1/ -type f -mtime -30 -not -path 'magento1/var/*' -exec ls -l {} \\;
- Voor Magento 1: kijk vooral ook in Systeem > Configuratie > Algemeen: Ontwerp en dan HTML Head: scripts en Footer scripts. Dit zijn invoervelden waarmee je rechtsreeks code kan plaatsen op de frontend van de shop. Deze velden worden vaak misbruikt. Let op! Soms kan het veld leeg lijken. Scroll in het veld helemaal naar beneden om zeker te weten of het leeg is of niet.

Via deze manieren zouden in principe alle infecties opgespoord moeten worden. Vervolgens is het zaak afhankelijk van de infectie deze op te schonen.
- Van Magento bestanden die geïnfecteerd zijn kun je de originele versie uit de repository halen. Let op! Gebruik wel de repository die overeenkomt met de versie van Magento die je gebruikt. Anders kunnen er onregelmatigheden ontstaan die je niet wilt.
- Geïnfecteerde bestanden die niet tot Magento behoren zou je in principe kunnen verwijderen. Je kan nagaan of ze tot Magento core behoren door ook weer in de repository te kijken. Om zeker te weten dat het bestand niet een specifiek doel heeft, kun je de inhoud uiteraard bekijken en indien aanwezig eventueel ook via GIT controleren wat de geschiedenis van het bestand is.
- Database velden zouden per keer beoordeeld moeten worden of het geen wat in het veld malafide is of niet.
- Administrator lijst bekijken en alle onbekende/malafide admins verwijderen
Veilig en infectie vrij
Verder is het aan te raden onderstaande stappen ook te doen. Deze stappen heb ik ook genomen om de shops weer veilig en infectie vrij te krijgen. Maar vooral ook om te zorgen dat ze niet direct weer geïnfecteerd worden, omdat gevoelige data in handen kan zijn van de misbruiker.
- Alle admin wachtwoorden regelmatig tijdens het opschoonproces resetten. Dit kan makkelijk van alle Magento admins in één keer via dit script (zie script hieronder)
- Admin url minimaal één keer aanpassen
- Na het installeren van patches de Magento “compilation” functie opnieuw draaien wanneer deze gebruikt wordt. Vervolgens de cache legen. Dit is een functie die alle code cached onder “src/”. Als je dit niet doet kunnen de gedichte lekken nog steeds actief blijven.
- Na het dichten van de lekken kan het alsnog zijn dat er lekken actief zijn. Vaak kom ik shops tegen waarbij de codebase een rommeltje is. Er bestaan bijvoorbeeld verschillende kopieën van de site onder /dev, /test, /copy /staging etc. Zorg dat deze verwijderd of niet te bereiken zijn.
- Ongebruikte modules verwijderen
- Database wachtwoord(en) wijzigen

# Script to reset passwords of all admin users
n98=./n98-magerun.phar // Change to match Magerun instance
$n98 admin:user:list –format=csv | grep ,active | while read row;
do
user=$(echo $row | cut -d, -f2)
pass=$(tr -cd ‘[:alnum:]’ < /dev/urandom | fold -w10 | head -n1)
echo “$user -> $pass”
$n98 admin:user:change-password “$user” $pass >/dev/null
done
Voorkomen is beter dan genezen
Ook in dit geval geldt dat voorkomen beter is dan genezen. Een gecompromitteerde shop veroorzaakt veel problemen. Naast directe schade door misgelopen omzet kan het ook nog eens extra kosten met zich meebrengen naast natuurlijk de kosten voor herstel.
Wat voor problemen kunnen ontstaan?
- ISO-certificeringen (van jezelf of partners) kunnen in gevaar komen
- Tegoeden bij betaalproviders kunnen bevroren worden
- Een keuring van gecertificeerde bedrijven kunnen geëist worden voor toegang tot tegoeden
- Creditcard gegevens kunnen gestolen en misbruikt worden
- Persoonsgegevens kunnen gestolen en misbruikt worden waarbij boetes van Autoriteit Persoonsgegevens op de loer liggen.
Wat te doen om een Magento hack te voorkomen?
- Zorg dat de shop up-to-date is als het gaat om versie en/of patches
- Zorg voor een goede hostingpartij waarbij security lekken op hosting niveau gedicht worden en waarbij security hoog in het vaandel staat
- Zorg voor dagelijkse malware scans
- Zorg voor het bekijken en oplossen van problemen uit de error logs om de shop in stabiele conditie te houden
Voor onze klanten die een support contract hebben nemen wij dit helemaal uit handen. Wij ontzorgen ze op dit gebied, zodat ze hier niet naar om hoeven te kijken.
Handige checklist downloaden?
Wij hebben een handige checklist gemaakt om te helpen bij het oplossen van hacks en opschonen van infecties. Daarnaast zijn er ook een aantal punten om je shop in goede conditie te houden. Verder bevat het nog enkele extra tips voor een veiligere en stabielere shop. Download de checklist.