Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
nextcloud-webhook-tokenneeded — Nextcloud 35.0.0 — delegierter Webhooks-Administrator kann über Webhook-Update ein 1h-Admin-App-Passwort erzeugen tokenNeeded | Kitploit
Tools/GitHubGitHub/abraxas/nextcloud-webhook-tokenneeded
Authentifizierung & AutorisierungPrivilege EscalationIdentitätsmanagementSchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstests

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Labs & Praxis
GitHubabraxas/nextcloud-webhook-tokenneeded

nextcloud-webhook-tokenneeded

Nextcloud 35.0.0 — delegierter Webhooks-Administrator kann über Webhook-Update ein 1h-Admin-App-Passwort erzeugen tokenNeeded

Repository anzeigen
11vor 15 TagenNoch nicht geprüft

Abraxas Labs - nextcloud-webhook-tokenneeded

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  nextcloud-webhook-tokenneeded

nextcloud-webhook-tokenneeded

Nextcloud Server 35.0.0 - Nextcloud GmbH

WebhooksController::create() setzt tokenNeeded auf null, es sei denn, der Aufrufer ist ein vollständiger Instanz-Administrator. update() tut das nicht. Ein delegierter Webhooks-Einstellungsadministrator (nicht in admin) kann tokenNeeded.user_ids: ["admin"] auf einem bestehenden Webhook speichern und erhält dann ein einstündiges, nicht eingeschränktes PERMANENT_TOKEN-App-Passwort für diese uid, wenn das Ereignis ausgelöst wird.

Ein böswilliger Akteur, dem nur die Verwaltung von Webhooks anvertraut wurde, kann sich eine Stunde lang als admin (oder als jeden von ihm benannten Benutzer) anmelden, 2FA umgehen und die Dateien dieser Person lesen oder überschreiben.

IDnoch keine CVE
CWECWE-863, CWE-269
CVSSHoch: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
ProduktNextcloud Server
Betroffen35.0.0 (da02f41) offizielles nextcloud:35.0.0-apache
Authdelegierter Webhooks-Einstellungsadministrator (IDelegatedSettings)
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1

Was ein Angreifer tun kann

Sie haben jemandem die Aufgabe für die Webhooks-Einstellungen übertragen. Diese Person ist nicht in der Gruppe admin. Nextcloud erlaubt ihr dennoch, einen bestehenden Webhook so zu bearbeiten, dass der Server beim nächsten passenden Ereignis ihr eine einstündige Anmeldung für jede von ihr aufgeführte uid zusendet, einschließlich admin.

Mit dieser Anmeldung kann sie:

  • Alle Dateien dieser Person öffnen (nicht nur etwas, das der Webhook eigentlich sehen sollte)
  • Diese Dateien herunterladen und überschreiben
  • Files / WebDAV als diese Person verwenden
  • 2FA umgehen (dies ist ein App-Passwort, keine Passwortabfrage)

Sie benötigen keine PHP-Shell auf dem Host. Sie müssen kein vollständiger Instanz-Administrator sein. Ein Fremder im Internet ohne Konto kann dies nicht tun. Die Lücke ist der Mitarbeiter, dem Sie bereits Webhooks anvertraut haben, der sich als die Personen ausgibt, denen Sie es nicht anvertraut haben.


Wie ich es gefunden habe

WebhooksController ist #[AuthorizedAdminSetting(settings: Admin::class)]. Admin implementiert IDelegatedSettings. So übergibt Nextcloud ein Einstellungsfenster an eine Gruppe, die nicht admin ist.

tokenNeeded fordert den Server auf, beim Auslösen des Webhooks Authentifizierungstoken für benannte uids anzuhängen. TokenService::createEphemeralToken erzeugt IToken::PERMANENT_TOKEN mit password = null. App-Passwort. 2FA liegt bereits hinter Ihnen.

PR #60543 hat create abgesichert: Wenn Sie kein vollständiger Instanz-Administrator sind, wird tokenNeeded auf null gesetzt. Ich habe als delegierter Benutzer hooker einen Webhook mit tokenNeeded.user_ids: ["admin"] erstellt. Gespeichertes tokenNeeded war []. Create ist abgesichert. Für eine Minute sieht das wie ein fertiger Patch aus.

Dann habe ich denselben Body per POST an /webhooks/{id} gesendet. Gespeicherte user_ids war ['admin']. update() hat das if nie kopiert.

Laden Sie eine Datei als hooker hoch, damit NodeCreatedEvent ausgelöst wird. Cron führt WebhookCall aus. Das Catcher-JSON enthält authentication.user_ids.admin.token. Ein Bearer-GET der privaten Zeugendatei des Administrators gab 200 zurück, X-User-Id: admin.

Wege, auf denen dies stirbt, ohne Ihnen etwas beizubringen: update 403 (der Controller stimmt bereits mit create überein); create erzeugt bereits Token (#60543 nicht im Build); leeres authentication im Catcher (Cron hat nichts erzeugt); ExApp-Header-Pfad (der Lab-Benutzer ist delegierter hooker).


Lab

cd lab
./run.sh

Ziel nur http://127.0.0.1:18320 (Nextcloud) und :18321 (Catcher).

SUCCESS NEXTCLOUD-WEBHOOK-TOKENNEEDED who=delegated-webhook-admin uid=admin NEXTCLOUD-WEBHOOK-TOKENNEEDED-WITNESS
  • lab/docker-compose.yml
  • lab/run.sh
  • lab/hook/Dockerfile

Der Fix

Kopieren Sie das isAdmin-Null-Setzen aus create in update(). Bis das ausgeliefert wird, delegieren Sie die Webhooks-Einstellungen nicht an Nicht-Admin-Gruppen.


Referenzen

  • github.com/nextcloud/server Tag v35.0.0 (da02f41)
  • Nahegelegener Create-only-Fix: nextcloud/server#60543
  • Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null

Lizenz

GNU Affero GPL v3.0. Siehe LICENSE. Nur Loopback-Lab. Keine Gewährleistung.

Tool herunterladen