Hushfort

Qu’est-ce que xmlrpc.php, et comment désactiver XML-RPC sur WordPress ?

Par Eureka Studio · Mis à jour le

En bref

XML-RPC permet à des applications de se connecter via xmlrpc.php, une porte distincte que le masquage de wp-login.php ne ferme pas. Le désactiver est sans risque, sauf si vous utilisez Jetpack ou l’application mobile WordPress. Bloquez le fichier dans .htaccess, ajoutez le filtre xmlrpc_enabled, ou utilisez une extension qui ferme la connexion par XML-RPC tout en gardant les pingbacks. Puis testez.

Étapes

  1. 1Étape 1

    Vérifiez si xmlrpc.php répond

    Rendez-vous sur yoursite.com/xmlrpc.php. Si vous voyez « XML-RPC server accepts POST requests only. », la porte est ouverte.

    yoursite.com/xmlrpc.php qui répond : XML-RPC server accepts POST requests only
  2. 2Étape 2

    Comprenez pourquoi c’est important

    L’Analyse de surface de Hushfort fait un vrai test. Sur un site ouvert, elle signale que des mots de passe peuvent être testés en contournant le chemin de connexion masqué, et que system.multicall permet à une seule requête de transporter des centaines de tentatives.

    Analyse de surface dans la Vue d’ensemble de Hushfort : XML-RPC ouvert, system.multicall également ouvert, et la liste des utilisateurs REST ainsi que le scan des auteurs qui laissent fuiter l’identifiant demo-admin
  3. 3Étape 3

    Choisissez jusqu’où la fermer

    Ouvrez Hushfort → Durcissement de surface et cochez Activer le durcissement de surface. XML-RPC est réglé par défaut sur « Désactiver la connexion, garder les pings (recommandé) », ce qui convient à la plupart des sites. « Désactiver complètement » est le plus strict mais bloque Jetpack et l’application mobile officielle. Cliquez sur Enregistrer les modifications.

    Durcissement de surface activé, avec XML-RPC réglé sur Désactiver la connexion, garder les pings (recommandé)
  4. 4Étape 4

    Vérifiez que la connexion par XML-RPC est refusée

    De retour dans la Vue d’ensemble, cliquez sur Relancer l’analyse. La ligne XML-RPC doit désormais indiquer « Connexion désactivée — les tentatives de mot de passe sont rejetées, les pingbacks continuent de fonctionner. »

    Analyse de surface après la correction : XML-RPC, liste des utilisateurs REST, scan des auteurs et liste des auteurs du plan du site tous fermés

Pourquoi c’est important

XML-RPC est une ancienne interface de contrôle à distance de WordPress. Avant l’arrivée de l’API REST, c’était ainsi que les éditeurs de bureau et les applications mobiles publiaient des articles. Elle est toujours livrée avec chaque site WordPress, à l’adresse /xmlrpc.php, et elle accepte toujours un identifiant et un mot de passe à chaque requête.

Cela en fait une seconde porte de connexion. Masquer wp-login.php ne la touche pas. Le code de limitation des connexions qui ne surveille que le formulaire de connexion ne la voit pas. Et avec system.multicall, une seule requête HTTP peut transporter des centaines de tentatives de mot de passe. Une limite qui compte les requêtes voit une tentative là où il y en avait cinq cents.

Ce n’est pas théorique. Nous avons créé cette couche après qu’une boutique a continué de recevoir des tentatives de mot de passe via XML-RPC alors que sa page de connexion était déjà masquée.

Utilisez-vous XML-RPC ? Probablement pas, si rien de ce qui suit ne vous concerne :

  • Vous connectez le site à Jetpack.
  • Vous publiez ou modérez depuis l’application mobile officielle WordPress.
  • Vous utilisez un ancien outil de blog pour ordinateur, ou un service qui vous demande votre identifiant et votre mot de passe WordPress (plutôt qu’un mot de passe d’application) pour publier à votre place.
  • Vous comptez sur les pingbacks d’autres blogs.

Dans le doute, fermez uniquement la connexion et gardez les pingbacks. Cela supprime le risque de devinette des mots de passe et laisse en place les éléments inoffensifs. Vous pourrez toujours être plus strict plus tard.

Erreurs courantes

  • Masquer la connexion et s’arrêter là. Les tentatives de mot de passe se déplacent tout simplement vers xmlrpc.php.
  • Bloquer tout le fichier sans vérifier. Jetpack et l’application mobile officielle WordPress se connectent via XML-RPC. Si vous les utilisez, fermez uniquement les méthodes de connexion, ou testez soigneusement.
  • Se fier à un interrupteur sans tester. Certaines méthodes laissent une partie de XML-RPC répondre. Vérifiez toujours le résultat avec une vraie requête (voir l’étape 4, ou vérifier ce que votre site expose).
  • Oublier la couche de cache. Si une règle de CDN bloque déjà xmlrpc.php, un réglage au niveau de WordPress n’aura aucun effet visible. Ce n’est pas grave ; sachez simplement quelle couche fait le travail.

