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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
React-Router-CVE-2025-61686- — CVE-2025-61686 का विस्तृत विश्लेषण, जो React Router की फ़ाइल सत्र भंडारण में एक पथ ट्रावर्सल भेद्यता है, जिसमें मूल कारण, हमले के परिदृश्य और कोड ऑडिट निष्कर्ष शामिल हैं। | Kitploit
उपकरण/GitHubGitHub/kai-one001/react-router-cve-2025-61686-
स्थैतिक विश्लेषणभेद्यता विश्लेषणकोड विश्लेषणशोषणवेब सुरक्षालर्निंग और शिक्षा
GitHubkai-one001/react-router-cve-2025-61686-

React-Router-CVE-2025-61686-

CVE-2025-61686 का विस्तृत विश्लेषण, जो React Router की फ़ाइल सत्र भंडारण में एक पथ ट्रावर्सल भेद्यता है, जिसमें मूल कारण, हमले के परिदृश्य और कोड ऑडिट निष्कर्ष शामिल हैं।

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखें
7 महीने पहलेअभी तक समीक्षित नहीं

CVE-2025-61686 भेद्यता विश्लेषण रिपोर्ट

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

CVE ID: CVE-2025-61686
प्रभावित संस्करण: @react-router/node 7.0.0 से 7.9.3
भेद्यता प्रकार: पथ ट्रैवर्सल (Path Traversal) / निर्देशिका क्रॉसिंग

भेद्यता सिद्धांत

1. भेद्यता स्थान

यह भेद्यता packages/react-router-node/sessions/fileStorage.ts फ़ाइल में getFile() फ़ंक्शन और संबंधित फ़ाइल संचालन तर्क में मौजूद है।

2. मुख्य समस्या विश्लेषण

2.1 Session ID का स्रोत

packages/react-router/lib/server-runtime/sessions.ts की पंक्ति 267 में:

root@kitploit:~
async getSession(cookieHeader, options) {
  let id = cookieHeader && (await cookie.parse(cookieHeader, options));
  let data = id && (await readData(id));
  return createSession(data || {}, id || "");
}

Session ID कुकी से पार्स किया जाता है, cookie.parse() विधि के माध्यम से।

2.2 कुकी डिकोडिंग तर्क

packages/react-router/lib/server-runtime/cookies.ts में decodeCookieValue() फ़ंक्शन:

root@kitploit:~
async function decodeCookieValue(
  value: string,
  secrets: string[],
): Promise<any> {
  if (secrets.length > 0) {
    // यदि secrets कॉन्फ़िगर किए गए हैं, तो हस्ताक्षर सत्यापित करेंगे
    for (let secret of secrets) {
      let unsignedValue = await unsign(value, secret);
      if (unsignedValue !== false) {
        return decodeData(unsignedValue);
      }
    }
    return null;  // हस्ताक्षर सत्यापन विफल होने पर null लौटाएं
  }
  
  // यदि secrets कॉन्फ़िगर नहीं किए गए (अहस्ताक्षरित), तो सीधे डिकोडेड मान लौटाएं
  return decodeData(value);
}

मुख्य समस्या: जब कुकी अहस्ताक्षरित होती है (secrets खाली सरणी या सेट नहीं है), तो decodeCookieValue सीधे डिकोडेड कुकी मान लौटाता है, हमलावर इस मान को पूरी तरह से नियंत्रित कर सकता है।

2.3 पथ निर्माण तर्क

packages/react-router-node/sessions/fileStorage.ts में:

root@kitploit:~
export function getFile(dir: string, id: string): string {
  // Divide the session id up into a directory (first 2 bytes) and filename
  // (remaining 6 bytes) to reduce the chance of having very large directories,
  return path.join(dir, id.slice(0, 4), id.slice(4));
}

यह फ़ंक्शन session ID को दो भागों में विभाजित करता है:

  • पहले 4 वर्ण निर्देशिका नाम के रूप में: id.slice(0, 4)
  • शेष वर्ण फ़ाइल नाम के रूप में: id.slice(4)

फिर path.join() का उपयोग करके पथ जोड़ता है।

2.4 भेद्यता का दोहन विधि

