Bypass des filtres HTML par clobbering DOM

Clobbering DOM attributes to bypass HTML filters

Exploiter une faiblesse dans la librairie HTMLJanitor (utilisée par la fonction loadCommentsWithHtmlJanitor) pour contourner le filtrage HTML via DOM clobbering et forcer l’exécution de print() dans le navigateur de la victime. L’exécution automatique peut nécessiter l’utilisation de l’exploit server.

La page utilise HTMLJanitor pour nettoyer du HTML utilisateur. Le nettoyeur :

  • crée un document sandbox (document.implementation.createHTMLDocument('')) et y injecte le HTML à nettoyer ;

  • parcourt l’arbre via un TreeWalker et applique des règles de filtrage sur les nÅ“uds et attributs ;

  • supprime les commentaires et désassemble certains éléments non autorisés, en réinsérant les enfants quand le tag est rejeté ;

  • valide les attributs selon une configuration config.tags et supprime les attributs non autorisés.

  • Principe : injecter un fragment HTML qui crée ou écrase un identifiant d’élément attendu par le script page (par ex. un <form id="x" tabindex=0 onfocus=...>). En manipulant la navigation (hash #x) ou en forçant le focus, on déclenche l’attribut d’événement.

  • Variante finale pour l’objectif (print()):

  • Déclenchement automatique via un iframe hébergé sur l’exploit server : l’iframe charge la page vulnérable puis modifie sa src pour ajouter #x, provoquant le focus et l’exécution du handler onfocus. Exemple d’idée d’utilisation de l’exploit server :

Mis à jour

Ce contenu vous a-t-il été utile ?