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
11hace 15 díasAún no revisado
Compartir

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() 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 luego 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 nombre) 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 la 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 liste, incluido admin.

Con ese inicio de sesión pueden:

  • Abrir todos los archivos de esa persona (no solo algo que se suponía 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 un prompt de contraseña)

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


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 le pide al servidor que adjunte tokens de autenticación para los uids nombrados cuando se dispare el webhook. TokenService::createEphemeralToken acuña IToken::PERMANENT_TOKEN con password = null. Contraseña de aplicación. El 2FA ya quedó atrás.

El PR #60543 restringió 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 fue []. Create está restringido. Por un minuto eso parece un parche terminado.

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

Subí un archivo por PUT como hooker para que se dispare NodeCreatedEvent. Cron ejecuta WebhookCall. El JSON del catcher 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 muere sin enseñarte nada: update 403 (el controlador ya coincide con create); create ya acuñando tokens (#60543 no está en la compilación); authentication vacío en el catcher (cron no acuñó); ruta de encabezado ExApp (el usuario del laboratorio es el delegado hooker).


Laboratorio

cd lab
./run.sh

Objetivo solo 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

Copia la anulación de isAdmin de create dentro de update(). Hasta que eso se publique, no delegues la configuración de Webhooks a grupos que no sean admin.


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. Ver LICENSE. Solo laboratorio en loopback. Sin garantía.

Descargar herramienta