Sans extension

Option 1 : le filtre xmlrpc_enabled. Ajoutez ceci dans une petite extension indispensable (must-use) (wp-content/mu-plugins/no-xmlrpc-login.php) ou dans le functions.php de votre thème enfant :

<?php
add_filter( 'xmlrpc_enabled', '__return_false' );

Cela désactive les méthodes XML-RPC qui nécessitent une connexion. Les pingbacks continuent de fonctionner car ils n’en ont pas besoin. À lui seul, ce filtre ne supprime pas system.multicall, et le fichier répond toujours aux requêtes. Pour supprimer aussi la méthode multicall :

<?php
add_filter( 'xmlrpc_methods', function ( $methods ) {
    unset( $methods['system.multicall'] );
    return $methods;
} );

Option 2 : bloquer le fichier au niveau du serveur. Sur Apache, dans .htaccess :

<Files xmlrpc.php>
  Require all denied
</Files>

Sur Nginx : location = /xmlrpc.php { deny all; }. C’est l’option la plus stricte et elle ne coûte rien au serveur, mais elle supprime aussi les pingbacks, Jetpack et l’application mobile, et elle se trouve en dehors de WordPress : on l’oublie donc facilement en changeant d’hébergeur.

En cas de problème

  • Jetpack affiche une erreur de connexion. Jetpack a besoin de XML-RPC. Passez de « Désactiver complètement » à « Désactiver la connexion, garder les pings », ou supprimez votre règle serveur.
  • L’application mobile WordPress ne parvient pas à se connecter. Même cause. Utilisez le navigateur sur mobile, ou autorisez la connexion par XML-RPC en vous appuyant sur les limites de connexion et la double authentification.
  • Un outil de publication ne publie plus. Vérifiez s’il utilise XML-RPC. La plupart des outils modernes sont passés à l’API REST avec des mots de passe d’application.

Avec Hushfort

Le Verrou XML-RPC fait partie de Hushfort Pro. L’Analyse de surface, qui montre si XML-RPC est ouvert, est incluse dans Hushfort Security, l’extension de sécurité WordPress gratuite.

Le Verrou XML-RPC fait partie de la couche Durcissement de surface de Hushfort. Il vous propose quatre choix :

  • Désactiver la connexion, garder les pings (recommandé) : deviner les mots de passe via XML-RPC devient impossible, tandis que les pingbacks et trackbacks continuent de fonctionner. Un bon choix pour les sites de boutique.
  • Désactiver complètement : l’option la plus stricte. Jetpack et l’application mobile officielle ne peuvent plus se connecter.
  • Désactiver uniquement system.multicall : ferme les tentatives en masse, laisse le reste intact.
  • Ne pas modifier : le réglage par défaut de WordPress.

L’Analyse de surface vérifie ensuite le résultat avec de vraies requêtes : vous voyez ce que voit une personne extérieure. La Protection anti-surcharge attribue aussi aux requêtes xmlrpc.php un coût plus élevé qu’une simple page vue, ce qui ralentit le bruit restant.

Questions fréquentes

Est-il sans risque de désactiver XML-RPC dans WordPress ?

Pour la plupart des sites, oui. Le WordPress moderne utilise l’API REST pour l’éditeur de blocs et la plupart des intégrations. XML-RPC reste utilisé par Jetpack, l’application mobile officielle WordPress et certains anciens outils de publication : vérifiez-les d’abord.

Masquer la page de connexion masque-t-il aussi xmlrpc.php ?

Non. xmlrpc.php accepte à lui seul identifiants et mots de passe : les attaquants peuvent donc continuer à deviner par là après que vous avez masqué wp-login.php.

Qu’est-ce que system.multicall ?

Une méthode XML-RPC qui exécute de nombreux appels en une seule requête. Les attaquants s’en servent pour envoyer des centaines de mots de passe en une seule requête, ce qui passe sous le radar des limites qui comptent les requêtes.

Désactiver XML-RPC va-t-il casser les pingbacks ?

Bloquer tout le fichier, oui. Fermer uniquement la connexion par XML-RPC en laissant la méthode pingback ouverte permet aux pingbacks et aux trackbacks de continuer à fonctionner.

Le filtre xmlrpc_enabled désactive-t-il complètement XML-RPC ?

Non. Il désactive uniquement les méthodes qui nécessitent une connexion. Le fichier répond toujours, et les appels pingback fonctionnent encore. C’est souvent ce que vous voulez, mais testez le résultat.

Signaler un bug ou demander une fonctionnalité

Votre message arrive directement à l’équipe qui développe Hushfort.

De quoi s’agit-il ?

Utilisé uniquement pour vous répondre.

Nous utilisons ces informations uniquement pour vous répondre. Confidentialité