如何利用Kurukshetra以交互式的方式学习如何进行安全编码
创始人
2025-07-01 15:41:11
0

关于Kurukshetra

Kurukshetra是一款功能强大的开源框架,该框架的主要目标就是通过交互式的问题解决方式来告诉广大研究人员或开发人员如何能够更好地实现安全编码。Kurukshetra本质上是一个Web框架,并未托管合理复杂的安全编码挑战提供坚实的基础,同时仍然能够根据用户输入高效动态地在安全的沙盒环境中执行每个挑战。

Kurukshetra由两个组件组成,一个是用PHP编写的后端框架,它的任务是管理并利用底层Docker系统为挑战执行提供安全的沙盒环境;另一个组件则是前端部分,它是一个面向用户的Web应用程序,主要负责提供所有必要的控制机制,供管理员托管和修改挑战,用户执行和查看每个输入的结果。

支持的平台

Kurukshetra已经在Ubuntu/Debian(基于apt-get的发行版)和Mac操作系统上进行了测试。理想情况下,它可以在任何安装了PHP 7.2、MySQL和Docker(以及启用了远程API)的Linux的发行版操作系统上正常运行。

工具要求

该工具的正常运行需要使用到下列依赖组件以及配置参数:

1、Git客户端:sudo apt-get install git;

2、PHPv7.2:sudo apt-ge install php7.2-curl php7.2-mbstring php7.2-mysql;

3、MySQL:sudo apt-get install mysql-server;

4、Docker;

5、启用DockerAPI;

6、在/var/config/路径下创建一个文件夹,权限设置为www;

工具安装

该工具的安装非常简单,广大研究人员只需要将该项目源码克隆至本地:

git clone https://github.com/a0xnirudh/kurukshetra.git

然后切换到项目目录中,创建目录并提供对应权限即可:

cd kurukshetra

cp -r * /var/www/html/

chmod 755 -R /var/www/html

Docker容器配置

Kurukshetra使用Dockers API来运行用户提交的代码。在我们使用docker API之前,需要一次性配置,操作如下所示:

1、获取Docker镜像:docker pull phusion/baseimage:latest;

2、切换到安装目录:cd installation/optional/;

3、使用Dockerfile构建Kurukshetra镜像:docker build -t kurukshetra .;

除此之外,你也可以直接运行下列命令自动化完成工具Docker镜像的安装与配置:

cd installation/optional/

python install.py

工具使用

完成工具安装与配置后,我们就可以访问http://localhost或http://127.0.0.1来进入安装页面了:

输入MySQL数据库凭证,并点击验证,然后输入Google OAuth的Client ID和Client密钥,并确保重定向URL设置为了http://your-domain.com/login/index.php。

此时,我们就可以开始使用Kurukshetra了。

工具运行截图

挑战列表页面:

挑战解决页面:

管理员面板(统计数据):

管理员挑战修改/添加页面:

容器管理:

工具演示视频

管理员功能演示:【点我观看】

许可证协议

本项目的开发与发布遵循GPL-3.0开源许可证协议。

项目地址

Kurukshetra:【GitHub传送门】

参考资料

https://docs.kurukshetra.io/

https://docs.docker.com/engine/api/v1.24/

https://askubuntu.com/a/856794

https://docs.docker.com/install/

https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04

https://success.docker.com/article/how-do-i-enable-the-remote-api-for-dockerd

https://www.youtube.com/watch?v=yrfmyz3p9a4

本文作者:Alpha_h4ck, 转载请注明来自FreeBuf.COM

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...