Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
nextcloud-webhook-tokenneeded — Nextcloud 35.0.0 — un administrateur délégué aux Webhooks peut générer un mot de passe d'application administrateur d'une durée de 1 h via la mise à jour d'un webhook tokenNeeded | Kitploit
Outils/GitHubGitHub/abraxas/nextcloud-webhook-tokenneeded
Authentification et AutorisationEscalade de PrivilègesGestion des IdentitésAnalyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'Intrusion

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Labs et Pratique
GitHubabraxas/nextcloud-webhook-tokenneeded

nextcloud-webhook-tokenneeded

Nextcloud 35.0.0 — un administrateur délégué aux Webhooks peut générer un mot de passe d'application administrateur d'une durée de 1 h via la mise à jour d'un webhook tokenNeeded

Voir le dépôt
11il y a 15 joursPas encore vérifié
Partager

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() met tokenNeeded à null sauf si l'appelant est un administrateur complet de l'instance. update() ne le fait pas. Un administrateur délégué des paramètres Webhooks (pas dans admin) peut stocker tokenNeeded.user_ids: ["admin"] sur un webhook existant, puis recevoir un mot de passe d'application PERMANENT_TOKEN non délimité d'une heure pour cet uid lorsque l'événement se déclenche.

Un acteur malveillant à qui l'on avait seulement confié la gestion des webhooks peut se connecter en tant que admin (ou n'importe quel utilisateur qu'il désigne) pendant une heure, contourner la 2FA, et lire ou écraser les fichiers de cette personne.

IDpas encore de CVE
CWECWE-863, CWE-269
CVSSÉlevé : 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
ProduitNextcloud Server
Affecté35.0.0 (da02f41) officiel nextcloud:35.0.0-apache
Authadministrateur délégué des paramètres Webhooks (IDelegatedSettings)
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

Ce qu'un attaquant peut faire

Vous avez confié à quelqu'un la tâche de gestion des paramètres Webhooks. Il n'est pas dans le groupe admin. Nextcloud lui permet tout de même de modifier un webhook existant afin que, lors du prochain événement correspondant, le serveur lui envoie par courriel un identifiant de connexion d'une heure pour n'importe quel uid qu'il liste, y compris admin.

Avec cet identifiant, il peut :

  • Ouvrir tous les fichiers de cette personne (pas seulement ce que le webhook était censé voir)
  • Télécharger et écraser ces fichiers
  • Utiliser Files / WebDAV en tant que cette personne
  • Contourner la 2FA (il s'agit d'un mot de passe d'application, pas d'une invite de mot de passe)

Il n'a pas besoin d'un shell PHP sur l'hôte. Il n'a pas besoin d'être un administrateur complet de l'instance. Un inconnu sur Internet sans compte ne peut pas faire cela. La faille, c'est le membre du personnel à qui vous avez déjà fait confiance pour les webhooks, qui usurpe l'identité des personnes à qui vous ne l'avez pas accordée.


Comment je l'ai trouvé

WebhooksController est #[AuthorizedAdminSetting(settings: Admin::class)]. Admin implémente IDelegatedSettings. C'est ainsi que Nextcloud confie un panneau de paramètres à un groupe qui n'est pas admin.

tokenNeeded demande au serveur d'attacher des jetons d'authentification pour les uid nommés lorsque le webhook se déclenche. TokenService::createEphemeralToken génère un IToken::PERMANENT_TOKEN avec password = null. Mot de passe d'application. La 2FA est déjà derrière vous.

La PR #60543 a protégé create : sauf si vous êtes un administrateur complet de l'instance, tokenNeeded est mis à null. J'ai créé un webhook en tant qu'utilisateur délégué hooker avec tokenNeeded.user_ids: ["admin"]. Le tokenNeeded stocké était []. Create est protégé. Pendant une minute, cela ressemble à un correctif terminé.

Puis j'ai envoyé en POST le même corps à /webhooks/{id}. Le user_ids stocké était ['admin']. update() n'a jamais copié le if.

J'ai envoyé un fichier en PUT en tant que hooker pour que NodeCreatedEvent se déclenche. Cron exécute WebhookCall. Le JSON du catcher contient authentication.user_ids.admin.token. Un GET Bearer du fichier témoin privé de l'admin a renvoyé 200, X-User-Id: admin.

Les façons dont cela échoue sans rien vous apprendre : update 403 (le contrôleur correspond déjà à create) ; create génère déjà des jetons (#60543 absent du build) ; authentication vide dans le catcher (cron n'a pas généré de jeton) ; chemin d'en-tête ExApp (l'utilisateur du lab est le délégué hooker).


Lab

cd lab
./run.sh

Cible uniquement http://127.0.0.1:18320 (Nextcloud) et :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

Le correctif

Copiez la mise à null isAdmin de create dans update(). Tant que ce n'est pas livré, ne déléguez pas les paramètres Webhooks à des groupes non-admin.


Références

  • github.com/nextcloud/server tag v35.0.0 (da02f41)
  • Correctif voisin limité à create : nextcloud/server#60543
  • Abraxas Labs : abraxaslabs.tech · github.com/abraxas · @abraxas_null

Licence

GNU Affero GPL v3.0. Voir LICENSE. Lab en boucle locale uniquement. Aucune garantie.

Télécharger l’outil