
Vulnérabilité de script intersite (XSS) stockée authentifiée dans le plugin Contact List
Avertissement : Ce dépôt est créé à des fins éducatives et de divulgation éthique uniquement. La vulnérabilité a été signalée de manière responsable à l'éditeur et corrigée. N'utilisez pas ces informations pour exploiter des systèmes sans autorisation appropriée.
Une vulnérabilité de Cross-Site Scripting (XSS) stockée a été découverte dans le plugin Contact List - Annuaire du personnel en ligne et carnet d'adresses pour WordPress (versions <= 3.0.17). Cette vulnérabilité permet aux utilisateurs authentifiés avec des privilèges Auteur ou supérieurs d'injecter du JavaScript malveillant dans les fiches de contact via un champ personnalisé caché.
Lorsque la fiche de contact est affichée sur l'annuaire public, la charge utile injectée s'exécute dans le navigateur de tout visiteur. Si un administrateur consulte la page, cette faille peut être escaladée en prise de contrôle totale du compte (ATO) et compromission du site.
<= 3.0.17La vulnérabilité provient d'une désinfection insuffisante et d'un traitement non sécurisé de la sortie du champ personnalisé _cl_map_iframe, destiné à intégrer des iframes de carte.
1. Stockage de données non sécurisé :
Dans includes/class-contact-list-custom-fields.php (dans saveCustomFields()), le plugin traite l'entrée _cl_map_iframe à l'aide d'une expression régulière pour extraire un bloc ``
6. Transmettez la requête. Le serveur stocke l'iframe malveillante.
7. Déclenchement : Visitez la page de l'annuaire public où [contact_list] est intégré. La boîte d'alerte se déclenche immédiatement, confirmant l'exécution du code.
POST /wp-admin/post.php HTTP/1.1
Host: TARGET
Content-Type: application/x-www-form-urlencoded
Cookie: [Author_Session_Cookies]
post_title=Hacked+Contact&post_type=contact&action=editpost&_cl_map_iframe=
Pour corriger cette vulnérabilité, les développeurs du plugin doivent :
wp_kses() avec un tableau strict de balises et attributs HTML autorisés lors de l'enregistrement de _cl_map_iframe. Interdire les attributs comme onload, onerror ou les URI javascript:.