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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-18963 — CVE-2026-18963(Keycloak 자격 증명 재설정 상태 우회)에 대한 탐지 및 검증 도구입니다. 버전 핑거프린팅, realm/client/user 열거를 수행하고, 승인된 평가를 위해 action-token 사전 조건이 적용되는지 테스트합니다. | Kitploit
도구/GitHubGitHub/alt3kx/cve-2026-18963
ReconnaissanceVulnerability AnalysisExploitationInformation GatheringWeb SecurityPenetration TestingAuthentication
GitHubalt3kx/cve-2026-18963

CVE-2026-18963

CVE-2026-18963(Keycloak 자격 증명 재설정 상태 우회)에 대한 탐지 및 검증 도구입니다. 버전 핑거프린팅, realm/client/user 열거를 수행하고, 승인된 평가를 위해 action-token 사전 조건이 적용되는지 테스트합니다.

저장소 보기
13시간 39분 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

CVE-2026-18963 Keycloak Reset-Credentials 상태 우회 탐지기

https://github.com/user-attachments/assets/005fab89-339a-4e4e-881c-da6a626f6c9e

root@kitploit:~
python3 kc-resetforge.py -h


usage: kc-resetforge.py [-h] [--target TARGET] [--targets-file TARGETS_FILE] [--port PORT] [--realm REALM]
                        [--client-id CLIENT_ID] [--username USERNAME] [--new-password NEW_PASSWORD] [--skip-enum]
                        [--enum-only] [--kc-version] [--kc-reset-link] [--corpus-dir CORPUS_DIR] [--label LABEL]
                        [--enum-realms] [--no-enum-realms] [--enum-clients] [--no-enum-clients] [--enum-users]
                        [--no-enum-users] [--realm-wordlist REALM_WORDLIST] [--client-wordlist CLIENT_WORDLIST]
                        [--user-wordlist USER_WORDLIST] [--enum-users-client-id ENUM_USERS_CLIENT_ID]
                        [--verify-login] [--no-verify-login] [--verify-client-id VERIFY_CLIENT_ID]
                        [--timeout TIMEOUT] [--request-delay REQUEST_DELAY] [--output-dir OUTPUT_DIR]
                        [--proxy PROXY] [-d] [-y] [--json-out JSON_OUT]

CVE-2026-18963 Keycloak 정찰 + 익스플로잇 프레임워크 (자체 인프라 전용)

