Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
element-ics-javascript — Element Web v1.12.29 — высокий — удалённый — XSS — ссылка navigation.json в Univention ICS становится href меню javascript: | Kitploit
Инструменты/GitHubGitHub/abraxas/element-ics-javascript
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на Проникновение
GitHubabraxas/element-ics-javascript

element-ics-javascript

Element Web v1.12.29 — высокий — удалённый — XSS — ссылка navigation.json в Univention ICS становится href меню javascript:

Репозиторий
28 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Abraxas Labs - element-ics-javascript

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

Разбор: https://abraxaslabs.tech/research/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>. Статическая конфигурация меню использует z.url() для link_url. Путь ICS — нет. Предпросмотр URL на том же пине уже отклоняет javascript: (previewFromBundle, GHSA-9r5h). Это не стандартный app.element.io. Требуется modules/banner с menu.type univention, а также ICS, которому доверяет развёртывание.

Любой, кто может изменить этот navigation.json, внедряет javascript: или data:. Вошедший в систему пользователь, который открывает меню баннера и нажимает на элемент, выполняет скрипт в origin Element.

IDCVE пока нет
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

Что может сделать атакующий

Скомпрометировать или эксплуатировать ICS, которому доверяет развёртывание Element. Поместить URL javascript: (или data:) в navigation.json. Дождаться, пока вошедший в систему пользователь откроет меню баннера и нажмёт на элемент. Это захват учётной записи Matrix: токен доступа, криптохранилище, сессия. Это не RCE в ОС. В десктопной версии по-прежнему отключён nodeIntegration и есть песочница.

ПривилегияМетод / стокРазведка / целостность / доступностьДоказано в лаборатории или выведено
Отрисовка <a href="javascript:…"> меню баннера в origin ElementICS navigation.json entries[].link -> navigationToConfig link_url -> Menu.tsx LinkButton href={link.link_url}Целостность DOM менюДоказано в лаборатории. Ссылка макета ICS javascript:ELEMENT-ICS-JAVASCRIPT-WITNESS стала этим href. Ссылка https-портала по-прежнему отрисовывалась
Выполнение скрипта в origin Element после кликаЖертва нажимает на элемент меню (UI:R)ЦелостностьВыведено из стока href. Лаборатория не выполняла клик в браузере и не похищала живой токен Matrix
Чтение токена доступа Matrix / криптохранилища (захват учётной записи)Скрипт в origin против localStorage / сессии IndexedDBРазведка / целостностьВыведено из XSS в origin Element. Свидетельство лаборатории — строка href
Верхняя навигация вкладки Element на фишинговую страницуiframe без песочницы в SilentLogin.tsx src={new URL("silent", icsUrl)}ЦелостностьДоказано в лаборатории, что у iframe нет sandbox. Верхняя навигация не проверялась
То же внедрение через data:z.string() принимает любую схемуЦелостностьВыведено. Лаборатория внедряла только javascript:

Закрыто на этом пине: default app.element.io (без баннера Univention). OS RCE / LPE (Desktop nodeIntegration: false, sandbox, contextIsolation). Timeline HTML XSS. URL-preview javascript: (GHSA-9r5h previewFromBundle требует http:/https:). HTML export XSS (GHSA-wqmv). Widget media token (GHSA-3jm3). Static banner link_url: z.url() — это конфигурация оператора, а не ICS; z.url() также не является allowlist для http/https.

Остатки того же пина: fragment guest wipe, vector: Windows drive-letter.

Как я это нашёл

Я зафиксировал Element Web v1.12.29 после релиза на GitHub 22 сентября 2026 года. URL preview уже усвоил http:/https: на собственном горьком опыте. Univention ICS link по-прежнему z.string(). Конфигурация статического меню использует z.url(). Путь fetch никогда не проходит через эту проверку.

Уже зафиксированные неверные повороты: считать default app.element.io жертвой (Univention закрыт шлюзом); считать z.url() allowlist схем (конструктор URL принимает javascript:); раздувать click XSS до OS RCE. Обратная оболочка. Театр.

Лаборатория

Гаджет функций пина плюс mock ICS navigation.json. Не живой контейнер Element Web. how=gadget. Применение allowlist http/https для URL-preview (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

Исправление

Разрешить http: и https: для ICS link так же, как это делает previewFromBundle. Отклонять javascript:, data: и другие схемы до href=. Изолировать скрытый 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. Только для лаборатории на loopback. Без гарантий.

Скачать инструмент