Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
drupal-htmx-attr — Drupal 11.4.8 - Élevé - À distance - XSS - AttributeXss autorise toujours les attributs HTMX | Kitploit
Outils/GitHubGitHub/abraxas/drupal-htmx-attr
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionLabs et Pratique
GitHubabraxas/drupal-htmx-attr

drupal-htmx-attr

Drupal 11.4.8 - Élevé - À distance - XSS - AttributeXss autorise toujours les attributs HTMX

Voir le dépôt
il y a 4 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Abraxas Labs - drupal-htmx-attr

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  drupal-htmx-attr

drupal-htmx-attr

Classe : XSS stocké Portée : Distante

Drupal core 11.4.8 (61044508) - Drupal

SA-CORE-2026-011 a fermé les attributs HTMX dans Xss::attributes(). Les attributs de lien et de menu passent par AttributeXss::sanitizeAttributes, et cette liste d'exclusion ne supprime toujours que style et on*.

Un éditeur de contenu capable de définir un champ Link (ou un lien de menu) peut stocker hx-on-click ou data-hx-on-click. Le profil Standard plus BigPipe charge core/htmx. Lorsqu'un administrateur ou tout autre visiteur ouvre ce nœud et clique sur le lien, HTMX exécute le JS stocké dans l'origine du site.

IDpas encore de CVE
ClasseXSS stocké (attributs d'événement HTMX)
PortéeDistante (champ Link / rédacteur de menu authentifié ; la victime consulte et clique)
CWECWE-79
CVSSÉlevé : 8.7 CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
ProduitDrupal core
Affecté11.4.8 (61044508071749629aaf3380aa85971e94df9e84)
Authutilisateur authentifié capable d'écrire un champ Link (ou un lien de menu). La victime consulte la page et clique.
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

Ce qu'un attaquant peut faire

Rédacteur : un éditeur de contenu capable de définir options.attributes d'un lien (champ Link, lien de menu, JSON:API). Victime : toute personne dont la page charge HTMX (Standard + BigPipe charge core/htmx), y compris un administrateur du site qui clique sur le lien.

PrivilègeMéthode / cheminTypeProuvé en lab ou déduit
Persister des attributs d'événement HTMX sur un lienPOST /jsonapi/node/article avec field_link.options.attributes.hx-on-click et data-hx-on-clickIntégrité du champ stockéProuvé en lab. JSON:API 201, les attributs stockés contiennent toujours hx-on-click
Imprimer ces attributs sur le <a> du nœudLinkFormatter -> AttributeXss::sanitizeAttributesIntégrité du HTMLProuvé en lab. GET /node/1 le HTML contient hx-on-click et le marqueur window['DRUPAL-HTMX-ATTR-WITNESS']=1
Exécuter ce JS dans l'origine de la victime lors du clicHTMX lie hx-on-*Intégrité de la session de la victimeDéduit de HTMX + le chargement de core/htmx par la page. Le lab n'a pas simulé de clic navigateur
Agir en tant que visiteur (cookie de session, clics dans l'interface d'admin)Même XSS stockéIntégrité de la session de la victimeDéduit. Le lab s'arrête à l'attribut restant dans le HTML
Négatif : Xss::filterXss::filter('<a ... hx-on-click=...>')FerméProuvé fermé en lab. xss_keeps_hx=False
Écriture non authentifiée du lienJSON:API sans sessionFerméLe lab s'est d'abord connecté en uid 1. Un inconnu sans compte ne peut pas définir le champ
RCE PHP / LPEn/aFerméCe reliquat est du JS navigateur, pas du PHP côté serveur

Même reliquat de version : Move Block sibling markup.

Comment je l'ai trouvé

J'ai épinglé drupal/drupal 11.4.8 après SA-CORE-2026-011. Cinq recherches : XSS/HTMX, fichier/MIME/oEmbed, JSON:API/unserialize/SQLi, auth/CSRF/Host, REST/media/Views. L'accès JSON:API, les clés IN d'EntityQuery (SA-004), le POI de champ sérialisé (SA-005) et le Host de rebuild.php (SA-007) restent corrigés. La liste d'exclusion HTMX n'a été appliquée que dans Xss.php.

$skip = (
  in_array($attribute_name, ['style', 'srcdoc']) ||
  str_starts_with($attribute_name, 'on') ||
  str_starts_with($attribute_name, 'data-hx') ||
  str_starts_with($attribute_name, 'hx') ||
  str_starts_with($attribute_name, '-') ||
  strlen($attribute_name) > 96
);

Reliquat dans AttributeXss.php :

$skip = (
  $attribute_name == 'style' ||
  str_starts_with($attribute_name, 'on') ||
  str_starts_with($attribute_name, '-') ||
  strlen($attribute_name) > 96
);

Les appelants incluent LinkFormatter.php et MenuLinkContent::getUrlObject().

Fausses pistes déjà consignées : traiter Xss::filter comme le reliquat (c'est le contrôle) ; écriture JSON:API non authentifiée ; RCE PHP ; un reverse shell. Du théâtre. L'oracle est l'attribut restant dans le HTML du nœud plus core/htmx chargé.

Lab

python3 drupal-htmx-attr-Abraxas-Labs.py

ou

cd lab
./run.sh

Cible uniquement http://127.0.0.1:19480. drupal:11.4.8-apache en direct, profil Standard, écriture JSON:API activée pour le lab. Projet Compose drupal-htmx-attr.

SUCCESS drupal-htmx-attr how=live write=jsonapi nid=1 hx-on-click=kept jsonapi-stored=1 xss-filter=stripped htmx=loaded marker=1 version=11.4.8 DRUPAL-HTMX-ATTR-WITNESS

Le correctif

Copier la liste de refus hx / data-hx / srcdoc dans AttributeXss. L'intégrer dans Xss comme le dit déjà le docblock de la classe.

Références

  • github.com/drupal/drupal tag 11.4.8 (61044508071749629aaf3380aa85971e94df9e84)
  • AttributeXss.php · Xss.php
  • Corrigé à proximité : SA-CORE-2026-011
  • Même version : drupal-move-block-markup
  • CWE-79

Licence

GNU Affero GPL v3.0. Voir LICENSE. Lab en boucle locale uniquement. Aucune garantie.

Télécharger l’outil