
Ein python3 PoC für CVE-2026-105030 Kener 4.0.0 vor 4.1.6 Verdeckte Monitor-Datenoffenlegung über die Dashboard-API
Dieses Repository enthält einen kleinen Python-Proof-of-Concept zum Testen eines Information-Disclosure-Problems (CWE-200) in den öffentlichen Monitor-Endpunkten von Kener. Zum Zeitpunkt der Veröffentlichung wurde kein anderer öffentlicher PoC identifiziert.
Die betroffenen Kener-Versionen sind 4.0.0 bis 4.1.5, und das Problem ist in 4.1.6 behoben
https://www.rapid7.com/db/vulnerabilities/cve-2026-105030/
Das Problem steht im Zusammenhang mit tag-basierten Monitor-Lookups, die versteckte oder inaktive Monitore offenlegen können, wenn die Abfrage nicht ordnungsgemäß gefiltert wird.
Dieser PoC ist gedacht für:
Verwenden Sie diesen PoC nicht gegen nicht autorisierte Ziele
Dieser PoC demonstriert, dass ein versteckter oder inaktiver Monitor von öffentlichen Endpunkten dennoch zurückgegeben werden kann, wenn die Suche keine Filterung wie die folgenden erzwingt:
Das korrigierte Verhalten besteht darin, dass diese Endpunkte für versteckte oder inaktive Monitore 404 / keine Übereinstimmung zurückgeben sollten.
requests-PaketAbhängigkeiten installieren:
python3 -m pip install requests
Wenn Sie Datenbankzugriff haben, erstellen Sie einen Monitor, der nicht öffentlich sichtbar sein sollte.
Für 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()
);
Du kannst auch einen anderen Tag-Namen verwenden, falls nötig.
Stelle sicher, dass der Datensatz:
status = 'INACTIVE' oder anderweitig nicht aktiv istis_hidden = 'YES' istFühre nun das PoC-Skript aus.
Wenn die Anwendung verwundbar ist, können ein oder mehrere Endpunkte Folgendes zurückgeben:
Dies deutet darauf hin, dass der versteckte/inaktive Monitor über eine öffentliche API offengelegt wird.
Mit der ordnungsgemäßen Filterung sollte die Antwort stattdessen Folgendes sein:
Dies ist das erwartete Verhalten nach der Behebung:
const monitors = await db.getMonitors({
tag,
status: GC.ACTIVE,
is_hidden: GC.NO,
});
Das Problem ist nicht nur die Geheimhaltung des Tags. Das Problem ist, dass ein öffentlicher Endpunkt niemals versteckte oder inaktive Monitor-Daten preisgeben sollte. Wenn ein Angreifer auf irgendeine Weise ein Monitor-Tag erfährt, kann er möglicherweise auf Folgendes zugreifen:
Der Angreifer muss das Tag trotzdem irgendwie finden, durch Raten, durch Brute-Force oder auf andere Weise.
Prüfe, dass:
Stelle sicher, dass die App lokal läuft und der Port übereinstimmt:
BASE_URL=http://localhost:3000
Verwenden Sie die korrekte URL, zum Beispiel:
BASE_URL=https://localhost:3000
Verwenden Sie dieses PoC nur:
Führen Sie es nicht ohne Genehmigung gegen externe oder Systeme Dritter aus.
Dieses PoC prüft, ob ein verstecktes oder inaktives Monitor-Tag über öffentliche Kener-API-Endpunkte weiterhin zugänglich ist.