Kurukshetra 是一个 Web 框架,旨在成为第一个开源框架,为托管相当复杂的安全编码挑战提供坚实基础,同时仍能在安全的沙盒环境中根据用户输入高效且动态地执行每个挑战。
Kurukshetra 由两个组件组成:用 PHP 编写的后端框架,负责管理和利用底层 Docker 系统为挑战执行提供安全的沙盒;以及前端,这是一个面向用户的 Web 应用程序,提供所有必要的控制功能,供管理员托管和修改挑战,供用户执行并查看每个输入的結果。
Kurukshetra 已在 Ubuntu/Debian(基于 apt-get 的发行版)以及 Mac OS 上测试通过。理论上,它可以适用于任何安装了 PHP 7.2、MySQL 和 Docker(并启用 远程 API)的 Linux 发行版。
在开始安装之前,需要安装一些必要的软件包:
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/ 并赋予 www-data 用户写入权限安装只需将下载的文件移动到 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 目录赋予 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 上提交 issue。
支持更多语言,包括但不限于 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)