Un guide complet sur xmlrpc.php dans WordPress (Qu'est-ce que c'est, Risques de sécurité, Comment le désactiver)

Publié: 2020-07-06

La spécification WordPress XML-RPC a été développée pour normaliser la communication entre différents systèmes, ce qui signifie que les applications en dehors de WordPress (telles que d'autres plates-formes de blogs et clients de bureau) peuvent interagir avec WordPress.

Cette spécification fait partie de WordPress depuis sa création et a fait un travail très utile. Sans lui, WordPress aurait été dans son propre silo, séparé du reste d'Internet.

Cependant, xmlrpc.php a ses inconvénients. Il peut introduire des vulnérabilités sur votre site WordPress et a maintenant été remplacé par l'API WordPress REST, qui fait un bien meilleur travail d'ouverture de WordPress à d'autres applications.

Dans cet article, nous expliquerons ce qu'est xmlrpc.php, pourquoi vous devriez le désactiver et vous aiderons à déterminer s'il s'exécute sur votre site WordPress.

Prêt? Plongeons-nous !

Qu'est-ce que xmlrpc.php ?

XML-RPC est une spécification qui permet la communication entre WordPress et d'autres systèmes. Pour ce faire, il a standardisé ces communications, en utilisant HTTP comme mécanisme de transport et XML comme mécanisme de codage.

XML-RPC est antérieur à WordPress : il était présent dans le logiciel de blogging b2, qui a été dérivé pour créer WordPress en 2003. Le code derrière le système est stocké dans un fichier appelé xmlrpc.php , dans le répertoire racine du site. Et il est toujours là, même si XML-RPC est largement obsolète.

Dans les premières versions de WordPress, XML-RPC était désactivé par défaut. Mais depuis la version 3.5, il est activé par défaut. La principale raison en était de permettre à l'application mobile WordPress de communiquer avec votre installation WordPress.

Si vous utilisiez l'application mobile WordPress avant la version 3.5, vous vous souviendrez peut-être avoir dû activer XML-RPC sur votre site pour que l'application puisse publier du contenu. C'était parce que l'application n'exécutait pas WordPress elle-même ; au lieu de cela, il s'agissait d'une application distincte communiquant avec votre site WordPress à l'aide de xmlrpc.php.

Mais ce n'était pas seulement l'application mobile pour laquelle XML-RPC était utilisé : il était également utilisé pour permettre la communication entre WordPress et d'autres plates-formes de blogs, il activait les trackbacks et les pingbacks, et il alimentait le plugin Jetpack qui relie un WordPress auto-hébergé site vers WordPress.com.

Mais depuis que l'API REST a été intégrée au cœur de WordPress, le fichier xmlrpc.php n'est plus utilisé pour cette communication. Au lieu de cela, l'API REST est utilisée pour communiquer avec l'application mobile WordPress, avec les clients de bureau, avec d'autres plateformes de blogs, avec WordPress.com (pour le plugin Jetpack) et avec d'autres systèmes et services. La gamme de systèmes avec lesquels l'API REST peut interagir est bien supérieure à celle autorisée par xmlrpc.php. De plus, il y a beaucoup plus de flexibilité.

Étant donné que l'API REST a remplacé XML-RPC, vous devez maintenant désactiver xmlrpc.php sur votre site. Voyons pourquoi.

Pourquoi vous devriez désactiver xmlrpc.php

La principale raison pour laquelle vous devriez désactiver xmlrpc.php sur votre site WordPress est qu'il introduit des failles de sécurité et peut être la cible d'attaques.

Maintenant que XML-RPC n'est plus nécessaire pour communiquer en dehors de WordPress, il n'y a aucune raison de le garder actif. C'est pourquoi il est sage de rendre votre site plus sûr en le désactivant.

Si xmlrpc.php est un problème de sécurité et qu'il ne fonctionne plus, pourquoi n'a-t-il pas été complètement supprimé de WordPress ?

La raison en est que l'une des principales caractéristiques de WordPress sera toujours la rétrocompatibilité. Si vous gérez bien votre site, vous saurez que la mise à jour de WordPress, ainsi que de tous les plugins ou thèmes, est essentielle.

Mais il y aura toujours des propriétaires de sites Web qui ne voudront pas ou ne pourront pas mettre à jour leur version de WordPress. S'ils exécutent une version antérieure à l'API REST, ils auront toujours besoin d'accéder à xmlrpc.php.

Examinons plus en détail les vulnérabilités spécifiques.

Attaques DDoS via des pingbacks XML-RPC

L'une des fonctions activées par xmlrpc.php était les pingbacks et les trackbacks. Ce sont les notifications qui apparaissent dans les commentaires de votre site lorsqu'un autre blog ou site propose un lien vers votre contenu.

La spécification XML-RPC a rendu cette communication possible, mais elle a été remplacée par l'API REST (comme nous l'avons déjà vu).

