
Python3 PoC для CVE-2026-105030 Kener 4.0.0 до 4.1.6 — раскрытие скрытых данных монитора через Dashboard API
Этот репозиторий содержит небольшой proof-of-concept на Python для проверки проблемы раскрытия информации (CWE-200) в публичных эндпоинтах мониторов Kener.
Затронуты версии Kener с 4.0.0 по 4.1.5, исправлено в 4.1.6
https://www.rapid7.com/db/vulnerabilities/cve-2026-105030/
Проблема связана с поиском мониторов по тегам, который может раскрывать скрытые или неактивные мониторы, когда запрос не фильтруется должным образом.
Этот PoC предназначен для:
Не используйте этот PoC против неавторизованных целей
Этот PoC демонстрирует, что скрытый или неактивный монитор всё ещё может возвращаться публичными эндпоинтами, когда при поиске не применяется фильтрация, такая как:
Исправленное поведение заключается в том, что эти эндпоинты должны возвращать 404 / отсутствие совпадений для скрытых или неактивных мониторов.
requestsУстановите зависимости:
python3 -m pip install requests
Если у вас есть доступ к базе данных, создайте монитор, который не должен быть публично видимым.
Для Postgres:
INSERT INTO monitors (
tag, name, description, status, is_hidden,
category_name, monitor_type, cron, default_status,
created_at, updated_at
) VALUES (
'internal-secret-monitor',
'Internal Secret Monitor',
'Hidden/inactive monitor used for PoC',
'INACTIVE',
'YES',
'Home',
'HTTP',
'* * * * *',
'UP',
NOW(),
NOW()
);
При необходимости вы также можете использовать другое имя тега.
Убедитесь, что запись имеет:
status = 'INACTIVE' или иным образом неактивнаis_hidden = 'YES'Теперь запустите скрипт PoC.
Если приложение уязвимо, один или несколько эндпоинтов могут вернуть:
Это указывает на то, что скрытый/неактивный монитор раскрывается через публичный API.
При правильной фильтрации ответ должен быть вместо этого:
Это ожидаемое поведение после исправления:
const monitors = await db.getMonitors({
tag,
status: GC.ACTIVE,
is_hidden: GC.NO,
});
Проблема не только в секретности тега. Проблема в том, что публичный эндпоинт никогда не должен раскрывать данные скрытого или неактивного монитора. Если злоумышленник любым способом узнает тег монитора, он может получить доступ к:
Злоумышленнику всё ещё нужно как-то найти тег: угадать, перебрать или иным способом.
Проверьте, что:
Убедитесь, что приложение запущено локально и порт совпадает:
BASE_URL=http://localhost:3000
Используйте правильный URL, например:
BASE_URL=https://localhost:3000
Используйте этот PoC только:
Не запускайте это против внешних или сторонних систем без разрешения.
Этот PoC проверяет, доступен ли тег скрытого или неактивного монитора через публичные эндпоинты API Kener.