Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
nextcloud-webhook-tokenneeded — Nextcloud 35.0.0 — administrador de Webhooks delegado pode gerar uma senha de aplicativo de administrador de 1h via atualização de webhook tokenNeeded | Kitploit
Ferramentas/GitHubGitHub/abraxas/nextcloud-webhook-tokenneeded
Autenticação e AutorizaçãoEscalada de PrivilégiosGerenciamento de IdentidadesAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de Penetração

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Labs e Prática
GitHubabraxas/nextcloud-webhook-tokenneeded

nextcloud-webhook-tokenneeded

Nextcloud 35.0.0 — administrador de Webhooks delegado pode gerar uma senha de aplicativo de administrador de 1h via atualização de webhook tokenNeeded

Ver Repositório
33há 7 diasAinda não revisado

Abraxas Labs - nextcloud-webhook-tokenneeded

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

Write-up: https://abraxaslabs.tech/research/nextcloud-webhook-tokenneeded

nextcloud-webhook-tokenneeded

Nextcloud Server 35.0.0 - Nextcloud GmbH

WebhooksController::create() anula tokenNeeded a menos que o chamador seja um administrador completo da instância. update() não o faz. Um administrador delegado das configurações de Webhooks (que não está em admin) pode armazenar tokenNeeded.user_ids: ["admin"] em um webhook existente e, em seguida, receber uma senha de aplicativo PERMANENT_TOKEN sem escopo, válida por uma hora, para esse uid quando o evento for disparado.

Um agente malicioso que só tinha permissão para gerenciar webhooks pode fazer login como admin (ou qualquer usuário que ele indicar) por uma hora, contornar o 2FA e ler ou sobrescrever os arquivos dessa pessoa.

IDainda sem CVE
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
ProdutoNextcloud Server
Afetado35.0.0 (da02f41) oficial nextcloud:35.0.0-apache
Autenticaçãoadministrador delegado das configurações de Webhooks (IDelegatedSettings)
LicençaGNU Affero GPL v3.0
Laboratóriosomente 127.0.0.1

O que um atacante pode fazer

Você deu a alguém a função de configurações de Webhooks. Essa pessoa não está no grupo admin. O Nextcloud ainda permite que ela edite um webhook existente para que, no próximo evento correspondente, o servidor envie por e-mail um login de uma hora para qualquer uid que ela listar, incluindo admin.

Com esse login, ela pode:

  • Abrir todos os arquivos dessa pessoa (não apenas algo que o webhook deveria ver)
  • Baixar e sobrescrever esses arquivos
  • Usar Files / WebDAV como essa pessoa
  • Contornar o 2FA (esta é uma senha de aplicativo, não uma solicitação de senha)

Ela não precisa de um shell PHP no host. Não precisa ser um administrador completo da instância. Um estranho na internet sem conta não consegue fazer isso. A falha é o funcionário em quem você já confiou para gerenciar webhooks, personificando as pessoas em quem você não confiou.


Como eu encontrei

WebhooksController é #[AuthorizedAdminSetting(settings: Admin::class)]. Admin implementa IDelegatedSettings. É assim que o Nextcloud entrega um painel de configurações a um grupo que não é admin.

tokenNeeded solicita ao servidor que anexe tokens de autenticação para uids nomeados quando o webhook for disparado. TokenService::createEphemeralToken gera IToken::PERMANENT_TOKEN com password = null. Senha de aplicativo. O 2FA já ficou para trás.

O PR #60543 restringiu create: a menos que você seja um administrador completo da instância, tokenNeeded é anulado. Criei um webhook como o usuário delegado hooker com tokenNeeded.user_ids: ["admin"]. O tokenNeeded armazenado era []. Create está restrito. Por um minuto, isso parece um patch concluído.

Então enviei o mesmo corpo via POST para /webhooks/{id}. O user_ids armazenado era ['admin']. update() nunca copiou o if.

Enviei um arquivo via PUT como hooker para que NodeCreatedEvent fosse disparado. O cron executa WebhookCall. O JSON do catcher tem authentication.user_ids.admin.token. Um GET com Bearer do arquivo testemunha privado do admin retornou 200, X-User-Id: admin.

Formas de isso falhar sem ensinar nada: update 403 (o controller já corresponde ao create); create já gerando tokens (#60543 não está no build); authentication vazio no catcher (o cron não gerou); caminho de cabeçalho ExApp (o usuário do laboratório é o delegado hooker).


Laboratório

cd lab
./run.sh

Aponte apenas para 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

A correção

Copie o null-out de isAdmin da criação para update(). Até que isso seja lançado, não delegue as configurações de Webhooks a grupos que não sejam de administradores.


Referências

  • github.com/nextcloud/server tag v35.0.0 (da02f41)
  • Correção próxima apenas na criação: nextcloud/server#60543
  • Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null

Licença

GNU Affero GPL v3.0. Consulte LICENSE. Apenas laboratório em loopback. Sem garantias.

Baixar ferramenta