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

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

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

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

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

Категории

Все категории
Loading categories
element-fragment-guest — Element Web v1.12.29 — High — Remote — Session — фрагмент guest creds стирает реальную сессию перед whoami | Kitploit
Инструменты/GitHubGitHub/abraxas/element-fragment-guest
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьАутентификацияЛаборатории и Практика
GitHubabraxas/element-fragment-guest

element-fragment-guest

Element Web v1.12.29 — High — Remote — Session — фрагмент guest creds стирает реальную сессию перед whoami

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

Популярное

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

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

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

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

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

Abraxas Labs - element-fragment-guest

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

element-fragment-guest

Element Web v1.12.29 - Element / New Vector

Класс: Уничтожение сессии Доступ: Удалённый

Lifecycle.loadSession предпочитает guest_user_id и guest_access_token из хэша URL вместо restoreSessionFromStorage. Гостевой режим включён по умолчанию (enableGuest={!config.disable_guests}). В config.json app.element.io не задан disable_guests. onTokenLoginCompleted удаляет только параметры SSO и OIDC. Он никогда не удаляет гостевые ключи. В url_utils.ts уже есть комментарий, что эти параметры фрагмента выглядят неиспользуемыми. Они всё равно побеждают.

Любой, кто может заставить вошедшего пользователя открыть URL с хэшем, содержащим гостевые параметры фрагмента, разлогинивает его и стирает локальные криптоданные. Достаточно мусорного токена. whoami никогда не вызывается.

IDCVE пока нет
CWECWE-384 / CWE-352 / CWE-613
CVSSВысокий: 7.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H
ПродуктElement Web
Затронутоv1.12.29 тег v1.12.29 (2d90d6b7b601ecb9ccdf81239a43b4396b4b0c9e). Гостевой режим включён (по умолчанию).
Аутентификациянеаутентифицированный атакующий. Жертва должна открыть (или перезагрузить) URL.
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

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

Заставить вошедшего пользователя открыть URL с хэшем, содержащим гостевые параметры фрагмента. Клиент разлогинивает его, стирает локальные криптоданные и может поместить его в гостевую сессию атакующего. Это разлогинивание и стирание криптоданных. Это не кража настоящего токена. Это не RCE на уровне ОС.

ПривилегияМетод / точка срабатыванияРазведка / целостность / доступностьДоказано в лаборатории или выведено
Разбор гостевых учётных данных из хэшаurl_utils.ts guest: { keys: ["guest_user_id", "guest_access_token"], location: "fragment" }Целостность выбора сессииДоказано в лаборатории. #/home?guest_user_id=...&guest_access_token=... стал guest_params. Только строка запроса — нет.
Предпочтение гостевой сессии вместо сохранённой негостевойВетка Lifecycle.loadSession с приоритетом гостя, лог Using guest access credentialsЦелостностьДоказано в лаборатории. Заранее созданная @victim:example.org не была восстановлена.
Стирание localStorage, аккаунта IndexedDB, sessionStorage, криптоданныхdoSetLoggedIn(..., clearStorageEnabled=true) затем clearStorage()Целостность / доступность локальной сессииДоказано в лаборатории. crypto_empty=yes, прежний токен исчез.
Пропуск проверки токенаГостевой путь никогда не вызывает /_matrix/client/v3/account/whoamiЦелостностьДоказано в лаборатории. whoami_called=no. Мусорный токен not-a-real-token всё равно привёл к стиранию.
Сохранение гостевых учётных данных атакующегоpersistCredentials после стиранияЦелостностьДоказано в лаборатории. after_user=@x:example.org, after_token=not-a-real-token, mx_is_guest=true.
Фиксация на реальном госте на домашнем сервере по умолчаниюТо же сохранение, если гостевой токен действителенЦелостностьВыведено. В лаборатории использовался мусорный токен, поэтому живого входа на HS не было.
Повторение этого при перезагрузкеГостевые ключи остаются в хэше; onTokenLoginCompleted их не удаляетЦелостностьВыведено из пина app.tsx. В лаборатории URL открывался один раз.

Закрыто по этому остатку: кража настоящего access-токена (он удаляется, а не эксфильтруется). RCE / LPE на уровне ОС (Desktop nodeIntegration: false, sandbox). Живой SPA Element (how=gadget). Строка запроса ?guest_user_id= (только фрагмент). disable_guests: true сохраняет негостевую сессию. Исправленный loadSession, который игнорирует гостя при наличии негостевой сессии, также сохраняет её.

Другие остатки того же пина: vector: буква диска Windows, Univention ICS javascript: href.

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

Я зафиксировал Element Web v1.12.29 после релиза на GitHub 22 сентября 2026 года. SSO loginToken передаётся только в строке запроса и удаляется после использования. Гостевые ключи по-прежнему находятся во фрагменте и побеждают при восстановлении. Комментарий в url_utils.ts — это подсказка: они уже сомневались, что эти ключи были специфицированы.

Уже зафиксированные ошибочные пути: рассмотрение строки запроса ?guest_user_id= как вектора (ключи находятся в хэше); называние этого кражей токена (настоящий токен удаляется, а не отправляется); ожидание disable_guests в конфиге app.element.io (он не задан). Обратная оболочка. Театр.

Лаборатория

Гаджет из пина функционирует. Это не живой контейнер Element Web. how=gadget.

python3 element-fragment-guest-Abraxas-Labs.py

или

cd lab
./run.sh

Цель только http://127.0.0.1:19600. Проект Compose element-fragment-guest. Стек удаляется после запуска.

SUCCESS element-fragment-guest how=gadget guest-wipe=yes prior-kept=no garbage-token=yes disable-guests-keeps=yes ELEMENT-FRAGMENT-GUEST-WITNESS

Исправление

Игнорировать гостевые параметры фрагмента, когда негостевая сессия уже существует. Проверять гостевой токен через /_matrix/client/v3/account/whoami перед clearStorage. Удалять guest_user_id и guest_access_token так же, как удаляются токены SSO. По умолчанию disable_guests: true для размещённого app.element.io.

Ссылки

  • github.com/element-hq/element-web тег v1.12.29
  • Lifecycle.ts (loadSession с приоритетом гостя)
  • url_utils.ts
  • app.tsx (enableGuest={!config.disable_guests})
  • Тот же пин: element-vector-drive-letter · element-ics-javascript
  • CWE-384

Лицензия

GNU Affero GPL v3.0. См. LICENSE. Только лаборатория на loopback. Без гарантий.

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