Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-29057-POC — Docker-based lab reproducing CVE-2026-29057 Next.js request smuggling, comparing vulnerable 15.5.12 against patched 15.5.13 with a raw chunked HTTP payload. | Kitploit
도구/GitHubGitHub/learnerxuan/cve-2026-29057-poc
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingPapers & ResearchLearning & EducationLabs & Practice
GitHublearnerxuan/cve-2026-29057-poc

CVE-2026-29057-POC

Docker-based lab reproducing CVE-2026-29057 Next.js request smuggling, comparing vulnerable 15.5.12 against patched 15.5.13 with a raw chunked HTTP payload.

817일 전아직 검토되지 않음
저장소 보기

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
요청한 언어로 콘텐츠를 사용할 수 없습니다. 영어 버전을 표시합니다.

CVE-2026-29057 — Next.js Request Smuggling Lab

This repository is a focused presentation lab for CVE-2026-29057. It compares a vulnerable Next.js target (15.5.12) with the patched release (15.5.13) using the same topology and raw HTTP payload.

Use it only in an isolated lab. Request-desynchronization probes can disrupt shared connections in real environments.

Attribution

This repository is adapted from Nayaka Ghana Subrata's original Next.js Proof of Concept repository. Full credit goes to the original author for the foundational proof-of-concept work.

I reorganized and modified that work to focus specifically on CVE-2026-29057, including the presentation materials, guided demonstration, lab scenario, explanatory comments, and vulnerable-versus-patched comparison. This repository is an educational adaptation and should not be mistaken for the original author's repository.

Presentation

  • CVE-2026-29057 presentation slides
  • Presentation script
  • Demo runbook
  • Presenter Q&A

What the lab proves

  1. The client sends one chunked DELETE /api/workspace/tasks/1042 request.
  2. Its body contains bytes spelling a second request: GET /secret.
  3. The vulnerable proxy removes Transfer-Encoding and adds Content-Length: 0, while body bytes are still forwarded.
  4. The internal intermediary parses the remaining bytes as a second request and forwards both parsed requests to the application backend.
TargetNext.jsBackend requests
Vulnerable15.5.12DELETE /api/workspace/tasks/1042, then GET /secret
Patched15.5.13DELETE /api/workspace/tasks/1042 only

Repository layout

.
├── docker-compose.yml
├── DEMO-RUNBOOK.md
├── PRESENTATION-SCRIPT.md
├── PRESENTATION-QA.md
├── pocs/cve-2026-29057/
│   ├── app/
│   ├── support/server.js
│   ├── next.config.js
│   └── Dockerfile
└── scripts/run-cve-2026-29057.mjs

Start the lab

Requirements: Docker Compose and Node.js 18 or newer.

docker compose up --build cve-2026-29057-vuln cve-2026-29057-fixed
  • Vulnerable: http://localhost:3105
  • Patched: http://localhost:3106

Run the differential demonstration

node scripts/run-cve-2026-29057.mjs http://localhost:3105
node scripts/run-cve-2026-29057.mjs http://localhost:3106

Expected vulnerable evidence:

[after] {"backendRequests":["DELETE /api/workspace/tasks/1042","GET /secret"],"flag":"FLAG{one_stream_two_requests}"}
PoC result: vulnerable behavior reproduced.
Flag: FLAG{one_stream_two_requests}

Expected patched evidence:

[after] {"backendRequests":["DELETE /api/workspace/tasks/1042"],"flag":null}
PoC result: smuggled request was not observed. This usually means the target is patched.

The meaningful evidence is differential: topology and payload stay unchanged; only the Next.js version differs.

Black-box discovery story

The lab does not require the presenter to pretend that an attacker magically knows both paths:

  1. The page visibly labels Launch brief as Task #1042. Click Delete task while browsing through Burp. Proxy history shows the legitimate DELETE /api/workspace/tasks/1042 request, so the carrier path comes directly from normal application traffic.
  2. Request /robots.txt. It points to the accidentally deployed /ops/release-manifest artifact.
  3. Request that manifest. It identifies /api/workspace/ as the public service prefix, leaks /secret as an internal route, and names /api/state as the request log. It does not reveal the flag itself.

The manifest is a deliberate information-disclosure weakness for the lab narrative. It is separate from CVE-2026-29057; the CVE supplies the request-framing bypass that reaches the disclosed backend route.

The route names are lab fixtures, not paths recovered from a real victim. Vercel's official patch added a regression test that defines /rewrites/:path*, uses /rewrites/poc as the carrier, and creates /secret on the test backend. This lab gives the carrier a product-shaped name while preserving that test structure.

Code walkthrough order

  1. docker-compose.yml — vulnerable versus patched versions.
  2. pocs/cve-2026-29057/next.config.js — external rewrite boundary.
  3. pocs/cve-2026-29057/support/server.js — intermediary and backend parsers.
  4. scripts/run-cve-2026-29057.mjs — raw chunked payload and result checker.
  5. pocs/cve-2026-29057/app/api/ — evidence reset and read endpoints.

Stop the lab

docker compose down

Sources

  • GitHub Security Advisory GHSA-ggv3-7p47-pfv8
  • Next.js patch commit
  • NVD record
도구 다운로드