Si XML-RPC est activé sur votre site, un pirate pourrait potentiellement monter une attaque DDoS sur votre site en exploitant xmlrpc.php pour envoyer un grand nombre de pingbacks à votre site en peu de temps. Cela pourrait surcharger votre serveur et mettre votre site hors service.

Attaques par force brute via XML-RPC

Chaque fois que xmlrpc.php fait une requête, il envoie le nom d'utilisateur et le mot de passe pour l'authentification. Cela présente une responsabilité de sécurité importante et c'est quelque chose que l'API REST ne fait pas. En fait, l'API REST utilise OAuth qui envoie des jetons pour l'authentification au lieu de noms d'utilisateur ou de mots de passe.

Étant donné que xmlrpc.php envoie des informations d'authentification avec chaque requête, les pirates pourraient les utiliser pour tenter d'accéder à votre site. Une attaque par force brute comme celle-ci pourrait leur permettre d'insérer du contenu, de supprimer du code ou d'endommager votre base de données.

Si un attaquant envoie suffisamment de requêtes à votre site, chacune avec une paire de nom d'utilisateur et de mot de passe différente, il y a une chance qu'il finisse par tomber sur la bonne, lui donnant accès à votre site.

C'est pourquoi, si vous utilisez une version à jour de WordPress, qui utilise l'API REST pour communiquer avec des systèmes externes, vous devez désactiver xmlrpc.php . Ce n'est pas nécessaire et cela pourrait rendre votre site vulnérable.


Xmlrpc.php fonctionne-t-il sur votre site WordPress ?

La première chose que vous devez faire est d'identifier si xmlrpc.php est en cours d'exécution sur votre site WordPress.

Il ne s'agit pas simplement de vérifier si le fichier est là : il fait partie de chaque installation WordPress et sera présent même si XML-RPC est désactivé.

Pour vérifier si xmlrpc.php est activé sur votre site, utilisez le service de validation WordPress XML-RPC. Cela vérifiera votre site et vous dira si xmlrpc.php est activé.

Service de validation WordPress XML-RPC
Service de validation WordPress XML-RPC

Voici le résultat que j'ai obtenu lorsque j'ai vérifié ce site sur le service.

Vérification Kinsta XML-RPC
Vérification Kinsta XML-RPC

Cela montre que xmlrpc.php a été désactivé sur kinsta.com. Donc, si vous exécutez la vérification et découvrez que xmlrpc.php est toujours activé sur votre site, comment le désactiver ?

Comment désactiver xmlrpc.php

Il existe trois façons de désactiver xmlrpc.php :

Jetons un coup d'œil à chacun individuellement.

Comment désactiver xmlrpc.php avec un plugin

L'installation d'un plugin pour désactiver xmlrpc.php est le moyen le plus simple de le faire. Le plugin Disable XML-RPC le désactivera complètement. Voici comment vous l'utilisez.

Mon point de départ est mon propre site Web, sur lequel xmlrpc.php est activé. Vous pouvez le voir via la vérification que j'ai faite:

Site Web de Rachel McCollin - Vérification XML-RPC
Site Web de Rachel McCollin – Vérification XML-RPC

Installez le plugin via votre écran Plugins dans l'administrateur WordPress et activez-le.

Vous n'avez rien d'autre à faire : l'activation du plugin entraînera la désactivation de XML-RPC. Maintenant, si je lance une vérification sur mon site, j'obtiens un résultat différent :

Site Web de Rachel McCollin - deuxième vérification XML-RPC
Site Web de Rachel McCollin – deuxième vérification XML-RPC

C'est si simple!

Désactiver les pingbacks XML-RPC avec un plugin

Mais que se passe-t-il si vous souhaitez désactiver certains aspects de xmlrpc.php et pas d'autres ? Le plug-in Disable XML-RPC Pingback vous permet de désactiver uniquement la fonctionnalité de pingback, ce qui signifie que vous avez toujours accès à d'autres fonctionnalités de XML-RPC si vous en avez besoin.

Le plugin fonctionne de la même manière que le plugin Disable XML-RPC : il suffit de l'installer, de l'activer et il fonctionnera.

Configurer XML-RPC et l'activation de l'API REST avec un plugin

Si vous souhaitez un contrôle plus précis de la configuration de xmlrpc.php et de l'API REST sur votre site, vous pouvez installer le plug-in REST XML-RPC Data Checker.

