Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
nextcloud-webhook-tokenneeded — Nextcloud 35.0.0 — делегированный администратор Webhooks может создать 1-часовой пароль приложения администратора через токен обновления вебхука tokenNeeded | Kitploit
Инструменты/GitHubGitHub/abraxas/nextcloud-webhook-tokenneeded
Аутентификация и авторизацияПовышение привилегийУправление идентификациейАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на Проникновение

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Лаборатории и Практика
GitHubabraxas/nextcloud-webhook-tokenneeded

nextcloud-webhook-tokenneeded

Nextcloud 35.0.0 — делегированный администратор Webhooks может создать 1-часовой пароль приложения администратора через токен обновления вебхука tokenNeeded

Репозиторий
1115 дней назадЕщё не проверено

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() обнуляет tokenNeeded, если вызывающий не является полным администратором экземпляра. update() — нет. Делегированный администратор настроек Webhooks (не входящий в admin) может сохранить tokenNeeded.user_ids: ["admin"] для существующего вебхука, а затем получить часовой неограниченный пароль приложения PERMANENT_TOKEN для этого uid, когда событие сработает.

Злоумышленник, которому доверили только управление вебхуками, может войти как admin (или любой указанный им пользователь) на один час, обойти 2FA и читать или перезаписывать файлы этого человека.

IDCVE пока нет
CWECWE-863, CWE-269
CVSSВысокий: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
ПродуктNextcloud Server
Затронуто35.0.0 (da02f41) официальный nextcloud:35.0.0-apache
Аутентификацияделегированный администратор настроек Webhooks (IDelegatedSettings)
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

Что может сделать злоумышленник

Вы дали кому-то задачу настройки Webhooks. Он не входит в группу admin. Nextcloud всё равно позволяет ему редактировать существующий вебхук так, чтобы при следующем подходящем событии сервер отправил ему часовой логин для любого указанного uid, включая admin.

С этим логином он может:

  • Открыть все файлы этого человека (не только то, что вебхук должен был видеть)
  • Скачать и перезаписать эти файлы
  • Использовать Files / WebDAV от имени этого человека
  • Обойти 2FA (это пароль приложения, а не запрос пароля)

Ему не нужен PHP-шелл на хосте. Ему не нужно быть полным администратором экземпляра. Посторонний в интернете без учётной записи этого сделать не может. Дыра — это сотрудник, которому вы уже доверили вебхуки, выдающий себя за тех, кому вы не доверяли.


Как я это нашёл

WebhooksController помечен #[AuthorizedAdminSetting(settings: Admin::class)]. Admin реализует IDelegatedSettings. Именно так Nextcloud передаёт панель настроек группе, не являющейся admin.

tokenNeeded просит сервер прикрепить токены аутентификации для указанных uid, когда вебхук срабатывает. TokenService::createEphemeralToken создаёт IToken::PERMANENT_TOKEN с password = null. Пароль приложения. 2FA уже позади.

PR #60543 закрыл create: если вы не полный администратор экземпляра, tokenNeeded обнуляется. Я создал вебхук как делегированный пользователь hooker с tokenNeeded.user_ids: ["admin"]. Сохранённый tokenNeeded был []. Create закрыт. Минуту это выглядит как завершённый патч.

Затем я отправил то же тело POST-запросом на /webhooks/{id}. Сохранённый user_ids был ['admin']. update() так и не скопировал if.

PUT файла от имени hooker, чтобы сработал NodeCreatedEvent. Cron запускает WebhookCall. В JSON перехватчика есть authentication.user_ids.admin.token. Bearer GET приватного файла-свидетеля admin вернул 200, X-User-Id: admin.

Способы, которыми это умирает, ничему вас не научив: update 403 (контроллер уже совпадает с create); create уже создаёт токены (#60543 отсутствует в сборке); пустой authentication в перехватчике (cron не создал); путь заголовка ExApp (пользователь лаборатории — делегированный hooker).


Лаборатория

cd lab
./run.sh

Цель только http://127.0.0.1:18320 (Nextcloud) и :18321 (перехватчик).

SUCCESS NEXTCLOUD-WEBHOOK-TOKENNEEDED who=delegated-webhook-admin uid=admin NEXTCLOUD-WEBHOOK-TOKENNEEDED-WITNESS
  • lab/docker-compose.yml
  • lab/run.sh
  • lab/hook/Dockerfile

Исправление

Скопируйте обнуление isAdmin из create в update(). Пока это не выпущено, не делегируйте настройки Webhooks группам, не являющимся admin.


Ссылки

  • github.com/nextcloud/server тег v35.0.0 (da02f41)
  • Близкое исправление только для create: nextcloud/server#60543
  • Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null

Лицензия

GNU Affero GPL v3.0. См. LICENSE. Только loopback-лаборатория. Без гарантий.

Скачать инструмент