Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
nextcloud-webhook-tokenneeded — Nextcloud 35.0.0 — 위임된 Webhooks 관리자가 webhook update tokenNeeded를 통해 1시간짜리 관리자 앱 비밀번호를 발급할 수 있음 | Kitploit
도구/GitHubGitHub/abraxas/nextcloud-webhook-tokenneeded
Authentication & AuthorizationPrivilege EscalationIdentity ManagementVulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration Testing

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
Labs & Practice
GitHubabraxas/nextcloud-webhook-tokenneeded

nextcloud-webhook-tokenneeded

Nextcloud 35.0.0 — 위임된 Webhooks 관리자가 webhook update tokenNeeded를 통해 1시간짜리 관리자 앱 비밀번호를 발급할 수 있음

저장소 보기
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를 null로 만든다. update()는 그렇지 않다. 위임된 Webhooks 설정 관리자(admin 그룹에 속하지 않음)는 기존 웹훅에 tokenNeeded.user_ids: ["admin"]을 저장한 다음, 이벤트가 발생할 때 해당 uid에 대해 1시간짜리 범위 없는 PERMANENT_TOKEN 앱 비밀번호를 받을 수 있다.

웹훅 관리만 신뢰받았던 악의적인 행위자가 1시간 동안 admin(또는 자신이 지정한 임의의 사용자)으로 로그인하고, 2FA를 건너뛰고, 그 사람의 파일을 읽거나 덮어쓸 수 있다.

ID아직 CVE 없음
CWECWE-863, CWE-269
CVSSHigh: 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)에 대해 1시간짜리 로그인을 메일로 보내도록 만든다.

그 로그인으로 그들은 다음을 할 수 있다:

  • 그 사람의 모든 파일 열기 (웹훅이 원래 봐야 했던 것만이 아님)
  • 그 파일들을 다운로드하고 덮어쓰기
  • 그 사람으로서 Files / WebDAV 사용
  • 2FA 건너뛰기 (이것은 앱 비밀번호이며, 비밀번호 프롬프트가 아님)

호스트에 PHP 셸이 필요하지 않다. 전체 인스턴스 관리자가 될 필요도 없다. 계정이 없는 인터넷상의 낯선 사람은 이걸 할 수 없다. 이 취약점은 당신이 이미 웹훅 관리를 신뢰한 직원이, 당신이 신뢰하지 않은 사람들을 사칭하는 것이다.


발견 방법

WebhooksController는 #[AuthorizedAdminSetting(settings: Admin::class)]이다. Admin은 IDelegatedSettings를 구현한다. 이것이 Nextcloud가 admin이 아닌 그룹에 설정 패널을 넘겨주는 방식이다.

tokenNeeded는 웹훅이 발생할 때 지정된 uid에 대한 인증 토큰을 서버가 첨부하도록 요청한다. TokenService::createEphemeralToken은 password = null로 IToken::PERMANENT_TOKEN을 발급한다. 앱 비밀번호다. 2FA는 이미 통과한 상태다.

PR #60543은 create를 제한했다: 전체 인스턴스 관리자가 아니면 tokenNeeded가 null로 만들어진다. 나는 위임된 사용자 hooker로 tokenNeeded.user_ids: ["admin"]을 가진 웹훅을 생성했다. 저장된 tokenNeeded는 []였다. Create는 제한된다. 잠시 동안은 이것이 완성된 패치처럼 보인다.

그런 다음 나는 동일한 본문을 /webhooks/{id}에 POST했다. 저장된 user_ids는 ['admin']이었다. update()는 그 if를 복사하지 않았다.

hooker로서 파일을 PUT하여 NodeCreatedEvent가 발생하게 했다. Cron이 WebhookCall을 실행한다. Catcher JSON에 authentication.user_ids.admin.token이 있다. 관리자 개인 witness 파일에 대한 Bearer GET이 200, X-User-Id: admin을 반환했다.

이것이 아무것도 가르쳐주지 않고 실패하는 경우들: update 403 (컨트롤러가 이미 create와 일치함); create가 이미 토큰을 발급함 (#60543이 빌드에 없음); catcher에서 빈 authentication (cron이 발급하지 않음); ExApp 헤더 경로 (랩 사용자는 위임된 hooker임).


랩

cd lab
./run.sh

오직 http://127.0.0.1:18320 (Nextcloud)과 :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

수정 방법

create의 isAdmin null 처리 로직을 update()에 복사하라. 그것이 배포되기 전까지는 Webhooks 설정을 비관리자 그룹에 위임하지 마라.


참고 자료

  • 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 참조. 루프백 랩 전용. 보증 없음.

도구 다운로드