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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-39275 — CVE-2026-39275 - Stored XSS Leading to Account Takeover in Cockpit CMS | Kitploit
Инструменты/GitHubGitHub/securify-ai/cve-2026-39275
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingLearning & Education
GitHubsecurify-ai/cve-2026-39275

CVE-2026-39275

CVE-2026-39275 - Stored XSS Leading to Account Takeover in Cockpit CMS

Репозиторий
11 месяц назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2026-39275 - Хранимая XSS, ведущая к захвату учетной записи в Cockpit CMS

CVE CWE-79 Severity CVSS

Примечание: Ответственно раскрыто и исправлено разработчиками Cockpit CMS до публикации.

Идентификатор CVECVE-2026-39275
УязвимостьХранимая межсайтовая перезапись сценариев (XSS) → Захват учетной записи
CWECWE-79
Затронутые версииCockpit CMS <= 2.13.5
Исправлено вd70dc50
CVSS 3.18.4 (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N)
СообщившийRohith - Консультант по безопасности @ SecurifyAI

Краткое описание

Уязвимость хранимой XSS в представлении списка коллекций контента позволяет любому пользователю с правом записи контента (API-ключ или сессия аутентифицированного редактора) внедрить произвольный JavaScript, который выполняется в браузере любого администратора или редактора, просматривающего список элементов затронутой коллекции.

Сессионные токены Cockpit полностью доступны из JavaScript — файл cookie сессии устанавливается без флага HttpOnly, а CSRF JWT раскрывается в глобальной переменной App.csrf и атрибуте data-csrf на <html>. Это позволяет внедренному скрипту прочитать оба токена и воспроизвести их извне, обходя защиту CSRF и позволяя полный перехват сессии и захват учетной записи.


Коренная причина

Выводы поля render() передаются директиве v-html Vue без кодирования выходных данных.


Доказательство концепции

1. Внедрение полезной нагрузки (API-ключ с низким уровнем прав на запись)

root@kitploit:~
curl -X POST "http://localhost:8080/api/content/item/posts" \
  -H "Content-Type: application/json" \
  -H "api-key: USR-<attacker-api-key>" \
  -d '{
    "data": {
      "title": "Innocent Looking Post",
      "tags": [
        "",
        ""
      ],
      "body": "Just a regular post.",
      "_state": 1
    }
  }'

2. Запуск выполнения

Администратор или редактор переходит на /content/collection/items/posts. Рендерер тегов возвращает сохраненную строку, v-html преобразует её в реальный элемент ``, фиктивный src не загружается, и срабатывает обработчик onerror.

3. Кража токенов

Теперь оба токена можно прочитать — файл cookie сессии через document.cookie и CSRF JWT через App.csrf / document.documentElement.getAttribute('data-csrf'). Вредоносная полезная нагрузка извлекает оба:

root@kitploit:~
image

4. Воспроизведение сессии

Злоумышленник воспроизводит украденный cookie и CSRF-токен, получая полный аутентифицированный доступ администратора — и может затем создавать учетные записи администраторов, изменять учетные данные или модифицировать контент.


Воздействие

Редактор с низким уровнем привилегий (или любой обладатель API-ключа на запись контента) повышает свои права до полного администратора. Полезная нагрузка сохраняется и срабатывает для каждого администратора/редактора, просматривающего список, что делает её постоянной компрометацией многих жертв.


Исправление

Основное исправление — санитизация вывода рендерера перед передачей в v-html с помощью существующего вспомогательного метода App.utils.stripTags().

field-tags.js:

root@kitploit:~
value = App.utils.stripTags(value); // санитизация перед v-html

field-select.js:

root@kitploit:~
return App.utils.stripTags(value); // санитизация перед v-html

Защита в глубину — ужесточение cookie сессии:

root@kitploit:~
ini_set('session.cookie_httponly', 1);
ini_set('session.cookie_secure', 1);   // через HTTPS
ini_set('session.cookie_samesite', 'Strict');

Одного HttpOnly недостаточно — XSS все еще может действовать в контексте аутентифицированного браузера жертвы — поэтому кодирование выходных данных является обязательным исправлением.


Хронология раскрытия

ДатаСобытие
2026-03-29Уязвимость сообщена разработчикам Cockpit CMS

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

Скачать инструмент
Файл
Строка(и)
Роль
modules/App/assets/vue-components/fields/field-tags.js25 - 34Рендерер тегов - без кодирования
modules/App/assets/vue-components/fields/field-select.js26Рендерер выбора - без кодирования
modules/Content/views/collection/items.php149Приемник v-html
2026-03-29
Исправление выпущено разработчиками
2026-04-04Запрошен CVE
2026-06-23Присвоен CVE-2026-39275
<pub date>Публичное раскрытие