options:
  -h, --help            도움말 메시지를 표시하고 종료합니다.
  --target TARGET       단일 대상: 호스트/IP만, host:port, 또는 전체 http(s)://host[:port] URL. 스킴과 포트는
                        생략 시 자동 감지됩니다(https 먼저 시도 후 http; 각각 443/80 기본값).
                        --targets-file과 상호 배타적입니다.
  --targets-file TARGETS_FILE
                        한 줄에 대상 하나씩 있는 파일 경로, --target과 동일한 유연한 형식('#' 주석 허용).
                        모든 대상에 대해 순차적으로 정찰+익스플로잇을 실행합니다.
  --port PORT           --target의 포트를 재정의합니다(--targets-file 줄에 자체 포트가 없는 경우의 대체값).
                        --targets-file의 줄별 포트가 항상 우선합니다.
  --realm REALM         대상 Realm. 생략 시 정찰 결과에서 자동 선택됩니다.
  --client-id CLIENT_ID
                        사용할 OIDC client_id. 생략 시 정찰 결과에서 자동 선택됩니다.
  --username USERNAME   대상 사용자 이름. 생략 시 정찰 결과에서 자동 선택됩니다.
  --new-password NEW_PASSWORD
                        대상 사용자에게 설정할 비밀번호 (기본값: 'Test123!')
  --skip-enum           정찰을 완전히 건너뜁니다; --realm/--client-id/--username이 필수가 됩니다.
  --enum-only           정찰을 실행하고 결과를 출력하되, 익스플로잇을 시도하지 않습니다.
  --kc-version          Keycloak 버전 정찰 단계(핑거프린트 + 코퍼스 매칭 + 패치 상태)만 실행하고
                        종료합니다 - realm/client/user 열거 및 익스플로잇을 완전히 건너뜁니다. --target과
                        --targets-file 모두에서 작동합니다.
  --kc-reset-link       셀프 서비스 비밀번호 재설정('비밀번호를 잊으셨나요?' /
                        resetPasswordAllowed) 흐름이 노출되어 있는지만 확인한 후 종료합니다 - 비파괴적 GET 한 번,
                        사용자 이름 불필요. --realm/--client-id가 명시적으로 주어지지 않으면 가벼운
                        realm+client 정찰을 통해 자동 발견합니다. 익스플로잇은 건너뜁니다. --target과
                        --targets-file 모두에서 작동합니다.
  --corpus-dir CORPUS_DIR
                        정확한 버전 매칭을 위한 알려진 버전 핑거프린트 디렉터리 (기본값:
                        kc_version_corpus).
  --label LABEL         알 수 없는 버전 매칭 대신 이 대상의 핑거프린트를 이 버전 라벨로 코퍼스에 저장합니다.
                        알려진 버전의 인스턴스에서 사용하세요.
  --enum-realms         Realm 이름 열거 (기본값: 정찰 중 켜짐).
  --no-enum-realms
  --enum-clients        Realm별 클라이언트 ID 열거 (기본값: 정찰 중 켜짐).
  --no-enum-clients
  --enum-users          Realm별 사용자 이름 열거 (기본값: 정찰 중 켜짐).
  --no-enum-users
  --realm-wordlist REALM_WORDLIST
  --client-wordlist CLIENT_WORDLIST
  --user-wordlist USER_WORDLIST
  --enum-users-client-id ENUM_USERS_CLIENT_ID
                        사용자 이름 열거 direct-grant 프로브에 사용되는 클라이언트 (기본값: admin-cli).
  --verify-login        비밀번호 변경 후, password-grant 토큰 요청을 통해 새 자격 증명을 확인합니다
                        (기본값: 켜짐).
  --no-verify-login
  --verify-client-id VERIFY_CLIENT_ID
                        검증 password grant에 사용되는 클라이언트.
  --timeout TIMEOUT
  --request-delay REQUEST_DELAY
                        익스플로잇 체인의 각 요청 전 대기 시간(초) (기본값: 0.4). Keycloak의 로그인
                        흐름 상태는 재설정/재시작/선택기 재생 단계에서 타이밍에 민감할 수 있습니다; 작은
                        지연이 체인을 더 안정적으로 만듭니다. 0이면 비활성화.
  --output-dir OUTPUT_DIR
  --proxy PROXY         HTTP(S) 프록시를 통해 라우팅: 'burp' (127.0.0.1:8080 약어), host:port만, 또는
                        전체 http(s):// URL.
  -d, --debug           요청/응답/열거 프로브의 상세 디버그 로깅
  -y, --yes             '이 대상으로 계속하시겠습니까?' 프롬프트를 건너뜁니다. 비대화형 사용(스크립트,
                        여러 대상이 있는 --targets-file, CI)에 필요합니다.
  --json-out JSON_OUT   정찰 + 익스플로잇 결과의 JSON 보고서를 이 경로에 작성합니다.

kc-resetforge — CVE-2026-18963 Keycloak 정찰 + 익스플로잇 도구 (자체 인프라 전용)

Usage
-----
완전 자동 (정찰 -> 대상 자동 선택 -> 익스플로잇 -> 검증):
    python3 kc-resetforge.py --target https://localhost:9990 --proxy burp -d

정찰만:
    python3 kc-resetforge.py --target https://localhost:9990 --enum-only -d

여러 호스트에 대한 버전 + 패치 상태 확인만:
    python3 kc-resetforge.py --targets-file targets.txt --kc-version

정찰 건너뛰고 직접 대상 지정:
    python3 kc-resetforge.py --target https://localhost:9990 --realm master \
        --client-id account --username admin --skip-enum

필요 사항: requests, beautifulsoup4, 선택적으로 rich (pip install --break-system-packages)

취약점 요약

기술적 세부 사항

  • 근본 원인: reset-credentials 흐름의 부적절한 상태 검증. 서버는 세션이 어느 단계에 있는지 추적하지만, 흐름이 비밀번호 업데이트 단계로 진행되기 전에 이메일로 전송된 action-token 단계가 실제로 완료되었는지 독립적으로 재검증하지 않습니다.
  • 전제 조건: 없음 — 인증 불필요, 사용자 상호작용 없음, 사전 접근 권한 불필요.
  • 범위: "비밀번호 찾기"가 활성화된 모든 realm, 26.7.2 미만 버전.
  • 수정 방법:
    • 업스트림 Keycloak 26.7.2
    • RHBK 26.4 → operator 번들 26.4.15-1 / 이미지 26.4-23
    • RHBK 26.6 → operator 번들 26.6.6-1 / 이미지 26.6-12
    • 임시 완화 조치: realm별로 "비밀번호 찾기" 비활성화 (Realm 설정 → 로그인 → 비밀번호 찾기)

이 도구에 대하여

