
Aplicativo Next.js intencionalmente vulnerável para pesquisa de segurança do CVE-2025-55182 e desafios CTF
⚠️ APENAS PARA FINS EDUCATIVOS: Esta é uma aplicação intencionalmente vulnerável, projetada para pesquisa de segurança autorizada e desafios CTF. NÃO utilize essas técnicas em sistemas não autorizados.
Uma aplicação Next.js 15.1.6 deliberadamente vulnerável que demonstra a CVE-2025-55182 (React2Shell) — uma vulnerabilidade crítica de Execução Remota de Código em React Server Components. Construída para pesquisadores de segurança, testadores de penetração e estudantes praticarem técnicas de exploração em um ambiente seguro e isolado.
CVE-2025-55182, também conhecida como React2Shell, é uma vulnerabilidade crítica de Execução Remota de Código (RCE) que afeta React Server Components no Next.js.
A vulnerabilidade decorre do manuseio inadequado de dados serializados em React Server Actions. Atacantes podem criar payloads maliciosos que contornam a validação e executam código arbitrário no servidor através de:
Antes de começar, certifique-se de ter instalado:
docker --version
docker-compose --version
git --version
# 1. Clone o repositório
git clone https://github.com/Machine-farmer/PunchingBag-for-React2Shell.git
cd PunchingBag-for-React2Shell
# 2. Construa e execute com Docker
docker-compose up --build
# 3. Acesse a aplicação
# Abra seu navegador em: http://localhost:3000
# 1. Clone o repositório
git clone https://github.com/Machine-farmer/punchingbag-cve-2025-55182.git
cd punchingbag-cve-2025-55182
# 2. Instale as dependências
npm install
# 3. Execute o servidor de desenvolvimento
npm run dev
# 4. Acesse em http://localhost:3000
⚠️ Aviso: A configuração manual sem Docker NÃO é recomendada para pesquisa de segurança. Sempre use Docker para isolamento.
# Inicie a aplicação vulnerável
docker-compose up
# Inicie em modo destacado (segundo plano)
docker-compose up -d
# Veja os logs
docker-compose logs -f
# Pare os contêineres
docker-compose down
# Pare e remova volumes
docker-compose down -v
# Limpeza completa (remove imagens)
docker-compose down -v --rmi all
Uma vez em execução, navegue para:
O PunchingBag contém 5 bandeiras ocultas que testam diferentes técnicas de exploração:
Todas as bandeiras seguem o formato: CTF{descrição_aqui}
# Explore a aplicação
curl http://localhost:3000
# Verifique endpoints disponíveis
curl http://localhost:3000/dashboard
curl http://localhost:3000/admin
Intercepte submissões de formulário e modifique o payload:
// Exemplo de payload malicioso
{
"name": "atacante",
"email": "[email protected]",
"message": "__proto__: { isAdmin: true }"
}
# Injete cabeçalhos maliciosos
curl -X POST http://localhost:3000/api/data \
-H "Content-Type: application/json" \
-H "x-user-data: {\"role\":\"admin\"}" \
-d '{"exploit": true}'
Verifique .env.local por credenciais ou explore a autenticação:
# Token de admin padrão (intencionalmente fraco)
Usuário: admin
Token: super_secret_admin_key_12345
No componente vulnerável, use o recurso de execução de comandos:
# Simule RCE
Comando: cat /flag.txt
__proto__punchingbag-cve-2025-55182/
├── app/
│ ├── actions.js # Server Actions vulneráveis
│ ├── layout.js # Layout da aplicação
│ ├── page.js # Página inicial com informações do CTF
│ ├── globals.css # Estilos globais
│ ├── admin/
│ │ └── page.js # Painel de administração (Bandeiras 3, 4)
│ ├── dashboard/
│ │ └── page.js # Painel do usuário (Bandeiras 1, 2)
│ └── api/
│ ├── data/
│ │ └── route.js # Endpoint da API
│ └── submit/
│ └── route.js # Endpoint de submissão de formulário
├── components/
│ ├── Logo.js # Logotipo da aplicação
│ ├── VulnerableForm.js # Componente de formulário explorável
│ └── UserDisplay.js # Exibição de perfil do usuário
├── lib/
│ └── flags.js # Gerenciamento de bandeiras
├── public/
│ └── boxing-bag.png # Ícone da aplicação
├── .env.local # Variáveis de ambiente (Bandeira 5)
├── docker-compose.yml # Configuração Docker
├── Dockerfile # Definição do contêiner
├── next.config.js # Configuração do Next.js
├── package.json # Dependências
└── README.md # Este arquivo
Esta aplicação é INTENCIONALMENTE VULNERÁVEL e projetada para:
✅ Usos Autorizados:
❌ Usos Proibidos:
# Limpeza adequada após o uso
docker-compose down -v --rmi all
Contribuições são bem-vindas! Siga estas diretrizes:
git checkout -b feature/MinhaFuncionalidade)git commit -m 'Adiciona MinhaFuncionalidade')git push origin feature/MinhaFuncionalidade)Este projeto está licenciado sob a Licença MIT — veja o arquivo LICENSE para detalhes.
Se este projeto ajudou você a aprender sobre segurança web, considere dar uma estrela! ⭐
Feito com 🥊 para Pesquisa de Segurança
Lembre-se: Com grandes poderes vêm grandes responsabilidades. Use suas habilidades eticamente ou não eticamente, brincadeira😁, nunca use de forma antiética.
| Bandeira | Desafio | Dificuldade | Pontos |
|---|
| 🚩 Bandeira 1 | Reconhecimento Básico | Fácil | 100 |
| 🚩 Bandeira 2 | Exploração de Server Action | Médio | 200 |
| 🚩 Bandeira 3 | Bypass de Acesso Admin | Médio | 300 |
| 🚩 Bandeira 4 | Execução Remota de Código | Difícil | 400 |
| 🚩 Bandeira 5 | Segredos de Ambiente | Médio | 250 |