
Kurukshetra - Un framework per insegnare la codifica sicura attraverso la risoluzione interattiva di problemi.
Kurukshetra è un framework web sviluppato con l'obiettivo di essere il primo framework open source che fornisce una solida base per ospitare sfide di codifica sicura ragionevolmente complesse, pur mantenendo la capacità di eseguire in modo efficiente e dinamico ciascuna sfida in base all'input dell'utente in un ambiente sandbox sicuro.
Kurukshetra è composto da due componenti: il backend scritto in PHP, che gestisce e sfrutta il sistema Docker sottostante per fornire la sandbox sicura per l'esecuzione delle sfide, e il frontend, che è un'app web rivolta all'utente che fornisce tutti i controlli necessari, per l'amministratore per ospitare e modificare le sfide, e per l'utente per eseguire e visualizzare il risultato di ciascun input.
Kurukshetra è stato testato sia su Ubuntu/Debian (distribuzioni basate su apt-get) che su Mac OS. Dovrebbe idealmente funzionare con qualsiasi distribuzione Linux con PHP 7.2, MySQL e Docker (con API remota abilitata) installati.
Ci sono alcuni pacchetti necessari prima di procedere con l'installazione:
sudo apt-get install gitsudo apt-get install php7.2-curl php7.2-mbstring php7.2-mysql)sudo apt-get install mysql-server/var/config/ con permessi di scrittura per l'utente www-dataInstallare è semplice come spostare i file scaricati nella webroot:
git clone https://github.com/a0xnirudh/kurukshetra.git
cd kurukshetra
cp -r * /var/www/html/
chmod 755 -R /var/www/html
/var/www/html): cp -r kurukshetra/* /var/www/htmlchmod 755 -R /var/www/html/challenges/uploads i permessi di scrittura per l'utente www-data (vedi uploads/README.md).http://localhost o http://127.0.0.1 per accedere all'installazione (verrà reindirizzato automaticamente a /installation/).
Client ID e il Client secret di Google OAuth e assicurati che l'URL di reindirizzamento sia impostato sul percorso http://your-domain.com/login/index.phpKurukshetra utilizza le API Docker per eseguire il codice inviato dall'utente. È necessaria una configurazione una tantum prima di poter utilizzare le API Docker come segue:
docker pull phusion/baseimage:latestcd installation/optional/docker build -t kurukshetra .In alternativa, puoi semplicemente eseguire python install.py dalla directory installation/optional che procederà a installare Docker (se non già installato) e configurerà automaticamente l'immagine Docker di Kurukshetra.
Di seguito sono elencate alcune idee che abbiamo in mente per il futuro di Kurukshetra. Se hai idee/richieste di funzionalità non elencate qui sotto, sentiti libero di aprire un issue su github.
Supporto per più linguaggi, tra cui, ma non solo, JAVA, NodeJs e Ruby on Rails.
Scrivere più sfide insieme a test unitari per coprire tutte le vulnerabilità della OWASP Top 10.
Gamification dell'intero framework introducendo una classifica basata sui punti di risoluzione delle sfide (i punti predefiniti sono già disponibili per le sfide in base alla difficoltà).
Persone fantastiche che hanno realizzato questo progetto:
Anirudh Anand (@a0xnirudh)
Mohan KK (@MohanKallepalli)
Arjun T U (@arjunkikz)
Durga Subramanian (@0xdug)
Ankur Bhargava (@_AnkurB)
Prajal Kulkarni (@prajalkulkarni)