Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
nextcloud-webhook-tokenneeded — Nextcloud 35.0.0 — un administrador de Webhooks delegado puede generar una contraseña de aplicación de administrador de 1h mediante webhook update tokenNeeded | Kitploit
Herramientas/GitHubGitHub/abraxas/nextcloud-webhook-tokenneeded
Autenticación y AutorizaciónEscalada de PrivilegiosGestión de IdentidadesAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de Penetración

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Labs y Práctica
GitHubabraxas/nextcloud-webhook-tokenneeded

nextcloud-webhook-tokenneeded

Nextcloud 35.0.0 — un administrador de Webhooks delegado puede generar una contraseña de aplicación de administrador de 1h mediante webhook update tokenNeeded

Ver Repositorio
33hace 7 díasAún no revisado
Compartir

Abraxas Labs - nextcloud-webhook-tokenneeded

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

Análisis: https://abraxaslabs.tech/research/nextcloud-webhook-tokenneeded

nextcloud-webhook-tokenneeded

Nextcloud Server 35.0.0 - Nextcloud GmbH

WebhooksController::create() anula tokenNeeded a menos que quien llama sea un administrador completo de la instancia. update() no lo hace. Un administrador delegado de la configuración de Webhooks (que no está en admin) puede almacenar tokenNeeded.user_ids: ["admin"] en un webhook existente y, a continuación, recibir una contraseña de aplicación PERMANENT_TOKEN sin alcance y con una hora de validez para ese uid cuando se dispare el evento.

Un actor malicioso en quien solo se confiaba para gestionar webhooks puede iniciar sesión como admin (o como cualquier usuario que designe) durante una hora, omitir el 2FA y leer o sobrescribir los archivos de esa persona.

IDaún sin 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
ProductoNextcloud Server
Afectado35.0.0 (da02f41) oficial nextcloud:35.0.0-apache
Autenticaciónadministrador delegado de la configuración de Webhooks (IDelegatedSettings)
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1

Qué puede hacer un atacante

Le diste a alguien la tarea de configuración de Webhooks. No está en el grupo admin. Nextcloud aun así le permite editar un webhook existente para que, en el siguiente evento coincidente, el servidor le envíe por correo un inicio de sesión de una hora para cualquier uid que indique, incluido admin.

Con ese inicio de sesión puede:

  • Abrir todos los archivos de esa persona (no solo algo que el webhook debía ver)
  • Descargar y sobrescribir esos archivos
  • Usar Files / WebDAV como esa persona
  • Omitir el 2FA (esto es una contraseña de aplicación, no una solicitud de contraseña)

No necesita un shell de PHP en el host. No necesita ser un administrador completo de la instancia. Un desconocido en internet sin cuenta no puede hacer esto. El fallo es el empleado en quien ya confiabas para los webhooks, suplantando a las personas en quienes no confiabas.


Cómo lo encontré

WebhooksController es #[AuthorizedAdminSetting(settings: Admin::class)]. Admin implementa IDelegatedSettings. Así es como Nextcloud entrega un panel de configuración a un grupo que no es admin.

tokenNeeded solicita al servidor que adjunte tokens de autenticación para los uids indicados cuando se dispare el webhook. TokenService::createEphemeralToken genera IToken::PERMANENT_TOKEN con password = null. Contraseña de aplicación. El 2FA ya queda atrás.

El PR #60543 protegió create: a menos que seas un administrador completo de la instancia, tokenNeeded se anula. Creé un webhook como usuario delegado hooker con tokenNeeded.user_ids: ["admin"]. El tokenNeeded almacenado era []. Create está protegido. Durante un minuto parece un parche terminado.

Luego envié por POST el mismo cuerpo a /webhooks/{id}. El user_ids almacenado era ['admin']. update() nunca copió el if.

Subí un archivo por PUT como hooker para que se dispare NodeCreatedEvent. Cron ejecuta WebhookCall. El JSON del receptor tiene authentication.user_ids.admin.token. Un GET con Bearer del archivo testigo privado del admin devolvió 200, X-User-Id: admin.

Formas en que esto falla sin enseñarte nada: update 403 (el controlador ya coincide con create); create ya generando tokens (#60543 no está en la compilación); authentication vacío en el receptor (cron no generó el token); ruta de cabecera ExApp (el usuario del laboratorio es el delegado hooker).


Laboratorio

cd lab
./run.sh

Dirígete solo a http://127.0.0.1:18320 (Nextcloud) y :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 solución

Copie el isAdmin anulado de create en update(). Hasta que eso se publique, no delegue la configuración de Webhooks a grupos que no sean administradores.


Referencias

  • github.com/nextcloud/server etiqueta v35.0.0 (da02f41)
  • Corrección cercana solo para create: nextcloud/server#60543
  • Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null

Licencia

GNU Affero GPL v3.0. Consulte LICENSE. Solo laboratorio de loopback. Sin garantía.

Descargar herramienta