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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-29000-pac4j-jwt — CVE-2026-29000 PoC: pac4j-jwt PlainJWT-in-JWE 인증 우회. | Kitploit
도구/GitHubGitHub/strikoder-premium/cve-2026-29000-pac4j-jwt
Authentication & AuthorizationVulnerability AnalysisExploitationWeb Application ExploitationPenetration Testing
GitHubstrikoder-premium/cve-2026-29000-pac4j-jwt

CVE-2026-29000-pac4j-jwt

CVE-2026-29000 PoC: pac4j-jwt PlainJWT-in-JWE 인증 우회.

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
33개월 전아직 검토되지 않음

pac4j-jwe-forge (CVE-2026-29000)

CVE-2026-29000에 대한 개념 증명(PoC)입니다. pac4j-jwt 4.5.9, 5.7.9, 6.3.3 이전 버전을 대상으로 합니다.

이 취약점은 간단합니다. 라이브러리는 유효한 JWE 내부에 래핑되어 있는 한 PlainJWT(서명 없음, alg=none)를 허용합니다. 서버가 JWKS 엔드포인트를 통해 RSA 공개 키를 노출하므로, 누구나 임의의 서명 없는 JWT를 서버가 신뢰하는 JWE로 암호화할 수 있습니다. 여기에는 ROLE_ADMIN 권한이 포함된 JWT도 해당됩니다.


작동 방식

  1. 대상의 JWKS 엔드포인트에서 RSA 공개 키를 가져옵니다.
  2. 원하는 클레임으로 서명 없는 JWT(alg=none)를 생성합니다.
  3. 서버의 공개 키로 암호화합니다.
  4. 결과 JWE를 Bearer 토큰으로 전송합니다.

서버는 이를 복호화하고 내부 클레임을 신뢰하며, 내부 JWT가 서명되지 않았는지 확인하지 않습니다.


요구 사항

uv가 포함된 Python 3.13+ 또는 수동으로 의존성을 설치합니다:

root@kitploit:~
pip install jwcrypto requests

사용법

root@kitploit:~
[uv run / python3] CVE-2026-29000.py --url <base_url> --jwks <jwks_path> [options]

필수:

플래그설명
--url대상의 기본 URL (예: http://10.10.11.x:8080)
--jwksJWKS 엔드포인트의 경로 또는 전체 URL

선택:

예시:

root@kitploit:~
python3 exploit.py --url http://10.10.11.x:8080 --jwks /api/auth/jwks

python3 exploit.py --url http://10.10.11.x:8080 --jwks /api/auth/jwks --user john --role ROLE_ADMIN

python3 exploit.py --url http://10.10.11.x:8080 --jwks /.well-known/jwks.json --enc A128GCM

JWKS 엔드포인트 찾기

항상 명확하지는 않습니다. 확인해 볼 만한 위치:

  • /robots.txt — 제한된 경로나 내부 경로를 나열하는 경우가 많음
  • /api/auth/jwks
  • /.well-known/jwks.json
  • /.well-known/openid-configuration

올바른 alg/enc 찾기

토큰이 거부되면 앱이 특정 암호화 알고리즘을 기대할 수 있습니다. /static/js/app.js에서 다음과 같은 내용을 확인하세요:

root@kitploit:~
const JWE_ALG = "RSA-OAEP-256";
const JWE_ENC = "A128GCM";

그런 다음 --enc A128GCM으로 다시 실행합니다.

토큰 저장 방식도 일반적으로 여기에 있습니다:

root@kitploit:~
class TokenManager {
    static getToken() {
        return sessionStorage.getItem('auth_token');
    }
}

sessionStorage를 사용한다면 DevTools의 Application > Session Storage에서 토큰을 직접 교체하세요.


영향을 받는 버전

  • pac4j-jwt < 4.5.9
  • pac4j-jwt < 5.7.9
  • pac4j-jwt < 6.3.3

4.5.9, 5.7.9, 6.3.3에서 수정되었습니다.

도구 다운로드
플래그기본값설명
--useradminsub 클레임 값
--roleROLE_ADMIN위조할 역할 (ROLE_ADMIN, ROLE_MANAGER, ROLE_USER)
--issuerprincipal-platformiss 클레임 값
--encA256GCMJWE 콘텐츠 암호화 (A256GCM 또는 A128GCM)