Le xmlrpc.sécurité des fichiers php et du site

Inclus dans le modèle header.php de la plupart des thèmes WordPress, il existe un crochet important appelé wp_head. Ce crochet essentiel permet aux fonctions WordPress de publier du contenu dans le navigateur dans la zone <head> de vos pages web1.

Par exemple, dans les versions plus récentes de WordPress, wp_head() permet à WordPress d’afficher les trois lignes suivantes sur le <head> de votre thème:

<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://digwp.com/xmlrpc.php?rsd" /><link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://digwp.com/wp-includes/wlwmanifest.xml" /> <link rel='index' title='Digging into WordPress' href='https://digwp.com/' /><meta name="generator" content="WordPress 2.8" />

Comme vous pouvez le voir, beaucoup de choses sont ajoutées, y compris les liens de flux, les liens XML-RPC et WLW, et quelques autres éléments. Bien qu’il y ait beaucoup de choses à discuter avec toutes ces inclusions, nous nous intéressons ici principalement au lien vers le fichier xmlrpc.php. WordPress inclut ce lien pour son interface XML-RPC, qui permet aux applications distantes de communiquer et d’interagir avec WordPress.

Qu’est-ce que xmlrpc.php faire? J’en ai besoin ?

Bien que la documentation sur XML-RPC de WordPress soit assez mince, nous pouvons obtenir une compréhension partielle du fonctionnement du xmlrpc.php en parcourant le code dans le fichier lui-même. Ne vous inquiétez pas, nous n’allons pas vous ennuyer avec cela ici, mais il suffit de dire que le xmlrpc.php est requis pour des choses comme:

  • Publier directement sur votre blog en utilisant TextMate, Flock et d’autres clients
  • Publier directement sur votre blog en utilisant Eudora, Thunderbird et d’autres applications
  • Recevoir des pingbacks et des trackbacks sur votre site à partir d’autres blogs

Tout le monde n’utilise pas la fonctionnalité de publication à distance disponible dans WordPress, mais je pense que de nombreux blogs utilisent certainement le protocole XML-RPC pour la fonctionnalité pingback et trackback.

Fait le xmlrpc.le fichier php pose un risque de sécurité?

Certains d’entre vous se souviennent peut-être du risque de sécurité associé au script xmlrpc.php dans les bons vieux jours de WordPress 2.1.2, par lequel:

WordPress pourrait permettre à un attaquant authentifié à distance de contourner les restrictions de sécurité, causées par une validation incorrecte par le script xmlrpc. Un attaquant distant avec des autorisations de contributeur pourrait exploiter cette vulnérabilité pour publier des publications sur le site Web.

Cette vulnérabilité a été rapidement éliminée dans la version 2.1.3, mais peu de temps après (dans la version 2.3.1) un autre problème de sécurité a été découvert lorsque l’implémentation XML-RPC a révélé des fuites d’informations.

Bien que cela ait été corrigé dans la version 2.3.2, les problèmes de sécurité associés au protocole XML-RPC ont finalement conduit les développeurs WordPress à désactiver l’accès à distance par défaut dans la version 2.6. Le fichier xmlrpc.php est toujours inclus dans le document <head> (probablement pour des pingbacks et des trackbacks), mais la fonctionnalité d’accès à distance n’est pas opérationnelle tant qu’elle n’est pas explicitement activée2.

Consultez ces articles connexes sur Perishable Press pour plus d’informations sur le xmlrpc.sécurité des fichiers php et du site:

  • Protection de la vulnérabilité Pingback WordPress
  • Protégez-vous contre les attaques d’amplification de Force Brute WordPress

Conseils de sécurité pour xmlrpc de votre site.fichier php

Au moment d’écrire ces lignes, il n’existe aucune vulnérabilité connue associée au protocole XML-RPC de WordPress. Malgré cela, il y a eu des problèmes de sécurité avec le script xmlrpc.php dans le passé, et il pourrait certainement exister de nouveaux problèmes à la fois maintenant et à l’avenir. Juste pour être prudent, voici quelques stratégies et conseils différents pour assurer une sécurité maximale pour votre blog.

Si vous n’en avez pas besoin, supprimez-le

