Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
drupal-htmx-attr — Drupal 11.4.8 - Alta - Remoto - XSS - AttributeXss ainda permite atributos HTMX | Kitploit
Ferramentas/GitHubGitHub/abraxas/drupal-htmx-attr
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoLabs e Prática
GitHubabraxas/drupal-htmx-attr

drupal-htmx-attr

Drupal 11.4.8 - Alta - Remoto - XSS - AttributeXss ainda permite atributos HTMX

Ver Repositório
há 4 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Abraxas Labs - drupal-htmx-attr

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

drupal-htmx-attr

Classe: XSS Armazenado Alcance: Remoto

Drupal core 11.4.8 (61044508) - Drupal

SA-CORE-2026-011 fechou atributos HTMX em Xss::attributes(). Atributos de link e menu passam por AttributeXss::sanitizeAttributes, e essa lista de exclusão ainda remove apenas style e on*.

Um editor de conteúdo que pode definir um campo Link (ou um link de menu) pode armazenar hx-on-click ou data-hx-on-click. O Standard mais o BigPipe carrega core/htmx. Quando um admin ou qualquer outro visualizador abre esse nó e clica no link, o HTMX executa o JS armazenado na origem do site.

IDsem CVE ainda
ClasseXSS Armazenado (atributos de evento HTMX)
AlcanceRemoto (escritor autenticado de campo Link / menu; vítima visualiza e clica)
CWECWE-79
CVSSAlto: 8.7 CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
ProdutoDrupal core
Afetado11.4.8 (61044508071749629aaf3380aa85971e94df9e84)
Autenticaçãousuário autenticado que pode escrever um campo Link (ou link de menu). A vítima visualiza a página e clica.
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1

O que um atacante pode fazer

Escritor: um editor de conteúdo que pode definir options.attributes do link (campo Link, link de menu, JSON:API). Vítima: qualquer pessoa cuja página carrega HTMX (Standard + BigPipe carrega core/htmx), incluindo um admin do site que clica no link.

PrivilégioMétodo / caminhoTipoComprovado em lab ou inferido
Persistir atributos de evento HTMX em um linkPOST /jsonapi/node/article com field_link.options.attributes.hx-on-click e data-hx-on-clickIntegridade do campo armazenadoComprovado em lab. JSON:API 201, atributos armazenados ainda contêm hx-on-click
Imprimir esses atributos no <a> do nóLinkFormatter -> AttributeXss::sanitizeAttributesIntegridade do HTMLComprovado em lab. GET /node/1 HTML contém hx-on-click e o marcador window['DRUPAL-HTMX-ATTR-WITNESS']=1
Executar esse JS na origem da vítima quando ela clicaHTMX vincula hx-on-*Integridade da sessão da vítimaInferido a partir do HTMX + a página carregar core/htmx. O lab não simulou um clique no navegador
Agir como o visualizador (cookie de sessão, cliques na UI de admin)Mesmo XSS armazenadoIntegridade da sessão da vítimaInferido. O lab para no atributo permanecendo no HTML
Negativo: Xss::filterXss::filter('<a ... hx-on-click=...>')FechadoComprovado em lab como fechado. xss_keeps_hx=False
Escrita não autenticada do linkJSON:API sem sessãoFechadoO lab fez login como uid 1 primeiro. Um estranho sem conta não pode definir o campo
RCE em PHP / LPEn/aFechadoEste resquício é JS de navegador, não PHP no servidor

Mesmo resquício de pin: Move Block sibling markup.

Como eu encontrei

Eu fixei drupal/drupal 11.4.8 após o SA-CORE-2026-011. Cinco buscas: XSS/HTMX, file/MIME/oEmbed, JSON:API/unserialize/SQLi, auth/CSRF/Host, REST/media/Views. Acesso JSON:API, chaves IN do EntityQuery (SA-004), POI de campo serializado (SA-005) e Host do rebuild.php (SA-007) permanecem corrigidos. A lista de exclusão do HTMX foi aplicada apenas em 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
);

Resquício em AttributeXss.php:

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

Os chamadores incluem LinkFormatter.php e MenuLinkContent::getUrlObject().

Caminhos errados já registrados: tratar Xss::filter como o resquício (ele é o controle); escrita JSON:API não autenticada; RCE em PHP; um reverse shell. Teatro. O oráculo é o atributo permanecendo no HTML do nó mais core/htmx carregado.

Lab

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

ou

cd lab
./run.sh

Alvo apenas http://127.0.0.1:19480. drupal:11.4.8-apache ao vivo, perfil Standard, escrita JSON:API habilitada para o lab. Projeto 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

A correção

Copie a denylist hx / data-hx / srcdoc para AttributeXss. Incorpore-a em Xss como o docblock da classe já diz.

Referências

  • github.com/drupal/drupal tag 11.4.8 (61044508071749629aaf3380aa85971e94df9e84)
  • AttributeXss.php · Xss.php
  • Próximo corrigido: SA-CORE-2026-011
  • Mesmo pin: drupal-move-block-markup
  • CWE-79

Licença

GNU Affero GPL v3.0. Veja LICENSE. Apenas lab em loopback. Sem garantia.

Baixar ferramenta