Brute force aanvallen op WordPress via XML-RPC

  • door

Sinds een paar dagen wordt er door onder meer Sucuri gewaarschuwd voor een nieuw soort aanval. Deze aanval is anders dan een ‘gewone’ brute force aanval, waarbij botnets worden gebruikt om grote aantallen inlognaam en wachtwoord combinaties te gokken en op die manier toegang te krijgen tot je WordPress installatie.

Dergelijke aanvallen zijn redelijk eenvoudig te stoppen omdat er grote aantallen inlogpogingen worden gedaan vanaf een beperkt aantal IP adressen. Om bijvoorbeeld 500 wachtwoorden te proberen bij 1 en dezelfde inlognaam moeten ook 500 aanroepen worden gedaan vanaf die IP adressen. Dat valt op. Blokkeer vervolgens die adressen, en de aanval zal stoppen. Veel beveiligingsplugins doen dit automatisch nadat de ingestelde grens van het aantal foutieve inlogpogingen is bereikt.

Deze nieuwe vorm is stukken gevaarlijker omdat via het aanroepen van een mogelijkheid in de XML-RPC functie van WordPress (en veel andere cms’en trouwens), de system.multicall functie, een aanvaller in één enkele aanroep grote aantallen wachtwoorden kan proberen. 500 tot wel 1000 stuks. Omdat daarbij de aanroep vanaf een IP adres dus beperkt blijft tot onder de 50 (dat is meestal de grens waarbij een beveiligingsplugin een IP adres blokkeert) is het erg lastig om te stoppen.

Er zijn een aantal oplossingen, allemaal te lezen op de blogpost van Sucuri overigens, waarvan de eenvoudigste is om toegang tot XML-RPC gewoon te blokkeren. Daartoe kun je dit:

<files xmlrpc.php=””>
Order Allow,Deny
Deny from all
</files>

Aan je .htaccess file toevoegen. Het nadeel is dat wanneer je Jetpack gebruikt, die niet meer zonder meer goed zal werken omdat die van deze functionaliteit gebruik maakt. En ook WordPress apps zullen niet meer zonder meer werken.

Er zijn plugins die je hiertegen beschermen:

 

De beste beveiliging hiertegen is nog steeds een enorm sterk wachtwoord, één die niet zomaar te raden is en hoofdletters, cijfers, kleine letters en speciale leestekens bevat, geen bestaand woord is, en voldoende lang is. Dergelijke wachtwoorden kosten heel veel tijd om te raden, hopelijk meer tijd dan een aanvaller geduld heeft.