
Devoir CodePath pour les semaines 7 et 8 : CVE-2017-14719, CVE-2019-9787 et modification non authentifiée du contenu de Page/Post via l'API REST
Devoir CodePath pour les semaines 7 & 8 : CVE-2017-14719, CVE-2019-9787 & modification non authentifiée du contenu des pages/articles via l'API REST
Temps passé : 16 heures au total
Objectif : trouver, analyser, recréer et documenter les vulnérabilités affectant une ancienne version de WordPress
- [ ] Étapes pour reproduire : si un attaquant a réussi à obtenir l'accès à un compte administrateur, il peut cliquer sur le bouton « Extensions » et visualiser les extensions installées. À côté de chaque extension listée se trouve un bouton « Supprimer » qui, lorsqu'il est pressé, amène l'attaquant sur une page où l'administrateur peut visualiser le contenu du répertoire qu'il/elle tente de supprimer avant d'apporter une modification permanente. Depuis cette page, l'attaquant peut supprimer le nom de l'extension de l'URL (situé directement après checked[0]= et avant le « & »). L'attaquant remplace le nom de l'extension par un ou plusieurs caractères « ../ » jusqu'à ce qu'il ait atteint le répertoire particulier qu'il souhaite supprimer.
- [ ] Code source affecté :
- https://core.trac.wordpress.org/browser/tags/3.8/src/wp-admin/plugins.php
#######################################################################################
########################################################################################
J'ai utilisé un code d'exploit Python provenant de cette URL : https://www.exploit-db.com/exploits/41223
En travaillant sur la « Modification non authentifiée du contenu des pages/articles via l'API REST », j'ai rencontré une erreur d'import pour le fichier Python car le paquet lxml n'était pas installé.
Après avoir installé lxml, j'ai essayé d'exécuter à nouveau 'python [exploit_file_name].py http://wpdistillery.vm'. C'est là que j'ai rencontré mon deuxième problème : j'ai reçu une UnicodeEncodeError. J'ai résolu ce problème en supprimant les articles superflus qui contenaient l'ordinal qui n'était pas dans la plage.

J'ai créé un nouvel article avec un contenu en texte brut et j'ai relancé le script. Il s'est exécuté avec succès, découvrant les endpoints de l'API et récupérant l'identifiant, le titre et le lien de l'article disponible.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.