Het bestand xmlrpc.php is een historisch onderdeel van de WordPress-core. Het werd oorspronkelijk ontworpen om externe applicaties (zoals de mobiele WordPress-app of blog-clients) in staat te stellen om via XML-verzoeken te communiceren met de website. Hoewel de REST API dit protocol grotendeels heeft vervangen, blijft XML-RPC standaard actief. Voor WooCommerce-webshops vormt dit een aanzienlijk risico, omdat aanvallers het bestand kunnen misbruiken om uw server in te zetten voor grootschalige Distributed Denial of Service (DDoS) aanvallen op andere websites.

Het mechanisme van een XML-RPC Pingback aanval

XML-RPC ondersteunt een functie genaamd pingback.ping. Het doel van een pingback is om website A automatisch te informeren wanneer website B een link naar website A heeft geplaatst. Dit proces vereist dat de server van website A de link op website B fysiek gaat verifiëren.

Cybercriminelen misbruiken dit vertrouwen. Ze verzamelen een lijst van duizenden legitieme WordPress/WooCommerce-sites waarop XML-RPC actief is. Vervolgens sturen ze een vervalst XML-verzoek naar al deze sites met de instructie: "Website X heeft naar jou gelinkt, controleer dit op URL van website X".

XML
 
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
 <param><value><string>https://target-victim.com/heavy-page</string></value></param>
 <param><value><string>https://uwwoocommerce-shop.nl/een-product/</string></value></param>
</params>
</methodCall>

In plaats van een echte bloglink, vult de hacker bij het doelwit de URL in van een website die hij wil platleggen (het slachtoffer). Gevolgelijk gaan duizenden WordPress-servers tegelijkertijd een HTTP-verzoek sturen naar het slachtoffer. Het slachtoffer bezwijkt onder het verkeer, maar ook uw server raakt overbelast omdat deze constant bezig is met het verwerken van de kwaadaardige XML-verzoeken van de hacker.

Brute-Force via XML-RPC

Naast DDoS-aanvallen ondersteunt XML-RPC de methode wp.getUsersBlogs. Hiermee kunnen aanvallers honderden combinaties van gebruikersnamen en wachtwoorden in één enkel HTTP-verzoek testen. Dit omzeilt traditionele inlog-beperkingen die alleen kijken naar mislukte pogingen op de standaard wp-login.php pagina.

Hoe u XML-RPC effectief uitschakelt

Als u geen gebruikmaakt van specifieke externe applicaties die XML-RPC vereisen, is de absolute best practice om de toegang tot dit bestand volledig te blokkeren op serverniveau.

Methode 1: Blokkeren via .htaccess (Apache)

Voeg de volgende regels toe aan de absolute top van uw .htaccess bestand:

Apache
 
<Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
</Files>

Methode 2: Blokkeren via Nginx

Voeg de volgende regel toe aan het serverconfiguratieblok van uw Nginx-installatie:

Nginx
 
location = /xmlrpc.php {
    deny all;
    access_log off;
    log_not_found off;
}

Conclusie

Het deactiveren van XML-RPC heeft geen enkele invloed op de werking van WooCommerce, uw betaalproviders of de standaard REST API. Het sluit simpelweg een verouderde achterdeur die uw server kwetsbaar maakt voor misbruik door botnets.