CVE-2023-29386 — Manager for Icomoon < 2.1 - Téléversement arbitraire de fichiers non authentifié
Ce README documente une vulnérabilité divulguée à des fins éducatives et défensives uniquement. N'exécutez pas de tests contre des systèmes de production ou des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation explicite de tester.
Découvert par : deokhunKim Statut : Divulgation publique Date de signalement : 2023-05-08 ID CVE : CVE-2023-29386
Capture d'écran
Payload 1
Payload 2
Résumé
Une vulnérabilité dans un composant WordPress permet à des utilisateurs non authentifiés de téléverser des archives spécialement conçues, ce qui peut conduire à une exécution de code à distance. Le gestionnaire de téléversement ne valide ni ne nettoie correctement les fichiers téléversés, permettant au contenu des archives (y compris des fichiers exécutables ou du code PHP/Python) d'être écrit dans des emplacements accessibles via le web.
Impact
Exécution de code à distance (RCE) — Un attaquant peut être en mesure de téléverser des fichiers entraînant l'exécution de code arbitraire sur le serveur.
Compromission totale du serveur — Si le processus WordPress s'exécute avec des privilèges élevés, une exploitation réussie peut donner un accès au niveau système.
Exposition de données — Des variables d'environnement sensibles, des identifiants et des fichiers internes peuvent être exposés.
Persistance — Les attaquants peuvent installer des portes dérobées ou des shells inversés pour un accès à long terme.
CVSS (estimation) : Critique — Score de base ≈ 9.1
Versions concernées
Impactées : versions jusqu'à 2.0 incluse (selon le rapport).
Non impactées : versions corrigées après la publication par l'éditeur du correctif traitant ce problème (consultez les avis de l'éditeur pour connaître les versions exactes corrigées).
Installation
Vous devez d'abord installer le laboratoire vulnérable, un guide est fourni ci-dessous.
Si vous êtes chercheur ou défenseur et devez reproduire ceci dans un environnement contrôlé :
Utilisez une machine virtuelle isolée ou un réseau de conteneurs sans connectivité vers des environnements de production ou sensibles.
Dans le dépôt cloné, accédez au répertoire safe-lab et exécutez le fichier docker-compose.yaml fourni pour déployer l'environnement de test.
root@kitploit:~
$ cd safe-lab
$ sudo docker compose up -d
Après le déploiement : connexion et installation des plugins vulnérables
Ouvrez votre navigateur et allez sur http://localhost (ou l'hôte/port où vous avez déployé le laboratoire).
Terminez la configuration de WordPress si vous y êtes invité (créez un compte administrateur).
Une fois connecté en tant qu'administrateur, allez dans Extensions → Ajouter → Téléverser une extension.
Téléversez les fichiers ZIP des plugins vulnérables situés dans le dépôt : safe-lab/manager-for-icomoon.2.0.zip puis activez chaque plugin.
Remarque : Le dossier safe-lab contient des plugins volontairement vulnérables pour les tests. Installez-les uniquement dans des environnements de laboratoire isolés et hors ligne.
Cela démarrera à la fois l'instance WordPress vulnérable et le service MariaDB dans un environnement de laboratoire contrôlé.
Avertissement : N'exécutez pas de binaires d'exploitation et ne procédez pas à une exploitation active sur des réseaux ou systèmes sans autorisation explicite. Utilisez ces informations strictement pour la recherche défensive, la validation de correctifs ou l'étude pédagogique dans des laboratoires isolés.
Atténuation et recommandations
Correctif : Mettez à jour vers les versions corrigées publiées par l'éditeur dès qu'elles sont disponibles.
Validation des fichiers : Assurez-vous que les gestionnaires de téléversement valident les types de fichiers, rejettent les archives contenant des types de fichiers inattendus et n'écrivent jamais le contenu téléversé par les utilisateurs dans des répertoires exposés au web.
Moindre privilège : Exécutez les services avec les privilèges minimaux requis et utilisez des comptes/conteneurs isolés pour les services exposés au web.
Protection de l'environnement : N'exposez pas les variables d'environnement sensibles aux processus au niveau de l'application ; utilisez des coffres-forts ou une gestion des secrets.
Surveillance : Mettez en place une surveillance de l'intégrité des fichiers sur les répertoires web et alertez en cas de nouveaux fichiers exécutables ou de modifications de fichiers exécutables.
WAF / Filtres : Utilisez un pare-feu applicatif web et un filtrage strict des requêtes/réponses pour les points de terminaison de téléversement.