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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-29000-PoC — CVE-2026-29000 - pac4j-jwt (< 4.5.9 / < 5.7.9 / < 6.3.3) JwtAuthenticator 인증 우회 PoC | Kitploit
도구/GitHubGitHub/dua2z3rr/cve-2026-29000-poc
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationCTFPenetration TestingAuthenticationLearning & Education
GitHubdua2z3rr/cve-2026-29000-poc

CVE-2026-29000-PoC

CVE-2026-29000 - pac4j-jwt (< 4.5.9 / < 5.7.9 / < 6.3.3) JwtAuthenticator 인증 우회 PoC

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-29000 — pac4j-jwt JwtAuthenticator 인증 우회 PoC

CVE-2026-29000에 대한 개념 증명(PoC)입니다. 이는 pac4j-jwt의 JwtAuthenticator 구성 요소에서 발생하는 인증 우회 취약점입니다 (CVSS 10.0, 치명적).

이 스크립트는 비밀 키를 전혀 알지 못해도 대상이 RSA 공개 키를 노출하기만 하면, 모든 사용자를 가장하고 모든 역할을 부여받은 토큰을 위조합니다.

[!WARNING] 이 도구는 교육 목적 및 승인된 보안 테스트 전용으로 제공됩니다. Hack The Box 머신 **"Principal"**을 풀기 위해 작성되었으며, 기본값(iss, role, kid)은 해당 머신에 맞게 조정되었습니다. 자신이 소유하거나 명시적으로 테스트 권한을 부여받은 시스템에만 사용하십시오.


취약점

pac4j-jwt 버전 < 4.5.9, < 5.7.9, < 6.3.3은 JwtAuthenticator가 암호화된 JWT(JWE)를 처리할 때 논리적 결함을 포함하고 있습니다.

JwtAuthenticator가 JWE를 복호화한 후, 내부 토큰을 SignedJWT로 파싱하려고 시도합니다. 내부 토큰이 서명되지 않은 PlainJWT(alg: none)인 경우 SignedJWT 객체는 null을 반환하고, 논리 오류로 인해 서명 확인 경로가 완전히 건너뛰어집니다. 그런 다음 인증자는 확인되지 않은 클레임에서 바로 사용자 프로필을 생성합니다.

다시 말해, 서버의 공개 키만 필요한 외부 JWE 암호화가 진위 증명으로 오인되므로, 공개 키를 읽을 수 있는 모든 공격자는 완전히 신뢰되는 토큰을 발행할 수 있습니다.

공격 체인

  1. 대상의 JWKS 엔드포인트(예: /api/auth/jwks)에서 RSA 공개 키를 가져옵니다.
  2. 공격자가 선택한 클레임(sub, role, iss, …)으로 서명되지 않은 PlainJWT(alg: none)를 위조합니다.
  3. 해당 PlainJWT를 대상의 공개 키로 암호화된 JWE 봉투로 감쌉니다.
  4. 결과적인 압축 JWE를 Bearer 토큰으로 전송합니다. 취약한 JwtAuthenticator는 이를 복호화하고 서명 확인을 건너뛰며 위조된 클레임을 신뢰합니다.

요구 사항

  • Python 3.8+
  • requirements.txt의 종속성:
root@kitploit:~
pip install -r requirements.txt

(requests, jwcrypto, cryptography)


사용법

root@kitploit:~
python3 exploit.py -u <사용자명> [옵션]

옵션

--target(네트워크를 통해 JWKS 가져오기) 또는 --jwks-file(로컬로 제공) 중 하나를 제공해야 합니다.

예제

대상에서 공개 키를 가져와 관리자 토큰을 위조하고 stdout으로 출력:

root@kitploit:~
python3 exploit.py -t http://target:8080 -u admin

토큰을 위조한 후 보호된 엔드포인트에 대해 자동으로 테스트:

root@kitploit:~
python3 exploit.py -t http://target:8080 -u admin \
    --verify-endpoint /api/settings -v

로컬에 저장된 JWKS를 사용하고 토큰을 파일로 저장:

root@kitploit:~
python3 exploit.py --jwks-file jwks.json -u admin -o token.jwe

수정 방법

org.pac4j:pac4j-jwt를 패치된 릴리스로 업그레이드하십시오:

  • 4.x 라인 → 4.5.9 이상
  • 5.x 라인 → 5.7.9 이상
  • 6.x 라인 → 6.3.3 이상

라이선스

MIT 라이선스에 따라 배포됩니다.

도구 다운로드
플래그설명기본값
-t, --target대상의 기본 URL (예: http://host:8080)—
--jwks-urlJWKS 엔드포인트 경로/api/auth/jwks
--jwks-file--target에서 가져오는 대신 로컬 파일에서 JWKS 로드—
-u, --usernamesub 클레임 값 (필수)—
--rolerole 클레임 값ROLE_ADMIN
--ississ 클레임 값principal-platform
--exp토큰 유효 시간(초)3600
--verify-endpoint위조 토큰을 테스트할 보호된 엔드포인트 (예: /api/settings)—
-k, --insecureTLS 인증서 검증 비활성화off
-o, --output위조된 JWE를 stdout 대신 파일에 쓰기stdout
-v, --verbose위조된 JWT 페이로드를 stderr에 출력off