AWD平台搭建——Cardinal
目录
先来个效果图展示,吸引吸引你们眼球 哈哈哈
正文开始
一. 介绍
Cardinal 是由 Vidar-Team 开发的 AWD 比赛平台,使用 Go 编写。本程序可以作为 CTF 线下比赛平台,亦可用于团队内部 AWD 模拟练习。
Cardinal 这个名字来源于作品《刀剑神域》中的
Cardinal System
游戏系统,小说中描述为可在无需任何人工外界输入就可以独立完成对玩家的监控、维护游戏数据平衡、自动产生新的游戏任务、进行自我修复与完善......这也是我们对于 AWD 比赛平台的愿景,我们希望能有一个监测管理选手靶机动态,准确计算得分,自动更新靶机状态,并在发生异常时能及时反馈甚至自我调节修复的平台。因此,我将这个项目命名为 Cardinal。
文档指南
https://cardinal.ink/
二. 环境介绍
- 操作系统:Windows / Linux / macOS
- 内存:512Mb 及以上可用
- 磁盘空间:2Gb 及以上可用
本次我使用的环境是
- kali-linux-2022.3-installer-everything-amd64
- docker
- docker-compose
- mysql 用的是kali自带的mysql,需要自己启动
靶机使用的是
靶机使用https://github.com/glzjin/20190511_awd_docker
使用的Cardina版本
使用的Cardina版本http:// https://github.com/vidar-team/Cardinal/releases
要将Cardina和靶场提前下载到本地
再传到Linux kali上
三. 开始配置AWD
1.可以先创建一个文件夹
mkdir AWD
然后进入文件夹
cd AWD
上传并解压刚刚下载的Cardina
tar -zxvf Cardinal_v0.7.3_linux_amd64.tar.gz
给Cardinal增加权限
chmod +X Cardinal
2.启动mysql,创建数据库
启动mysql
service mysql start 启动mysql
输入密码登入msql
mysql -u root -p 输入密码登入msql
创建2个数据库:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
CREATE DATABASE `cardinal` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
查看是否成功:
show databases;
出现这个,就代表搭建数据库成功了
3.搭建Cardinal平台
运行Cardinal
./Cardinal
┌──(root㉿kali)-[~/AWD]
└─# ./Cardinal
1 - en-US
2 - zh-CN
> type 1, 2... to select
2022/08/23 22:05:37 [ INFO] Please select a preferred language for the installation guide:
2
> 请输入比赛开始时间(格式 2020-02-17 12:00:00)
2022/08/23 22:05:40 [ INFO] Cardinal.toml 配置文件不存在,安装向导将带领您进行配置。
2022-08-23 22:10:00
> 请输入比赛结束时间(格式 2020-02-17 12:00:00)
2022-08-23 24:10:00
> 请输入比赛结束时间(格式 2020-02-17 12:00:00)
2022-08-23 23:10:00
> 请输入每轮长度(单位:分钟,默认值:2)
> 请输入后端服务器端口号(默认值:19999)
> 请输入每次 Checkdown 扣分(默认值:50)
> 请输入每次攻击得分(默认值:50)
> 是否自行另外部署前端?(true / false,默认值:false)
> 发送您的统计数据,帮助我们使 Cardinal 变得更好?(true / false,默认值:true)
> 请输入数据库地址(默认值:localhost:3306)
> 请输入数据库账号:
user
> 请输入数据库密码:
password
> 请输入数据库表名(默认值:cardinal)
2022/08/23 22:07:46 [ INFO] 创建 Cardinal.toml 配置文件成功!
2022/08/23 22:07:46 [TRACE] 加载配置文件成功
> 请输入管理员账号:
root
> 请输入管理员密码:
kali
2022/08/23 22:08:32 [ INFO] 添加管理员账号成功,请妥善保管您的账号密码信息!
2022/08/23 22:08:32 [TRACE] 比赛总轮数:30
2022/08/23 22:08:32 [TRACE] 比赛总时长:60 分钟
2022/08/23 22:10:01 [TRACE] New round: 1
除了圈过的 其他没有特殊情况默认就行
根据提示选择安装即可
是否自行另外部署前端?(true / false,默认值:false)
这一项最好按默认 不然后面可能会出错 除非有特殊需要
注:如果使用的是服务器,必须保证需要使用的端口是在控制台打开的,不然无法访问。(虚拟机kali不用管)
4.登入管理后台
IP:19999端口是选手登入页面
IP:19999/manager 是管理员页面
192.168.2.249:19999/manager (前面是kali的ip,19999是你在前面配置文件写的端口号)
打开网站 输入之前的管理员账号密码
这是数据大屏
但在之前需要先配置一下啊队伍题目信息
添加队伍并保存密码
添加题目,设置可见
更新Flag Shell:
echo {{FLAG}} > /flag
在根目录创建flag文件,并写入东西。根据需要更改比赛名称,flag标识
配置文件
四. 搭建靶场
靶场文件搭建https://github.com/glzjin/20190511_awd_docker
上传文件并编制
创建一个新的文件用于搭建靶场
将下载后的文件传到文件里
然后解压20190511_awd_docker-master.zip
unzip 20190511_awd_docker-master.zip
因为名字太长了 为了后面方便操作我们把文件名字改一下
mv 20190511_awd_docker-master web1_1
查看文件
编译其中的 docker-compose.yml 文件
vim docker-compose.yml
改之前的
改之后的
编制完后 wq 保存退出
启动docker
(如果之前没有安装请先安装 docker,在这里我就不严实了)
docker-compose up -d --build
如果你docker没有问题 正常情况是如上图所示
查看镜像:docker images
查看正在运行的容器:docker ps
如图所示说明没有问题
访问靶机
访问靶机
IP:8801
访问靶机 如下图说明没有问题 环境部署成功。
获取docker容器的SSH root用户密码
docker exec -it 容器id passwd
此密码也是该靶机的root用户密码
温馨提醒:到这里容器算配完了,但这只是一个,后面配置靶机,是一个靶机一个容器
所以你们根据自己需求添加
五. 在cardinal上部署靶机
打开管理页面 按图操作
注意:选择题目和队伍,IP为靶机IP,端口为靶机端口,密码为刚刚设置的靶机密码。
注意的是这里的Flag SSH 就是我们设定的容器root的账户密码,必须要有足够的权限,因为这里需要写入flag进容器。如果权限不够,无法写入Flag
测试ssh连接
生成flag
说明:一个动态的flag,如果不是后台被拿下,选手是不可能提前知道flag的
查看选手登入账号和密码
at Dockerfile
账号是glzjin 密码是123456
测试连接
用Xshell或者其他工具连接靶机
输入账号和密码
如图测试即为测试成功
更改数据库密码、比赛开始和结束的时间
在AWD页面找到conf文件
里面有个Cardinal.toml配置文件 使用vim编辑
就可以在这里面更改数据库密码、比赛开始和结束的时间
六. 连接Asteroid大屏
下载连接https://github.com/wuhan005/Asteroid/releases
解压
StandaloneWindows64\Asteroid_Data\StreamingAssets 进入到这个目录
将IP改成自己kali的就可以了
运行程序即可
就会有炫酷的页面
还有更多玩法,各位就自己去摸索吧