5月初参加了宁波市“天一永安杯”2024宁波第七届网络安全大赛暨第九届大学生网络技术与信息安全大赛初赛,侥幸进了决赛🥹。因为决赛形式为线下AWD,平时不怎么接触的到,所以搭建一个AWD平台给队友和同事们试试水,在这里记录一下部署过程。
一、平台介绍🖥️
找了很多部署的案例,最后选择了Cardinal,因为他的大屏功能真的很酷。
Cardinal 是由 Vidar-Team 开发的 AWD 比赛平台,使用 Go 编写。本程序可以作为 CTF 线下比赛平台,亦可用于团队内部 AWD 模拟练习。
二、部署环境🛠️
主机:
- 腾讯轻量应用服务器-1C2G6M
操作系统:
- 使用基于操作系统镜像-Debian 11.1 64bit
应用环境:
- docker
- docker-compose
- mysql
Cardina版本:
使用靶机:
三、管理平台搭建🔧
1.用ssh以root用户进入主机,两个apt-get基础操作,等一会。
sudo apt-get update
sudo apt-get upgrade
2.安装docker
sudo apt-get install docker
sudo apt-get install docker-compose
3.安装mysql,在某些新版本的Debian或Ubuntu中,mysql-server
可能已经被替代为其他包名称,如default-mysql-server
。腾讯云的Debian镜像就要使用default-mysql-server
,不然会报错。
sudo apt install default-mysql-server
4.去Cardinal-Releases下载linux_amd64的压缩包后,上传到/root目录,解压缩。
tar -zxvf Cardinal_v0.7.3_linux_amd64.tar.gz
注:mac系统下载的压缩包自带解压,若上传文档为Cardinal_v0.7.3_linux_amd64.tar,文件的后缀是 .tar
而不是 .tar.gz
,则不需要使用 -z
选项,使用以下命令
tar -xvf /root/Cardinal_v0.7.3_linux_amd64.tar
5.给Cardinal权限
chmod +x ./Cardinal
6.创建mysql数据库
service mysql start
mysql -uroot -p
回车免密进入数据库,创建cardinal
的数据库。
CREATE DATABASE `cardinal` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
查看数据库是否创建成功。
show databases;
因为我们刚才是空密码进来的,为了部署成功必须使用密码。
SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘你的密码’);
使用quit命令退出数据库
7.平台搭建
完成上面的步骤后,可以开始搭建平台了。
./Cardinal
按照格式输入,默认的直接回车就行,生成后的配置文件在/root/conf/Cardinal.toml,后期可以编辑相关配置,或者直接删除,重新输入指令。
成功后可以去查看页面了,记得在腾讯云控制台的主机防火墙里放通对应端口,不然打不开。
- 选手页面:http://ip:port/
- 管理页面:http://ip:port/manager/
四、靶机搭建🖥️
1.git clone靶机,这是2019 年 5 月 11 日防灾科技学院 “应急挑战杯” 大学生网络安全邀请赛 AWD 靶机题目。
- 1号靶机为 PWN。
- 2号靶机为 Nginx + Python(Flask) 题。
- 3号靶机为 Apache + PHP(ThinkPHP5) 题。
- 4号靶机为 Nginx + PHP 题。
git clone https://github.com/glzjin/20190511_awd_docker.git
然后给它重命名
mv 20190511_awd_docker web1_1
重命名后,cd web1_1/
找到docker-compose.yml
文件编辑,此处我只开启b3和b4两组,把其他的注释,修改容器的端口,同时记得在腾讯云控制台放通对应端口。
2.运行docker
docker-compose up -d –build
发现报错,phusion/baseimage
镜像可能不提供一个名为 latest
的标签,所以要指定具体的版本号。去/baseimage-docker看到最新的Releases是noble-1.0.0
于是去到cd web1_1/b3
找到Dockerfile
,修改第一行,指定版本号。
FROM phusion/baseimage:noble-1.0.0
重新运行docker
docker-compose up -d –build
成功后,查看容器是否运行
docker ps
同时修改容器的ssh中root账户的密码,后续批量修改flag要用到
docker exec -it 容器ID passwd
注:容器里低权限账户的用户名和密码需要在build之前,对web1_1/b3
、web1_1/b4
中的Dockerfile
里内容修改,还可以删掉那个flag.txt
输出😀,不知道glzjin找到girl friend没有,哈哈。
部署多个队伍容器,就是套娃操作
mv web1_1 web1_2
然后修改docker-compose.yml
对应的端口号后docker-compose up -d --build
,端口不能重复,会报错,再次提醒去云主机的防火墙放通端口。
五、管理平台设置🪜
1.登陆平台管理界面,先去配置管理里面,修改比赛名称和flag前缀,仪式感最重要!里面的队伍靶机互相可见
可以选择性打开或者关闭,服务器足够承载的情况下,可以关闭,让大家扫着打。
2.队伍管理添加队伍,保存好相应的账号和密码,不然只能重置密码或者去cardinal
数据库看了。
注:删除队伍之前,一定要查看是否有关联靶机,不然靶机管理页面可能会打不开,只能去cardinal
数据库修改了。
3.去题目管理添加题目,开了两个容器,就两道题,后期可以分时开启题目推送。
4.在靶机管理里,添加对应靶机,题目描述需要告诉大家低权限账号
和对应密码
,再填写完root
对应的密码保存后,利用测试SSH连接测试是否通过。
5.在Flag管理页面生成Flag后,再到靶机管理更新所有Flag,比赛开始后生效。
6.公告管理可以上传比赛规则和提示通知,选手界面可以看到。
7.大屏管理需要下载Asteroid,用给到的URL修改\Asteroid_Data\StreamingAssets\asteroid.ini
里的内容,mac的App在/Asteroid.app/Contents/Resources/Data/StreamingAssets/asteroid.ini
路径下更改。
8.关于check,文档里有说明,需要建立一个check账号,这里不作介绍。
9.登陆选手页面,题目需要在管理端的题目管理里设置可见才可以展示,根据比赛进行的时间顺序修改。
至此,平台搭建设置和靶机搭建都完成了🎆
感谢上面开源项目的作者,伟大!
评论