Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
nextcloud-webhook-tokenneeded — Nextcloud 35.0.0 — un amministratore con delega Webhooks può generare una password applicativa admin della durata di 1h tramite l'aggiornamento del webhook tokenNeeded | Kitploit
Strumenti/GitHubGitHub/abraxas/nextcloud-webhook-tokenneeded
Autenticazione e AutorizzazioneEscalation di PrivilegiGestione IdentitàAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration Testing

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Lab e Pratica
GitHubabraxas/nextcloud-webhook-tokenneeded

nextcloud-webhook-tokenneeded

Nextcloud 35.0.0 — un amministratore con delega Webhooks può generare una password applicativa admin della durata di 1h tramite l'aggiornamento del webhook tokenNeeded

Vedi Repository
1115 giorni faNon ancora revisionato

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() azzera tokenNeeded a meno che il chiamante non sia un amministratore completo dell'istanza. update() no. Un amministratore delegato delle impostazioni Webhooks (non nel gruppo admin) può memorizzare tokenNeeded.user_ids: ["admin"] su un webhook esistente, e poi ricevere una password applicativa PERMANENT_TOKEN non limitata, della durata di un'ora, per quell'uid quando l'evento si attiva.

Un malintenzionato a cui era stato affidato solo il compito di gestire i webhook può accedere come admin (o come qualsiasi utente da lui indicato) per un'ora, aggirare il 2FA e leggere o sovrascrivere i file di quella persona.

IDnessuna CVE al momento
CWECWE-863, CWE-269
CVSSAlto: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
ProdottoNextcloud Server
Affetto35.0.0 (da02f41) ufficiale nextcloud:35.0.0-apache
Authamministratore delegato delle impostazioni Webhooks (IDelegatedSettings)
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Cosa può fare un attaccante

Hai assegnato a qualcuno il compito delle impostazioni Webhooks. Non è nel gruppo admin. Nextcloud gli consente comunque di modificare un webhook esistente in modo che, al successivo evento corrispondente, il server gli invii per email un accesso di un'ora per qualsiasi uid elencato, incluso admin.

Con quell'accesso può:

  • Aprire tutti i file di quella persona (non solo qualcosa che il webhook doveva vedere)
  • Scaricare e sovrascrivere quei file
  • Usare Files / WebDAV come quella persona
  • Aggirare il 2FA (questa è una password applicativa, non una richiesta di password)

Non ha bisogno di una shell PHP sull'host. Non ha bisogno di essere un amministratore completo dell'istanza. Un estraneo su internet senza account non può farlo. La falla è il dipendente di cui ti sei già fidato per i webhook, che impersona le persone di cui non ti fidavi.


Come l'ho trovato

WebhooksController è #[AuthorizedAdminSetting(settings: Admin::class)]. Admin implementa IDelegatedSettings. È così che Nextcloud assegna un pannello delle impostazioni a un gruppo che non è admin.

tokenNeeded chiede al server di allegare token di autenticazione per gli uid indicati quando il webhook si attiva. TokenService::createEphemeralToken genera IToken::PERMANENT_TOKEN con password = null. Password applicativa. 2FA già superato.

La PR #60543 ha protetto create: a meno che tu non sia un amministratore completo dell'istanza, tokenNeeded viene azzerato. Ho creato un webhook come utente delegato hooker con tokenNeeded.user_ids: ["admin"]. Il tokenNeeded memorizzato era []. Create è protetto. Per un minuto sembra una patch completa.

Poi ho inviato lo stesso body in POST a /webhooks/{id}. Gli user_ids memorizzati erano ['admin']. update() non ha mai copiato l'if.

Ho caricato un file in PUT come hooker in modo che scattasse NodeCreatedEvent. Cron esegue WebhookCall. Il JSON del catcher contiene authentication.user_ids.admin.token. Una GET con Bearer del file testimone privato di admin ha restituito 200, X-User-Id: admin.

Modi in cui questo muore senza insegnarti nulla: update 403 (il controller corrisponde già a create); create che genera già token (#60543 non presente nella build); authentication vuoto nel catcher (cron non ha generato); percorso header ExApp (l'utente del lab è il delegato hooker).


Lab

cd lab
./run.sh

Target solo http://127.0.0.1:18320 (Nextcloud) e :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

La correzione

Copia l'azzeramento isAdmin di create in update(). Finché non viene rilasciata, non delegare le impostazioni Webhooks a gruppi non-admin.


Riferimenti

  • github.com/nextcloud/server tag v35.0.0 (da02f41)
  • Correzione vicina solo per create: nextcloud/server#60543
  • Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo lab su loopback. Nessuna garanzia.

Scarica lo strumento