
Kurukshetra - 대화형 문제 해결을 통해 안전한 코딩을 가르치기 위한 프레임워크.
Kurukshetra는 사용자 입력에 따라 각 도전 과제를 안전한 샌드박스 환경에서 효율적이고 동적으로 실행할 수 있는 능력을 제공하면서도, 합리적으로 복잡한 보안 코딩 도전 과제를 호스팅할 수 있는 견고한 기반을 제공하는 최초의 오픈 소스 프레임워크가 되는 것을 목표로 개발된 웹 프레임워크입니다.
Kurukshetra는 두 가지 구성 요소로 이루어져 있습니다. PHP로 작성된 백엔드 프레임워크는 기본 도커 시스템을 관리하고 활용하여 도전 과제 실행을 위한 안전한 샌드박스를 제공하며, 프론트엔드는 사용자 대면 웹 앱으로 관리자가 도전 과제를 호스팅 및 수정하고, 사용자가 각 입력의 결과를 실행하고 확인할 수 있는 모든 필요한 제어 기능을 제공합니다.
Kurukshetra는 Ubuntu/Debian (apt-get 기반 배포판) 및 Mac OS 모두에서 테스트되었습니다. PHP 7.2, MySQL 및 Docker ( 원격 API 활성화 포함)가 설치된 모든 Linux 기반 배포판에서 이상적으로 작동해야 합니다.
설치를 진행하기 전에 필요한 몇 가지 패키지가 있습니다:
sudo apt-get install gitsudo apt-ge install php7.2-curl php7.2-mbstring php7.2-mysql)sudo apt-get install mysql-serverwww-data 사용자에게 쓰기 권한이 있는 /var/config/ 폴더 생성설치는 다운로드한 파일을 웹 루트로 이동하는 것만큼 간단합니다:
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 디렉토리에 www-data 사용자에 대한 쓰기 권한 부여 (uploads/README.md 참조).http://localhost 또는 http://127.0.0.1에 방문하여 설치 과정으로 이동 (자동으로 /installation/으로 리디렉션됩니다).
클라이언트 ID 및 클라이언트 시크릿을 입력하고 리디렉션 URL이 http://your-domain.com/login/index.php 경로로 설정되어 있는지 확인합니다.Kurukshetra는 사용자가 제출한 코드를 실행하기 위해 Docker API를 사용합니다. Docker API를 사용하기 전에 한 번의 구성이 필요하며 다음과 같습니다:
docker pull phusion/baseimage:latestcd installation/optional/docker build -t kurukshetra .또는 installation/optional 디렉토리 내에서 python install.py를 실행하면 Docker가 아직 설치되지 않은 경우 설치하고 Kurukshetra Docker 이미지를 자동으로 구성합니다.
다음은 Kurukshetra를 진행하면서 염두에 두고 있는 몇 가지 아이디어입니다. 아래에 나열되지 않은 아이디어/기능 요청이 있으면 GitHub에 이슈를 제출해 주세요.
JAVA, NodeJs, Ruby on Rails를 포함하되 이에 국한되지 않는 더 많은 언어 지원.
OWASP Top 10 취약점을 모두 다루는 더 많은 도전 과제와 단위 테스트 작성.
도전 과제 해결 점수(어려움에 따라 미리 정의된 점수는 이미 도전 과제에 제공됨)를 기반으로 한 점수판을 도입하여 전체 프레임워크의 게임화.
이 프로젝트를 만든 훌륭한 사람들:
Anirudh Anand (@a0xnirudh)
Mohan KK (@MohanKallepalli)
Arjun T U (@arjunkikz)
Durga Subramanian (@0xdug)
Ankur Bhargava (@_AnkurB)
Prajal Kulkarni (@prajalkulkarni)