À propos de XML-RPC
XML-RPC est un protocole pour les appels à procédure distante qui utilise XML pour l'échange de données. Dans XML-RPC, le client qui veut faire un appel à une méthode distante crée les paramètres d'entrée sous forme de XML et l'envoie via une requête HTTP à un serveur distant mettant en œuvre le protocole XML-RPC.
Comprendre XML-RPC dans WordPress
WordPress est une plateforme de blogging complète. Il est rendu hautement personnalisable et facile à développer le site Web. Utilisation de WordPress XML-RPC peut créer des clients WordPress blogging, certains autres logiciels qui fait des tâches de lots comme la création de plusieurs messages à partir d'un fichier, etc. Le système XML-RPC peut être étendu par les plugins WordPress pour modifier son comportement. La fonctionnalité XML-RPC est activée par défaut depuis WP 3.5. XML-RPC activé par défaut – en particulier avec les appareils mobiles et les applications de bureau tiers qui l'utilisent communiquer avec WordPress.
Le problème avec XMLRPC est qu'il peut causer l'épuisement du processeur et de la mémoire et la base de données site-s pour atteindre le nombre maximum de connexions ouvertes. Cela va faire descendre le site vulnérable (et le serveur) pendant une période de temps, ce qui affectera la disponibilité de votre site Web.
Il y a quatre façons dont l'API XML-RPC de WP pourrait être abusée par un attaquant:
- Collecte d'informations — l'attaquant peut sonder pour des ports spécifiques dans le réseau interne de la cible
- Numérisation des ports — l'attaquant peut héberger des serveurs port-scan dans le réseau interne
- Attaques DoS —Outre le transfert de données, xmprpc.php est également responsable de la mise en œuvre des pingbacks et des trackbacks. Ce sont les notifications que vous recevez lorsqu'un blog ou un site Web tiers est relié à votre site Web. Bien qu'il ait été remplacé, certains sites Web utilisent toujours XML-RPC.php pour la compatibilité arrière. Si vous êtes l'un d'eux, les pirates peuvent lancer des attaques DDoS sur xmlrpc.php en envoyant un grand nombre de pingbacks et en mettant votre site hors d'action ou vous pouvez dire – le rendre indisponible pour vos utilisateurs.
- Tracer le routeur — l'attaquant peut reconfigurer un routeur interne sur le réseau
- Attaques de force brute - XML-RPC (XML-remote processing call) permet d'encoder les appels à distance transportés via HTTP qui vous permet de poster, modifier ou supprimer à distance un fichier ou un contenu de votre site WordPress. À chaque requête, xmprpc.php envoie les informations d'authentification. Il est plus facile de pousser une grande quantité de données à la fois. Mais la capacité de pousser une grande quantité de données à un moment implique que même les pirates peuvent également s'y faufiler un certain nombre de mots de passe. Si un pirate envoie suffisamment de demandes d'authentification avec une combinaison différente de nom d'utilisateur et de mot de passe, ils pourraient l'obtenir correctement, et en conséquence, votre site est compromis.
Vérifiez si XML-RPC est déjà désactivé sur votre blog
Avant d'aller plus loin, nous devons faire un simple contrôle pour valider XML-RPC est activé sur votre blog. Pour tester que essayer d'accéder au fichier xmlrpc.php dans votre navigateur en accédant à l'URL https://domain.com/xmlrpc.php (remplacez domain.com avec votre nom de domaine).
Si elle est désactivée, vous obtiendrez un message interdit --403. Si vous recevez un autre message, lisez plus loin pour comprendre vos options d'atténuation.
Atténuations ou solutions de rechange fondées sur le code
1. Si vous n'utilisez pas la fonctionnalité XML-RPC pour quelque chose, pour vous protéger contre toute vulnérabilité, ajoutez ci-dessous les lignes .htaccess :
# protect xmlrpc <IfModule mod_alias.c> RedirectMatch 403 /xmlrpc.php </IfModule>
2. Pour rediriger les requêtes pour xmlrpc.php vers une page personnalisée, modifiez le RedirectMatch comme suit:
# protect xmlrpc Redirect 301 /xmlrpc.php http://example.com/custom-page.php
3. Refuser tout accès à xmlrpc.php :
# protect xmlrpc <Files xmlrpc.php> Order Deny,Allow Deny from all </Files>
4. Permettre l'accès à xmlrpc.php pour des adresses IP spécifiques uniquement.
# protect xmlrpc <Files xmlrpc.php> Order Deny,Allow Deny from all Allow from <IP> Allow from <IP> </Files>
Vous pouvez également ajouter le code suivant à votre wp config.php après la ligne required once(ABSPATH . ‘wp-settings.php=); si vous voulez désactiver XML-RPC pour votre site.
add_filter('xmlrpc_enabled', '__return_false');

