
Kurukshetra - Ein Framework zum Lehren von sicherem Programmieren durch interaktive Problemlösung.
Kurukshetra ist ein Webframework, das mit dem Ziel entwickelt wurde, das erste Open-Source-Framework zu sein, das eine solide Grundlage bietet, um relativ komplexe Secure-Coding-Herausforderungen zu hosten, während es gleichzeitig die Möglichkeit bietet, jede Herausforderung basierend auf Benutzereingaben effizient und dynamisch in einer sicheren Sandbox-Umgebung auszuführen.
Kurukshetra besteht aus zwei Komponenten: dem Backend-Framework, das in PHP geschrieben ist und das zugrunde liegende Docker-System verwaltet und nutzt, um die sichere Sandbox für die Ausführung der Herausforderungen bereitzustellen, und dem Frontend, einer benutzerorientierten Web-App, die alle notwendigen Steuerungen bereitstellt – für den Administrator, um Herausforderungen zu hosten und zu ändern, und für den Benutzer, um jede seiner Eingaben auszuführen und das Ergebnis anzuzeigen.
Kurukshetra wurde sowohl unter Ubuntu/Debian (apt-get-basierte Distributionen) als auch unter Mac OS getestet. Es sollte idealerweise mit jeder Linux-basierten Distribution funktionieren, auf der PHP 7.2, MySQL und Docker (mit aktivierter Remote-API) installiert sind.
Es gibt einige Pakete, die vor der Installation erforderlich sind:
sudo apt-get install gitsudo apt-ge install php7.2-curl php7.2-mbstring php7.2-mysql)sudo apt-get install mysql-server/var/config/ mit Schreibberechtigung für den Benutzer www-dataDie Installation ist so einfach wie das Verschieben der heruntergeladenen Dateien in das 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 Schreibberechtigungen für den Benutzer www-data (siehe uploads/README.md).http://localhost oder http://127.0.0.1, um zur Installation zu gelangen (wird automatisch zu /installation/ weitergeleitet).
Client-ID und das Client-Secret ein und stellen Sie sicher, dass die Weiterleitungs-URL auf den Pfad http://your-domain.com/login/index.php gesetzt ist.Kurukshetra verwendet die Docker-APIs, um den vom Benutzer eingereichten Code auszuführen. Eine einmalige Konfiguration ist erforderlich, bevor wir die Docker-APIs nutzen können, und zwar wie folgt:
docker pull phusion/baseimage:latestcd installation/optional/docker build -t kurukshetra .Alternativ können Sie einfach python install.py aus dem Verzeichnis installation/optional ausführen, das Docker installiert (falls noch nicht installiert) und das Kurukshetra-Docker-Image automatisch konfiguriert.
Im Folgenden finden Sie einige Ideen, die wir für die weitere Entwicklung von Kurukshetra haben. Falls Sie Ideen oder Feature-Anfragen haben, die nicht unten aufgeführt sind, können Sie gerne ein Issue auf GitHub erstellen.
Tolle Leute, die dieses Projekt gebaut haben:
Anirudh Anand (@a0xnirudh)
Mohan KK (@MohanKallepalli)
Arjun T U (@arjunkikz)
Durga Subramanian (@0xdug)
Ankur Bhargava (@_AnkurB)
Prajal Kulkarni (@prajalkulkarni)