App Next.js intenzionalmente vulnerabile per la ricerca sulla sicurezza di CVE-2025-55182 e sfide CTF
⚠️ SOLO A SCOPO EDUCATIVO: Questa è un'applicazione deliberatamente vulnerabile progettata per ricerche di sicurezza autorizzate e sfide CTF. NON utilizzare queste tecniche su sistemi non autorizzati.
Un'applicazione Next.js 15.1.6 deliberatamente vulnerabile che dimostra CVE-2025-55182 (React2Shell) - una vulnerabilità critica di Remote Code Execution nei React Server Components. Progettata per ricercatori di sicurezza, penetration tester e studenti per praticare tecniche di sfruttamento in un ambiente sicuro e isolato.
CVE-2025-55182, noto anche come React2Shell, è una vulnerabilità critica di Remote Code Execution (RCE) che colpisce i React Server Components in Next.js.
La vulnerabilità deriva da una gestione impropria dei dati serializzati nelle React Server Actions. Gli aggressori possono creare payload malevoli che bypassano la validazione ed eseguono codice arbitrario sul server attraverso:
Prima di iniziare, assicurati di avere installato:
docker --version
docker-compose --version
git --version
# 1. Clone the repository
git clone https://github.com/Machine-farmer/PunchingBag-for-React2Shell.git
cd PunchingBag-for-React2Shell
# 2. Build and run with Docker
docker-compose up --build
# 3. Access the application
# Open your browser to: http://localhost:3000
# 1. Clone the repository
git clone https://github.com/Machine-farmer/punchingbag-cve-2025-55182.git
cd punchingbag-cve-2025-55182
# 2. Install dependencies
npm install
# 3. Run development server
npm run dev
# 4. Access at http://localhost:3000
⚠️ Avvertenza: La configurazione manuale senza Docker NON è raccomandata per la ricerca sulla sicurezza. Usare sempre Docker per l'isolamento.
# Start the vulnerable application
docker-compose up
# Start in detached mode (background)
docker-compose up -d
# View logs
docker-compose logs -f
# Stop containers
docker-compose down
# Stop and remove volumes
docker-compose down -v
# Complete cleanup (removes images)
docker-compose down -v --rmi all
Una volta in esecuzione, naviga verso:
PunchingBag contiene 5 bandiere nascoste che testano diverse tecniche di sfruttamento:
| Bandiera | Sfida | Difficoltà | Punti |
|---|---|---|---|
| 🚩 Bandiera 1 | Ricognizione Base | Facile | 100 |
| 🚩 Bandiera 2 | Exploit Server Action | Media | 200 |
| 🚩 Bandiera 3 | Bypass Accesso Admin | Media | 300 |
| 🚩 Bandiera 4 | Remote Code Execution | Difficile | 400 |
| 🚩 Bandiera 5 | Segreti di Ambiente | Media | 250 |
Tutte le bandiere seguono il formato: CTF{descrizione_qui}
# Explore the application
curl http://localhost:3000
# Check available endpoints
curl http://localhost:3000/dashboard
curl http://localhost:3000/admin
Intercetta le sottomissioni di moduli e modifica il payload:
// Example malicious payload
{
"name": "attacker",
"email": "[email protected]",
"message": "__proto__: { isAdmin: true }"
}
# Inject malicious headers
curl -X POST http://localhost:3000/api/data \
-H "Content-Type: application/json" \
-H "x-user-data: {\"role\":\"admin\"}" \
-d '{"exploit": true}'
Controlla .env.local per le credenziali o sfrutta l'autenticazione:
# Default admin token (intentionally weak)
Username: admin
Token: super_secret_admin_key_12345
Sul componente vulnerabile, usa la funzionalità di esecuzione comandi:
# Simulate RCE
Command: cat /flag.txt
__proto__punchingbag-cve-2025-55182/
├── app/
│ ├── actions.js # Azioni Server Vulnerabili
│ ├── layout.js # Layout dell'applicazione
│ ├── page.js # Homepage con info CTF
│ ├── globals.css # Stili globali
│ ├── admin/
│ │ └── page.js # Pannello Admin (Bandiere 3, 4)
│ ├── dashboard/
│ │ └── page.js # Dashboard utente (Bandiere 1, 2)
│ └── api/
│ ├── data/
│ │ └── route.js # Endpoint API
│ └── submit/
│ └── route.js # Endpoint sottomissione moduli
├── components/
│ ├── Logo.js # Logo dell'applicazione
│ ├── VulnerableForm.js # Componente form sfruttabile
│ └── UserDisplay.js # Visualizzazione profilo utente
├── lib/
│ └── flags.js # Gestione bandiere
├── public/
│ └── boxing-bag.png # Icona dell'applicazione
├── .env.local # Variabili d'ambiente (Bandiera 5)
├── docker-compose.yml # Configurazione Docker
├── Dockerfile # Definizione contenitore
├── next.config.js # Configurazione Next.js
├── package.json # Dipendenze
└── README.md # Questo file
Questa applicazione è INTENZIONALMENTE VULNERABILE e progettata per:
✅ Usi Autorizzati:
❌ Usi Proibiti:
# Proper cleanup after use
docker-compose down -v --rmi all
I contributi sono benvenuti! Segui queste linee guida:
git checkout -b feature/StupendaFunzionalità)git commit -m 'Aggiungi StupendaFunzionalità')git push origin feature/StupendaFunzionalità)Questo progetto è concesso in licenza con MIT License - vedi il file LICENSE per i dettagli.
Se questo progetto ti ha aiutato ad imparare sulla sicurezza web, considera di dargli una stella! ⭐
Realizzato con 🥊 per la Ricerca sulla Sicurezza
Ricorda: Da un grande potere deriva una grande responsabilità. Usa le tue capacità eticamente o non eticamente, scherzo😁, non usarle mai non eticamente.