kc-resetforge는 탐지/검증 도구입니다. 대상의 reset-credentials 흐름이 action-token 전제 조건을 올바르게 적용하는지(패치됨) 또는 그렇지 않은지(취약함) 확인하여, 승인된 평가에 사용할 수 있게 합니다. 아래 링크된 분석 문서는 공개 공개에 적합한 수준으로 메커니즘과 재현 방법론을 다룹니다.

전체 분석: Forging kc-resetforge: Turning CVE-2026-18963 Into a Repeatable Check

버전 식별

kc-resetforge.py는 Keycloak에 "버전이 무엇입니까?"라고 물을 수 없습니다. 사전 인증으로 답변해주는 엔드포인트가 없기 때문입니다. 대신 대상의 핑거프린트(응답 필드, 정적 자산 해시, 파비콘)를 수집하여 이미 알려진 버전으로 라벨링한 코퍼스와 비교합니다. 해당 핑거프린트에 대한 코퍼스 항목이 없으면 정확한 버전을 알 수 없는 것이며, 이는 버그가 아니라 설계상 의도입니다.

접근 권한이 있는 각 버전에 대해 코퍼스를 한 번 구축하세요:

root@kitploit:~
python3 kc-resetforge.py --target https://known-26.6.2-host --kc-version --label 26.6.2
python3 kc-resetforge.py --target https://known-26.7.2-host --kc-version --label 26.7.2
[snip]

My Lab:
python3 kc-resetforge.py --target https://localhost:9990 --kc-version --label 26.6.2
python3 kc-resetforge.py --target https://localhost:9991 --kc-version --label 26.6.3
python3 kc-resetforge.py --target https://localhost:9992 --kc-version --label 26.6.4
python3 kc-resetforge.py --target https://localhost:9993 --kc-version --label 26.7.0
python3 kc-resetforge.py --target https://localhost:9994 --kc-version --label 26.7.1
python3 kc-resetforge.py --target https://localhost:9995 --kc-version --label 26.7.2

Recon:
python3 kc-resetforge.py --targets-file targets.txt --kc-version --kc-reset-link --proxy 127.0.0.1:8080
[snip]

[*] Proxying through: http://127.0.0.1:8080
[+] Run Summary
Targets scanned

┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┓
┃Target                 ┃ Keycloak Version ┃ Patch      ┃ Reset Link ┃ Result ┃
┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━┩
│https://localhost:9990 │ 26.6.2           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9991 │ 26.6.3           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9992 │ 26.6.4           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9993 │ 26.7.0           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9994 │ 26.7.1           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9995 │ 26.7.2           │ PATCHED    │ ENABLED    │ checked│
└───────────────────────┴──────────────────┴────────────┴────────────┴────────┘

항목은 스크립트 옆의 kc_version_corpus/에 저장되므로, 도구를 어느 디렉터리에서 실행하든 유지됩니다. 해당 폴더를 삭제하지 마세요.

코퍼스 내용 확인:

root@kitploit:~
ls kc_version_corpus/

라벨링이 완료되면 이후 모든 스캔이 자동으로 매칭됩니다:

root@kitploit:~
python3 kc-resetforge.py --target https://target --kc-version
python3 kc-resetforge.py --targets-file targets.txt --kc-version

크레딧

취약점 발견

  • James Paremain (Red Hat 권고에서 공로 인정)

도구

  • Alex Hernandez aka (@_alt3kx_)

참고 자료

  • https://access.redhat.com/security/cve/CVE-2026-18963
  • https://www.keycloak.org/2026/08/keycloak-2672-released
  • https://thehackernews.com/2026/08/critical-keycloak-password-reset-flaw.html
  • https://github.com/keycloak/keycloak/issues/51833

면책 조항

이 프로젝트는 다음 용도로만 엄격히 제공됩니다:

  • 승인된 보안 평가
  • 방어적 테스트
  • 교육적 연구

소유하지 않았거나 명시적인 서면 승인을 받지 않은 시스템에 대해 이 도구를 실행하지 마십시오. 제3자 인프라에 대한 무단 사용은 불법이며 이 프로젝트의 의도된 목적을 벗어납니다. 관리자는 오용에 대해 어떠한 책임도 지지 않습니다.

도구 다운로드
필드값
CVECVE-2026-18963
심각도치명적(Critical)
CVSS9.1
CWECWE-640 (취약한 비밀번호 복구 메커니즘)
구성 요소Keycloak — reset-credentials 인증 흐름
영향인증 없이, 상호작용 없이 계정 탈취 가능 (관리자 계정 포함)
패치 버전Keycloak 26.7.2 (업스트림) / RHBK 26.4.15-1, 26.6.6-1