
Kurukshetra - Um framework para ensinar codificação segura por meio de resolução interativa de problemas.
Kurukshetra é um framework web desenvolvido com o objetivo de ser o primeiro framework de código aberto que fornece uma base sólida para hospedar desafios de codificação segura razoavelmente complexos, ao mesmo tempo que oferece a capacidade de executar cada desafio de forma eficiente e dinâmica com base na entrada do usuário em um ambiente seguro em sandbox.
Kurukshetra é composto por dois componentes: o backend escrito em PHP, que gerencia e aproveita o sistema Docker subjacente para fornecer a sandbox segura para a execução dos desafios, e o frontend, que é uma aplicação web voltada para o usuário, fornecendo todos os controles necessários para que o administrador hospede e modifique os desafios, e o usuário execute e veja o resultado de cada uma de suas entradas.
Kurukshetra foi testado tanto no Ubuntu/Debian (distribuições baseadas em apt-get) quanto no Mac OS. Idealmente, deve funcionar com qualquer distribuição baseada em Linux que tenha PHP 7.2, MySQL e Docker (com a API remota habilitada) instalados.
Existem alguns pacotes necessários antes de prosseguir com a instalação:
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/ com permissão de escrita para o usuário www-dataInstalar é tão simples quanto mover os arquivos baixados para a raiz da web:
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 para o usuário www-data (veja uploads/README.md).http://localhost ou http://127.0.0.1 para navegar para a instalação (redirecionará automaticamente para /installation/).
Client ID e o Client secret do Google OAuth e certifique-se de que a URL de redirecionamento está definida para o caminho http://your-domain.com/login/index.phpKurukshetra faz uso das APIs do Docker para executar o código enviado pelo usuário. Uma configuração única é necessária antes de podermos usar as APIs do Docker, que é a seguinte:
docker pull phusion/baseimage:latestcd installation/optional/docker build -t kurukshetra .Alternativamente, você pode simplesmente executar python install.py dentro do diretório installation/optional, que instalará o Docker (se ainda não estiver instalado) e configurará a imagem Docker do Kurukshetra automaticamente.
A seguir estão algumas ideias que temos em mente para seguir em frente com o Kurukshetra. Se você tiver alguma ideia/solicitação de recurso que não esteja listada abaixo, sinta-se à vontade para abrir uma issue no GitHub.
Suporte para mais linguagens, incluindo, mas não se limitando a JAVA, NodeJs e Ruby on Rails.
Escrever mais desafios juntamente com testes unitários para cobrir todas as vulnerabilidades do OWASP Top 10.
Gamificação de todo o framework, introduzindo um placar baseado em pontos de resolução de desafios (pontos predefinidos já estão disponíveis para desafios baseados em dificuldades).
Pessoas incríveis que construíram este projeto:
Anirudh Anand (@a0xnirudh)
Mohan KK (@MohanKallepalli)
Arjun T U (@arjunkikz)
Durga Subramanian (@0xdug)
Ankur Bhargava (@_AnkurB)
Prajal Kulkarni (@prajalkulkarni)