Kurukshetra は、初のオープンソースフレームワークとなることを目的として開発されたWebフレームワークであり、かなり複雑なセキュアコーディングチャレンジをホストするための強固な基盤を提供すると同時に、セキュアなサンドボックス環境でユーザー入力に基づいて各チャレンジを効率的かつ動的に実行する機能を提供します。
Kurukshetra は、2つのコンポーネントで構成されています。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-serverwww-dataユーザーに書き込み権限があるフォルダ /var/config/ を作成してくださいダウンロードしたファイルを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/ にリダイレクトされます)。
Client ID と Client secret を入力し、リダイレクト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)