Le moyen le plus sûr d’éliminer les vulnérabilités de sécurité potentielles est peut-être de simplement supprimer le script en question. Si vous n’avez pas besoin de postage à distance, de pingbacks ou de trackbacks, il peut être plus facile de supprimer simplement le fichier xmlrpc.php de votre serveur. Au lieu de le supprimer, vous voudrez peut-être simplement le renommer quelque chose d’inimaginable. De toute façon, si le script n’est pas disponible pour un attaquant, il est difficile à exploiter.

Mise à jour: Si vous supprimez (ou renommez) le fichier xmlrpc.php de votre installation WordPress, vous devez également implémenter la fonction décrite dans la section suivante pour éviter une avalanche de 404 erreurs (voir ce commentaire pour plus d’explications).

Supprimez les liens vers xmlrpc.php et wlwmanifest.xml

Alternativement, si vous n’avez besoin d’aucune fonctionnalité d’accès à distance ou de pingback, vous préférerez peut-être simplement supprimer les liens d’en-tête associés plutôt que de supprimer les fichiers principaux de votre serveur. Ceci est facilement accompli avec la fonction suivante placée dans le fichier functions.php de votre thème actif:

function removeHeadLinks() {remove_action('wp_head', 'rsd_link');remove_action('wp_head', 'wlwmanifest_link');}add_action('init', 'removeHeadLinks');

Cela empêchera ces deux fichiers d’être liés dans l’en-tête, mais les fichiers eux-mêmes resteront disponibles sur votre serveur. Assurez-vous que la désactivation par défaut de la publication à distance est en vigueur si vous implémentez cette méthode.

Désactivez la fonctionnalité de publication à distance

Si vous ne publiez pas à distance, mais que vous souhaitez toujours recevoir des pingbacks et des trackbacks, suivez les conseils de WordPress et laissez simplement la fonctionnalité d’accès à distance désactivée par défaut. Cette étape à elle seule semble être un moyen formidable d’aider à renforcer la sécurité de votre blog. Le fichier sera toujours disponible sur votre serveur, mais les attaquants pourront en faire beaucoup moins.

Empêchez xmlrpc malveillant.analyse de répertoire php

Pour ceux d’entre vous qui surveillent judicieusement l’accès à votre serveur et les journaux d’erreurs, vous avez probablement vu une récente augmentation du nombre d’analyses de répertoire malveillantes xmlrpc.php. Pour une raison quelconque, les méchants sont soudainement très intéressés par les fichiers xmlrpc.php et analysent tous les répertoires sur lesquels ils peuvent obtenir leurs robots en essayant de les localiser. J’ai vu des tonnes de ce genre d’activité ces derniers temps:

http://domain.tld/2009/xmlrpc.phphttp://domain.tld/2009/06/xmlrpc.phphttp://domain.tld/2009/06/01/xmlrpc.phphttp://domain.tld/2009/06/01/permalink/xmlrpc.phphttp://domain.tld/2009/06/02/permalink/xmlrpc.phphttp://domain.tld/2009/06/03/permalink/xmlrpc.php...

Que les attaquants localisent ou non leur cible, ce type de comportement draine les ressources du système, monopolise la bande passante et empêche votre site de fonctionner à sa capacité maximale. Ainsi, pour éviter que ce comportement malveillant n’endommage votre site, j’ai conçu la solution HTAccess suivante:

<IfModule mod_alias.c>RedirectMatch 301 /(.*)/xmlrpc\.php$ http://domain.tld/xmlrpc.php</IfModule>

Lorsqu’elle est placée dans le fichier HTAccess racine accessible sur le Web pour votre site, cette directive simple redirigera toutes les demandes pour le fichier xmlrpc.php de votre blog vers le fichier réel. J’utilise cette méthode depuis plusieurs semaines chez Perishable Press et j’ai éliminé des milliers de demandes mal acheminées à cause de cela.

Quittez le xmlrpc.fichier php mais empêcher l’accès

Enfin et surtout est une méthode simple vous permettant de laisser le fichier en place sur votre serveur mais d’empêcher l’accès à celui-ci. Parfait si vous n’avez pas besoin du script et que vous voulez être aussi paresseux que possible pour le sécuriser (ne pensez pas à la maintenance). Collez simplement le code suivant dans votre fichier HTAccess racine et en finir avec:

<IfModule mod_alias.c>RedirectMatch 403 /(.*)/xmlrpc\.php$</IfModule>

Notes

  • 1 Ou n’importe où se trouve le crochet wp_head().
  • 2 Pour activer cette fonctionnalité, allez dans : Paramètres ▸ Écriture ▸ Publication à distance

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.