XSS par clobbering DOM
Exploiting DOM clobbering to enable XSS
Exploiter une vulnérabilité de DOM-clobbering. La fonctionnalité des commentaires autorise un HTML « sûr ». L’objectif est d’injecter un fragment HTML qui écrase une variable DOM (clobbering) et d’enchaîner sur une exécution XSS (alert()).

La zone de commentaires accepte du HTML et certains éléments sont rendus (par ex. un <h1> s’interprète).

Le script côté client charge et affiche les commentaires récupérés en JSON. Il utilise
DOMPurify.sanitize()pour nettoyer les champsauthoretbody, mais d’autres manipulations DOM restent vulnérables au clobbering.
Le code crée un objet
defaultAvataren lisantwindow.defaultAvatarsi présent ; on peut donc écraserdefaultAvatarvia un élément DOM ayant un identifiantdefaultAvatar(clobbering).Comme l’attribut
srcde l’<img>est construit à partir dedefaultAvatar.avatarlorsquecomment.avatarest absent, il est possible de forcer undefaultAvatarcontrôlé par l’attaquant pour influencer la valeur insérée.L’insertion se fait par
divImgContainer.innerHTML = avatarImgHTML, ce qui déclenche l’interprétation de la chaîne HTML construite.
Tentative de forcer defaultAvatar via un élément <a id=defaultAvatar> contenant un attribut susceptible de provoquer une erreur côté client (ex. onerror=alert(0)).
cela est urlencodé par le système


Contournement testé en utilisant un schéma cid: pour que la valeur ne soit pas encodée :
ce dernier est interprété


Mis à jour
Ce contenu vous a-t-il été utile ?