हमला परिदृश्य: जब createFileSessionStorage() का उपयोग किया जाता है और कुकी अहस्ताक्षरित होती है:

  1. हमलावर एक दुर्भावनापूर्ण session ID बना सकता है, जैसे: ../../etc/passwd
  2. getFile() फ़ंक्शन प्रसंस्करण:
    • id.slice(0, 4) = ../.
    • id.slice(4) = /etc/passwd
    • path.join(dir, ../., /etc/passwd)
    • हालाँकि path.join() पथ को सामान्य करता है, लेकिन यदि dir पहले से ही सापेक्ष पथ है या प्रसंस्करण के बाद, फिर भी पथ ट्रैवर्सल संभव हो सकता है

अधिक सटीक दोहन विधि:

  • Session ID: ....//etc/passwd
    • id.slice(0, 4) = ....
    • id.slice(4) = //etc/passwd
    • यदि अनुचित तरीके से प्रबंधित किया जाता है, तो /etc/passwd तक पहुँच हो सकती है

या:

  • Session ID: ../../../etc/passwd (16 वर्ण)
    • id.slice(0, 4) = ../.
    • id.slice(4) = ./etc/passwd
    • path.join() के व्यवहार के साथ मिलकर, यह पथ ट्रैवर्सल का कारण बन सकता है

3. प्रभावित संचालन

निम्नलिखित फ़ाइल संचालन प्रभावित हो सकते हैं:

  1. readData(id) - सत्र डेटा पढ़ते समय

    root@kitploit:~
    async readData(id) {
      try {
        let file = getFile(dir, id);
        let content = JSON.parse(await fsp.readFile(file, "utf-8"));
        // ...
      }
    }
    
  2. updateData(id, data, expires) - सत्र डेटा अपडेट करते समय

    root@kitploit:~
    async updateData(id, data, expires) {
      let content = JSON.stringify({ data, expires });
      let file = getFile(dir, id);
      await fsp.mkdir(path.dirname(file), { recursive: true });
      await fsp.writeFile(file, content, "utf-8");
    }
    
  3. deleteData(id) - सत्र डेटा हटाते समय

    root@kitploit:~
    async deleteData(id) {
      try {
        await fsp.unlink(getFile(dir, id));
      }
    }
    

4. हमले का प्रभाव

  1. फ़ाइल पढ़ना: हमलावर सर्वर पर किसी भी फ़ाइल को पढ़ सकता है (वेब सर्वर प्रक्रिया की अनुमतियों पर निर्भर करता है)
  2. फ़ाइल लिखना: हमलावर सर्वर पर फ़ाइलें लिख सकता है, जिससे हो सकता है:
    • डेटा रिसाव
    • कोड इंजेक्शन
    • विशेषाधिकार वृद्धि
  3. फ़ाइल हटाना: हमलावर सर्वर पर फ़ाइलें हटा सकता है

5. भेद्यता ट्रिगर शर्तें

निम्नलिखित सभी शर्तों को एक साथ पूरा करना होगा:

  1. createFileSessionStorage() विधि का उपयोग करना
  2. कुकी अहस्ताक्षरित होनी चाहिए (cookie कॉन्फ़िगरेशन में secrets सेट नहीं है या secrets खाली सरणी है)
  3. वेब सर्वर प्रक्रिया के पास लक्ष्य फ़ाइल पर पढ़ने/लिखने की अनुमति होनी चाहिए

कोड ऑडिट निष्कर्ष

मुख्य कोड पथ

root@kitploit:~
getSession(cookieHeader) 
  → cookie.parse(cookieHeader) 
    → decodeCookieValue(value, secrets)  // अहस्ताक्षरित होने पर सीधे value लौटाता है
      → readData(id) 
        → getFile(dir, id)  // पथ जोड़ना, पथ ट्रैवर्सल जोखिम मौजूद है
          → fsp.readFile(file) / fsp.writeFile(file) / fsp.unlink(file)

समस्या का स्रोत

  1. इनपुट सत्यापन की कमी: getFile() फ़ंक्शन id पैरामीटर को सत्यापित या सामान्य नहीं करता है
  2. path.join() के सामान्यीकरण पर निर्भरता: हालाँकि path.join() पथ को सामान्य करता है, लेकिन विशिष्ट परिस्थितियों में (जैसे जोड़ने से पहले पथ में पहले से .. शामिल है) फिर भी पथ ट्रैवर्सल की अनुमति दे सकता है
  3. अहस्ताक्षरित कुकी: हमलावर को session ID के मान को पूरी तरह से नियंत्रित करने की अनुमति देता है
टूल डाउनलोड करें