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
element-ics-javascript — Element Web v1.12.29 - Alta - Remoto - XSS - O link navigation.json do Univention ICS torna-se um href de menu javascript: | Kitploit
Ferramentas/GitHubGitHub/abraxas/element-ics-javascript
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de Penetração
GitHubabraxas/element-ics-javascript

element-ics-javascript

Element Web v1.12.29 - Alta - Remoto - XSS - O link navigation.json do Univention ICS torna-se um href de menu javascript:

Ver Repositório
2há 8 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 - element-ics-javascript

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  element-ics-javascript

Análise: https://abraxaslabs.tech/research/element-ics-javascript

element-ics-javascript

Element Web v1.12.29 - Element / New Vector

Classe: XSS Alcance: Remoto

O módulo de banner do Univention busca o ICS navigation.json, aceita o link de cada entrada como z.string() sem verificação de esquema, e o Menu.tsx coloca essa string em um <a href> estilizado. A configuração estática do menu usa z.url() para link_url. O caminho do ICS não. A pré-visualização de URL no mesmo pin já rejeita javascript: (previewFromBundle, GHSA-9r5h). Este não é o app.element.io padrão. Requer modules/banner com menu.type univention, além de um ICS em que a implantação confie.

Qualquer pessoa que possa alterar esse navigation.json planta javascript: ou data:. Um usuário autenticado que abre o menu do banner e clica no item executa script na origem do Element.

IDainda sem CVE
CWECWE-79 / CWE-20
CVSSMédio: 6.8 CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:H/I:H/A:N
ProdutoElement Web
Afetadotag v1.12.29 v1.12.29 (2d90d6b7b601ecb9ccdf81239a43b4396b4b0c9e). Condicionado: banner Univention + ICS.
AutenticaçãoOperador do ICS / comprometimento do ICS. A vítima é um usuário autenticado que clica no item do menu.
LicençaGNU Affero GPL v3.0
Laboratórioapenas 127.0.0.1

O que um atacante pode fazer

Comprometer ou operar o ICS em que a implantação do Element confia. Colocar uma URL javascript: (ou data:) em navigation.json. Aguardar que um usuário autenticado abra o menu do banner e clique no item. Isso é tomada de conta do Matrix: token de acesso, armazenamento criptográfico, a sessão. Não é RCE no SO. O desktop ainda tem nodeIntegration desativado e um sandbox.

PrivilégioMétodo / sinkReconhecimento / integridade / disponibilidadeComprovado em laboratório ou inferido
Renderizar um <a href="javascript:…"> do menu do banner na origem do ElementICS navigation.json entries[].link -> navigationToConfig link_url -> Menu.tsx LinkButton href={link.link_url}Integridade do DOM do menuComprovado em laboratório. O link de ICS simulado javascript:ELEMENT-ICS-JAVASCRIPT-WITNESS tornou-se esse href. O link https do portal ainda era renderizado
Executar script como a origem do Element após um cliqueA vítima clica no item do menu (UI:R)IntegridadeInferido a partir do sink do href. O laboratório não realizou um clique de navegador nem roubou um token Matrix ativo
Ler o token de acesso do Matrix / armazenamento criptográfico (tomada de conta)Script na origem vs localStorage / sessão IndexedDBReconhecimento / integridadeInferido a partir do XSS na origem do Element. A testemunha do laboratório é a string do href
Navegar a aba do Element para uma página de phishingiframe sem sandbox do SilentLogin.tsx src={new URL("silent", icsUrl)}IntegridadeComprovado em laboratório que o iframe não tem sandbox. Navegação de topo não exercitada
Mesma plantação via data:z.string() aceita qualquer esquemaIntegridadeInferido. O laboratório plantou apenas javascript:

Fechado neste pin: app.element.io padrão (sem banner Univention). OS RCE / LPE (Desktop nodeIntegration: false, sandbox, contextIsolation). XSS em HTML de timeline. javascript: em pré-visualização de URL (GHSA-9r5h previewFromBundle exige http:/https:). XSS em exportação HTML (GHSA-wqmv). Token de mídia de widget (GHSA-3jm3). O banner estático link_url: z.url() é configuração do operador, não ICS; z.url() também não é uma allowlist de http/https.

Sobras do mesmo pin: limpeza de convidado via fragment, vector: letra de unidade Windows.

Como eu encontrei

Fixe o Element Web v1.12.29 após o lançamento no GitHub de 22 de setembro de 2026. A pré-visualização de URL já aprendeu http:/https: da maneira difícil. O link do ICS Univention ainda é z.string(). A configuração do menu estático usa z.url(). O caminho de fetch nunca passa por essa verificação.

Caminhos errados já registrados: tratar o app.element.io padrão como a vítima (o Univention está protegido por gate); tratar z.url() como uma allowlist de esquema (o construtor de URL aceita javascript:); inflar o XSS de clique para OS RCE. Um reverse shell. Teatro.

Laboratório

Gadget das funções do pin mais um navigation.json de ICS simulado. Não é um contêiner Element Web real. how=gadget. Aplicar a allowlist http/https da pré-visualização de URL (previewFromBundle) removeu o href javascript e manteve o link https do portal.

python3 element-ics-javascript-Abraxas-Labs.py

ou

cd lab
./run.sh

Aponte apenas para http://127.0.0.1:19620. Compose o projeto element-ics-javascript. A stack é desmontada após a execução.

SUCCESS element-ics-javascript how=gadget href-scheme=javascript menu-a-javascript=yes allowlist-rejects=yes silent-no-sandbox=yes ELEMENT-ICS-JAVASCRIPT-WITNESS

A correção

Permitir http: e https: no link do ICS da mesma forma que previewFromBundle faz. Rejeitar javascript:, data: e outros esquemas antes de href=. Aplicar sandbox ao iframe silencioso (sandbox="" ou pelo menos sem allow-top-navigation). Não tratar z.url() como uma allowlist de esquemas.

Referências

  • github.com/element-hq/element-web tag v1.12.29
  • navigation.ts
  • Menu.tsx
  • SilentLogin.tsx
  • Próximo corrigido (não este href): GHSA-9r5h previewFromBundle
  • Mesmo pin: element-fragment-guest · element-vector-drive-letter
  • CWE-79

Licença

GNU Affero GPL v3.0. Consulte LICENSE. Apenas laboratório em loopback. Sem garantias.

Baixar ferramenta