Une fois que vous avez installé et activé ce plugin, allez dans Paramètres > REST XML-RPC Data Checker et cliquez sur l'onglet XML-RPC .

Vérificateur de données REST XML-RPC
Vérificateur de données REST XML-RPC

Cela vous permet de configurer exactement quels aspects de xmlrpc.php sont actifs sur votre site.

Besoin d'un hébergement ultra-rapide, sécurisé et convivial pour les développeurs ? Kinsta est conçu pour les développeurs WordPress et fournit de nombreux outils et un tableau de bord puissant. Découvrez nos forfaits

Alternativement, vous pouvez simplement l'éteindre complètement. Et si vous voulez également contrôler l'API REST, le plugin vous donne un autre onglet pour cela.

Comment désactiver xmlrpc.php sans plugin

Si vous préférez ne pas installer d'autre plugin sur votre site, vous pouvez désactiver xmlrpc.php en ajoutant du code dans un filtre ou dans votre fichier .htaccess. Regardons les deux méthodes.

Désactiver xmlrpc.php via un filtre

Une option ici consiste à utiliser le filtre xmlrpc_enabled pour désactiver xmlrpc.php. Ajoutez cette fonction à un plugin et activez-la sur votre site :

 add_filter( 'xmlrpc_enabled', '__return_false' );

Vous pouvez l'ajouter à votre fichier de fonctions de thème, mais il est préférable d'écrire un plugin.

L'autre option concerne l'édition de votre fichier .htaccess, disponible chez les hébergeurs utilisant Apache, en vous connectant au serveur de votre site via FTP ou cPanel.

Désactiver xmlrpc.php via le fichier .htacess

Dans votre fichier .htaccess , ajoutez ce code :

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

Assurez-vous de faire une copie de l'ancien fichier avant de le faire, juste au cas où vous rencontreriez des problèmes.

Demandez à votre fournisseur d'hébergement de désactiver xmlrpc.php

Alternativement, certains hébergeurs désactiveront xmlrpc.php si une attaque est détectée.

Chez Kinsta, lorsqu'une attaque via XML-RPC est détectée, un extrait de code est automatiquement ajouté au fichier Nginx.config :

 location ~* ^/xmlrpc.php$ { return 403; }

Cela produira une erreur 403 et arrêtera l'attaque dans son élan.

Si vous le faites vous-même, il est préférable d'utiliser l'une des méthodes ci-dessus. Mais avant de le faire, vérifiez toujours auprès de votre fournisseur d'hébergement.

Quand avez-vous besoin d'activer xmlrpc.php ?

Il peut arriver que vous ayez besoin d'activer xmlrpc.php sur votre site WordPress ou que vous ne devriez pas le désactiver complètement.

Ceux-ci sont:

  • Vous n'exécutez pas l'API REST (non conseillé, mais nécessaire dans certaines situations) mais vous devez communiquer entre votre site WordPress et d'autres systèmes.
  • Vous ne parvenez pas à mettre à jour WordPress vers la version 4.4 ou supérieure, vous n'avez donc pas accès à l'API REST. Cela peut être dû à des restrictions dans votre configuration d'hébergement (auquel cas je changerais de fournisseur d'hébergement) ou à une incompatibilité de thème ou de plugins (auquel cas je les remplacerais ou les mettrais à jour).
  • Vous travaillez avec une application externe qui ne peut pas accéder à l'API WP REST mais peut accéder à XML-RPC (à long terme, je conseillerais de mettre à jour cette application ou de passer à une application compatible REST).

C'est ça! Aucune de ces raisons n'est particulièrement valable pour maintenir la spécification XML-RPC activée.

La seule raison pour laquelle il est toujours dans WordPress est la rétrocompatibilité et vous ne l'utiliserez que si vous travaillez avec des systèmes obsolètes. Pour tous ceux qui souhaitent maintenir leurs sites à jour et travailler avec les dernières technologies, la désactivation de xmlrpc.php est la solution.

XML-RPC était autrefois une partie essentielle de WordPress. Maintenant, cela représente un risque pour la sécurité - Ce guide vous montrera exactement comment le désactiver sur votre site. Cliquez pour tweeter

Résumé

La spécification XML-RPC a été développée avant même la création de WordPress, comme moyen pour WordPress de communiquer avec des systèmes et applications externes. Il présente des failles de sécurité inhérentes et pourrait rendre votre site vulnérable aux attaques.

Maintenant que l'API REST permet à votre site de communiquer avec d'autres applications, vous pouvez désactiver xmlrpc.php en toute sécurité. Si vous suivez les étapes ci-dessus, en le désactivant, vous améliorerez la sécurité de votre site.