Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
element-ics-javascript — Element Web v1.12.29 - 高危 - 远程 - XSS - Univention ICS navigation.json 链接变为 javascript: 菜单 href | Kitploit
工具/GitHubGitHub/abraxas/element-ics-javascript
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试
GitHubabraxas/element-ics-javascript

element-ics-javascript

Element Web v1.12.29 - 高危 - 远程 - XSS - Univention ICS navigation.json 链接变为 javascript: 菜单 href

查看仓库
4天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - element-ics-javascript

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

element-ics-javascript

Element Web v1.12.29 - Element / New Vector

类别: XSS 可达性: 远程

Univention 横幅模块会获取 ICS 的 navigation.json,将每个条目的 link 作为 z.string() 接受,且不进行协议检查,而 Menu.tsx 会将该字符串放入带样式的 <a href> 中。静态菜单配置对 link_url 使用 z.url()。ICS 路径则没有。同一版本上的 URL 预览已经拒绝 javascript:(previewFromBundle,GHSA-9r5h)。这不是默认的 app.element.io。它需要带有 menu.type 为 univention 的 modules/banner,以及部署所信任的 ICS。

任何能够修改该 navigation.json 的人都可以植入 javascript: 或 data:。已登录用户打开横幅菜单并点击该项,就会在 Element 源上执行脚本。

ID暂无 CVE
CWECWE-79 / CWE-20
CVSS中危:6.8 CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:H/I:H/A:N
产品Element Web
受影响版本v1.12.29 标签 v1.12.29(2d90d6b7b601ecb9ccdf81239a43b4396b4b0c9e)。受限条件:Univention 横幅 + ICS。
认证ICS 运营者 / ICS 被攻陷。受害者是点击菜单项的已登录用户。
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1

攻击者能做什么

攻陷或控制 Element 部署所信任的 ICS。在 navigation.json 中放入 javascript:(或 data:)URL。等待已登录用户打开横幅菜单并点击该项。这就是 Matrix 账户接管:访问令牌、加密存储、会话。这不是操作系统 RCE。桌面端仍然关闭了 nodeIntegration 并启用了沙箱。

权限方法 / 汇聚点侦察 / 完整性 / 可用性实验验证或推断
在 Element 源上渲染横幅菜单 <a href="javascript:…">ICS navigation.json entries[].link -> navigationToConfig link_url -> Menu.tsx LinkButton href={link.link_url}菜单 DOM 的完整性实验验证。模拟 ICS 链接 javascript:ELEMENT-ICS-JAVASCRIPT-WITNESS 成为了该 href。https 门户链接仍正常渲染
点击后以 Element 源身份执行脚本受害者点击菜单项(UI:R)完整性由 href 汇聚点推断。实验未驱动浏览器点击或窃取实时 Matrix 令牌
读取 Matrix 访问令牌 / 加密存储(账户接管)源内脚本对 localStorage / IndexedDB 会话侦察 / 完整性由 Element 源 XSS 推断。实验见证物是 href 字符串
将 Element 标签页顶层导航至钓鱼页面SilentLogin.tsx 未沙箱化的 iframe src={new URL("silent", icsUrl)}完整性实验验证该 iframe 没有 sandbox。未实际执行顶层导航
通过 data: 进行相同植入z.string() 接受任意协议完整性推断。实验仅植入 javascript:

此版本上已关闭:默认 app.element.io(无 Univention 横幅)。操作系统 RCE / LPE(桌面端 nodeIntegration: false、沙箱、contextIsolation)。时间线 HTML XSS。URL 预览 javascript:(GHSA-9r5h previewFromBundle 要求 http:/https:)。HTML 导出 XSS(GHSA-wqmv)。Widget 媒体令牌(GHSA-3jm3)。静态横幅 link_url: z.url() 是运营者配置,不是 ICS;z.url() 也不是 http/https 允许列表。

同一版本遗留问题:fragment guest wipe、vector: Windows 盘符。

我是如何发现的

在 2026 年 9 月 22 日 GitHub 发布后,我锁定了 Element Web v1.12.29。URL 预览已经通过惨痛教训学会了 http:/https:。Univention ICS 的 link 仍然是 z.string()。静态菜单配置使用 z.url()。获取路径从未经过该检查。

已记录的弯路:将默认 app.element.io 视为受害者(Univention 是受限的);将 z.url() 视为协议允许列表(URL 构造函数接受 javascript:);将点击 XSS 夸大为操作系统 RCE。反弹 shell。纯属表演。

实验环境

该版本的 gadget 功能加上模拟 ICS navigation.json。不是实时 Element Web 容器。how=gadget。应用 URL 预览的 http/https 允许列表(previewFromBundle)后,javascript href 被移除,https 门户链接保留。

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

或

cd lab
./run.sh

目标仅限 http://127.0.0.1:19620。Compose 项目 element-ics-javascript。运行后栈会拆除。

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

修复方案

像 previewFromBundle 那样,对 ICS link 允许 http: 和 https:。在 href= 之前拒绝 javascript:、data: 及其他协议。对静默 iframe 进行沙箱化(sandbox="" 或至少不允许 allow-top-navigation)。不要将 z.url() 视为协议允许列表。

参考资料

  • github.com/element-hq/element-web 标签 v1.12.29
  • navigation.ts
  • Menu.tsx
  • SilentLogin.tsx
  • 附近已修补(非此 href):GHSA-9r5h previewFromBundle
  • 同一版本:element-fragment-guest · element-vector-drive-letter
  • CWE-79

许可证

GNU Affero GPL v3.0。参见 LICENSE。仅限回环实验环境。无担保。

下载工具