基于Cardinal的AWD攻防平台搭建与使用以及基于docker的题目环境部署

关于 CTF 靶场的搭建与完善勇师傅前面已经总结过了,参考:

CTF靶场搭建及Web赛题制作与终端docker环境部署_ctfoj搭建-CSDN博客 

基于H1ve一分钟搭好CTF靶场-CSDN博客

Nginx首页修改及使用Nginx实现端口转发_nginx 修改欢迎首页-CSDN博客 

关于H1ve导航栏的汉化(不用替换主题,通过修改源码实现)_h1ve 更换页面-CSDN博客

这次给大家出一个 AWD 平台的搭建与题目环境的部署,期待大家的支持与关注!

 

 文章开始前给大家分享一个学习人工智能的网站,通俗易懂,风趣幽默

人工智能教程 icon-default.png?t=N7T8https://www.captainbed.cn/myon/

目录

一、搭建 awd 平台

二、平台的基本使用

1、队伍管理

2、题目管理

3、 靶机管理

(1)普通用户权限的 ssh 账户

(2)root 权限的 ssh 账户

4、配置管理

5、Flag 管理

6、大屏管理

7、flag 提交

三、docker 题目环境部署

1、web 题目

2、pwn 题目

3、docker-compose.yml

四、其他补充

1、Flag SSH 用户

(1)直接对容器进行操作

(2)进入容器后修改

2、将 Cardinal 放入后台运行

3、新比赛的创建与配置


一、搭建 awd 平台

参照官方给的手册:安装 | Cardinal

下载地址:Releases · 05sec/Cardinal (github.com)

下载适合自己的版本然后解压,这里以 Linux 64 位为例:

tar -zxvf Cardinal_v0.7.3_linux_amd64.tar.gz

可以看到 Cardinal 具有可执行权限,运行 Cardinal:

./Cardinal

按照自己需求配置一下,默认选项直接回车,输错了也没关系这个配置文件后面可以改

配置文件在 conf 下的 Cardinal.toml

后面每次比赛开始前我们都需要手动进行修改后再运行 Cardinal

关于前面配置报错:

[FATAL] [...am/Cardinal/internal/db/mysql.go:24 InitMySQL()] Failed to connect to mysql database: Error 1045: Access denied for user 'test'@'localhost' (using password: YES)

因为我们的 mysql 数据库下还没有 test 这个用户,我们需要手动创建并赋予权限 ,test 这个用户相当于是我们平台的一个后台管理账户,因此这里直接给 root 权限。

在你装好 mysql 数据库的前提下执行如下命令

进入 mysql :

mysql -u root -p

为 MySQL 数据库创建用户 test,密码为 test,并赋予 root 权限:

CREATE USER 'test'@'localhost' IDENTIFIED BY 'test';
GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

创建我们比赛需要使用的数据库,上面我配置的名字叫 testdb:

create database testdb;

再次运行 Cardinal,即可加载成功:

./Cardinal

输入我们前面设置的管理员账号和密码,都是 test 

访问平台的 19999 端口,即可看到靶场搭建成功

访问后台管理平台:19999/manager

使用管理员账号密码进行登录:test test

至此我们完成了平台的基本搭建与初始化。

 

二、平台的基本使用

第一个界面是数据大屏,我们放在最后说,一般我们是需要先在队伍管理里面创建队伍。

1、队伍管理

这里以创建两个队伍为例做演示:

添加后你会得到两个队伍的登录账号和密码:

请保存队伍密码账号:test1 密码:2z7jRpKzb8Yz3YO1账号:test2 密码:yjm7GNtrqECP7ZnB

队伍创建成功:

如果你忘了保存,可以在编辑里面重置密码:

我们使用其中一个账号进行登录测试:test 2z7jRpKzb8Yz3YO1

这里是选手进行登录,还是访问 19999 端口

登录成功 

 

2、题目管理

添加新题目

比赛的时候需要设为可见,每个队伍才能看到相应的题目信息

 

3、 靶机管理

添加靶机,关于题目 IP 和端口,以及 SSH 连接的端口、密码,我会在后面的制作 docker 题目环境中介绍,因为题目环境也需要我们自己进行搭建和配置。

添加后测试 SSH 连接:SSH 连接成功!

看到这里你可能还不明白这个 ssh 连接是拿来干啥的,准确来说,每个题目环境,我们需要手动配置两个 ssh 连接的用户:

(1)普通用户权限的 ssh 账户

选手拿到题目地址和连接地址后,需要通过 ssh 连接上我们的靶机,去对 /var/www/html 下的文件进行分析和修复,该账户只能更改 html 目录下的文件,其他目录下的文件是没有写入权限的。

(2)root 权限的 ssh 账户

我们需要有一个 root 权限的用户去对根目录下的 flag 进行写入,每一轮结束后我们需要自动写入一次新的 flag,这就是我们上面填的 Flag SSH 用户。

访问题目地址,我这里设置的 2001 端口,这个是我之前已经搭好的一个题目环境:

4、配置管理

这里可以手动设置比赛名以及 flag 的包裹格式

5、Flag 管理

首先我们需要生成每一轮的 flag

回到靶机管理更新所有的 flag

我们可以连上靶机终端看一看 flag,已经更新成我们要求格式的了

6、大屏管理

参考官方使用手册自行下载与配置:简介 | Cardinal

7、flag 提交

接下来我们测试一下 flag 提交:

这道题有一个自带木马

SNERT{69a21c21949e2f06a7d94157ed96fe01d4d25e05}

这是从 team2 的靶机上拿到的 flag,因此我们使用 team1 的账号进行提交:

三、docker 题目环境部署

这里以 team2 的题目为例,有四个题:web1、web2、pwn1、pwn2

这四个题是属于一个队伍的,也就是说其他的每个队伍都有这四个题,都需要重新拉取独立的容器,而每个题目至少需要使用到两个端口,一个是题目所在的地址,另一个是选手进行 ssh 连接的地址,包括 ssh 连接的账号和密码也需要我们提前手动配置好后再拉取 docker 容器。

1、web 题目

给大家看看 web1 题目下有哪些东西:

包括两个东西,一个是 Dockerfile,另一个就是我们的题目文件,也就是 html 下的文件。 

 Dockerfile 需要针对自己的题目对一些文件名进行修改

 下面主要是对选手 ssh 连接的用户名、密码、文件目录权限、暴露端口的一些配置

附上 web1 题目的 Dokcerfile ,仅供参考:

FROM ubuntu:14.04COPY html/ /var/www/html/RUN sed -i 's/http:\/\/archive.ubuntu.com\/ubuntu\//http:\/\/mirrors.tuna.tsinghua.edu.cn\/ubuntu\//g' /etc/apt/sources.list && \sed -i '/security/d' /etc/apt/sources.list && \apt-get update -y && \apt-get -yqq install supervisor mariadb-server apache2 php5 libapache2-mod-php5 \php5-mysql php5-mcrypt ssh && \# configsed -i "154s/Indexes//" /etc/apache2/apache2.conf && \sed -i "165s/Indexes//" /etc/apache2/apache2.conf && \/etc/init.d/apache2 start && \# mysqlrm -rf /var/lib/mysql && \mysql_install_db --user=mysql --datadir=/var/lib/mysql && \sh -c 'mysqld_safe &' && \sleep 5s  && \mysqladmin -uroot password '334cc35b3c704593' && \mysql -e "source /var/www/html/geez.sql;" -uroot -p334cc35b3c704593# supervisor
RUN mkdir -p /var/log/supervisor && \mv /var/www/html/supervisord.conf /etc/ && \#chown -R www-data:www-data /var/www/html/ && \chmod -R 755 /var/www/html/ && \rm /var/www/html/geez.sql /var/www/html/index.html && \cat /dev/null > /var/www/html/log.phpRUN sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN useradd -g www-data team2 -m && \password=$(openssl passwd -1 -salt 'abcdefg' 'V7d4pW9x2T') && \sed -i 's/^team2:!/team2:'$password'/g' /etc/shadowRUN chmod -R 777 /var/www/htmlRUN mkdir /var/run/sshdRUN echo 'flag{team2_wants_a_girl_friend}' > /flagEXPOSE 80
EXPOSE 22ENTRYPOINT ["supervisord", "-n"]

 

2、pwn 题目

 接下来我们看一下 pwn 题下面是个什么情况:

flag 其实不影响,因为最终都会被我们更新 flag 所替换,主要是另外两个文件,一是 Dockerfile,二是我们 pwn 题的附件。

pwn 题附件就是我们正常 CTF 题目的附件

附上 pwn 题参考 Dockerfile: 

# 使用基础镜像
FROM ubuntu:22.04@sha256:b492494d8e0113c4ad3fe4528a4b5ff89faa5331f7d52c5c138196f69ce176a6# 更新软件包列表并安装所需软件包
RUN apt-get update && \apt-get install -y openssh-server socat && \apt-get clean && \rm -rf /var/lib/apt/lists/*# 创建 SSH 服务运行目录
RUN mkdir /var/run/sshd# 添加用户 team2
RUN useradd -m -s /bin/bash team2# 设置用户 team2 的密码
RUN echo 'team2:testtest123' | chpasswd# 配置 SSH 服务以允许 root 登录和密码认证
RUN echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config && \echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config && \echo 'ChallengeResponseAuthentication no' >> /etc/ssh/sshd_config && \echo 'UsePAM yes' >> /etc/ssh/sshd_config# 设置工作目录并复制文件
WORKDIR /app
COPY pwn2 flag /app/# 设置文件权限
RUN chmod +x /app/pwn2 && \chmod a-w /app/pwn2 && \chmod a-w /app/flag && \chown -R root:root /app# 设置 app 目录及其内容的所有者为 team2 用户,并赋予 team2 用户对该目录及其内容的写入权限
RUN chown -R team2:team2 /app && \chmod -R u+w /app# 暴露 SSH 端口 22 和 socat 服务端口 9999
EXPOSE 22 9999# 启动 SSH 服务和 socat 服务
CMD ["/bin/bash", "-c", "service ssh start && socat TCP-LISTEN:9999,reuseaddr,fork EXEC:/app/pwn2"]

3、docker-compose.yml

附上 docker-compose.yml,仅供参考:

需要结合自己题目的实际情况进行修改,主要就是对端口做映射

version: "3"
services:pwn1:build: ./pwn1ports:- "2003:9999"- "2004:22"restart: alwaysweb1:build: ./web1ports:- "2001:80"- "2002:22"restart: always  # 确保缩进正确pwn2:build: ./pwn2ports:- "2007:9999"- "2008:22"restart: alwaysweb2:build: ./web2ports:- "2005:80"- "2006:22"restart: always  # 确保缩进正确

当我执行:

docker-compose up -d --build

就可以一并拉取出四道题目的环境,两道 web 和两道 pwn 

根据这些端口号和账户密码去对应填写靶机信息即可

 

四、其他补充

1、Flag SSH 用户

关于我们用于更新 flag 的 root 用户(Flag SSH 用户),这个可以等容器创建好后,对 root 用户的密码进行修改。

两种方法:

(1)直接对容器进行操作

docker exec -it mycontainer passwd root

(2)进入容器后修改

docker exec -it d3d01433b376 /bin/sh
password

当我们修改不同密码后,SSH 连接就失败了

改回 123456 即我们添加靶机时填写的密码,再次测试:连接成功!

2、将 Cardinal 放入后台运行

正常 ./ 执行我们需要一直在这个终端挂着,否则 Cardinal 就会断掉,靶场页面也就无法访问。

使用命令实现一直运行:

nohup ./Cardinal &

查看 19999 端口的进程:

lsof|grep 19999

这样,即使我们关闭终端,Cardinal 也会一直处于运行状态。

3、新比赛的创建与配置

当比赛时间结束或者说我们想要创建一个新的比赛,需要先修改 conf 里面的配置文件

主要是这三个:开始时间、结束时间、数据库名

需要在 mysql 数据库里新建一个用于新的比赛的数据库,之后运行 Cardinal 即可。

关于平台的其他功能各位可以自行研究, awd 靶场搭建以及基本使用与 docker 题目环境部署的介绍至此结束。

人工智能教程icon-default.png?t=N7T8https://www.captainbed.cn/myon/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/35197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cPanel的SSL证书续订方法

在现代互联网环境中,SSL证书对于保障网站的安全和数据加密至关重要。下面我们将介绍如何在cPanel中续订SSL证书,并适时结合Hostease服务器的优势,帮助您更好地理解和操作。 生成私钥和CSR(证书签名请求) 难易程度&am…

Unity中模拟抛物线(非Unity物理)

Unity中模拟抛物线非Unity物理 介绍剖析问题以及所需公式重力加速度公式:h 1/2*g*t*t(h 1/2 * g * t ^ 2)速度公式:Vt V初 a * t 主要代码总结 介绍 用Unity物理系统去做的抛物线想要控制速度或者想要细微的控制一些情况是非常困难的。所以想要脱离U…

国产CPU兆芯发展分析

国产信创CPU-兆芯CPU CPU:信创根基,国之重器 国产CPU已形成自主架构、x86、ARM三大阵营。自主架构以龙芯、申威的LoongArch、SW-64为代表;ARM阵营由鲲鹏、飞腾领军,依托ARM授权开发处理器;x86阵营则以海光、兆芯等品牌…

基于halcon的眼在手外(Eye-to-Hand)标定

前言 上个月写了一个《基于halcon的眼在手上(Eye-in-Hand)标定》的文章,通过官方的示例代码进行了简单的叙述,想学习的小伙伴可以点击链接进行学习。之前博主认为眼在手上(Eye-in-Hand)的案例更多&#xff…

leetcode209:长度最小的子数组

题目链接&#xff1a;209. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int n nums.size();if(n 0) return 0;int end 0, start 0, sum 0, ans 0x3f3f3f3f;while…

OpenAI将终止对中国提供服务,国内模型接棒

说起来&#xff0c;OpenAI自始至终就没有对中国提供过服务&#xff0c;OpenAI官方支持的国家和地区&#xff1a;https://platform.openai.com/docs/supported-countries 列表里面没有“Chinese”的选项&#xff0c;那为什么又要明令禁止呢&#xff0c;国类IT高手们&#xff0…

day001 环境的配置与工具的安装

VMware的软件包&#xff1a;https://pan.xunlei.com/s/VNs1KShnlZalTSJtejXXzchlA1?pwdudy5# 其他的软件可以在电脑管家中下载&#xff0c;注意不要安装到c盘&#xff0c;否则影响开机速度。 虚拟机工具&#xff1a;VMware17.5.1 1&#xff0c; 2&#xff0c; 3&#xff0c…

欢乐钓鱼大师攻略:卡鱼骨、典藏鱼、藏宝图怎么钓?

《欢乐钓鱼大师》是一款以钓鱼为核心玩法的休闲模拟手游&#xff0c;通过逼真的画面和丰富的钓鱼体验吸引了大量玩家。本文将为你详细介绍这款游戏的亮点、常见问题以及一些实用的游戏技巧&#xff0c;帮助你在《欢乐钓鱼大师》中获得更愉快的游戏体验。 辅助工具 1. 辅助工具…

内网安全【5】隧道搭建

1.内网穿透工具 Ngrok Frp Spp Nps EW(停更) 一共是这五个 优点&#xff1a;穿透加密数据&#xff0c;中间平台&#xff0c;防追踪&#xff0c;解决网络问题 Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器 https://github.com/esrrhs/spp https://github.com/fatedie…

计算机网络之数据通信原理(中)

上节内容传送口&#xff1a;数据通信原理基础 1.数据传输方式 1.1并行传输 并行传输: 字符编码的各个比特同时传输 特点&#xff1a; 一个比特时间内可传输一个字符&#xff0c;传输速度快&#xff0c;每个比特传输要求一个单独的信道支持&#xff0c;通信成本高&#xf…

探索网络爬虫技术:原理、实践与挑战

一、引言 在数字化时代&#xff0c;信息如同潮水般汹涌而来。过去&#xff0c;我们可能依赖书籍、报纸或电视来获取信息&#xff0c;但这些渠道的信息量有限&#xff0c;而且筛选过的信息未必能满足我们的需求。如今&#xff0c;互联网为我们提供了海量的信息&#xff0c;但同…

【Sklearn驯化-聚类指标】搞懂机器学习中聚类算法评估指标,轮廓系数、戴维森堡丁指数

【Sklearn驯化-聚类指标】搞懂机器学习中聚类算法评估指标&#xff0c;轮廓系数、戴维森堡丁指数 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#…

快来看,错过了今天就要设置为vip文章了---云原生重塑架构:AutoMQ 基于云构建十倍降本的 Kafka

Apache Kafka在数据流处理系统中的核心地位 Apache Kafka已成为大数据和流计算领域的行业事实标准&#xff0c;其重要性在数据流处理系统中不言而喻。随着数字化转型的加速&#xff0c;越来越多的企业选择基于Kafka来构建其在线业务消息传递系统&#xff0c;使其成为数字化转型…

一文梳理有效提升RAG效果的方法

来源&#xff1a;一文梳理有效提升RAG效果的方法 在大模型实际落地的时候&#xff0c;存在一些问题&#xff0c;主要集中在以下方面&#xff1a; 缺少垂直领域知识&#xff1a;虽然大模型压缩了大量的人类知识&#xff0c;但在垂直场景上明显存在短板&#xff0c;需要专业化的…

如何通过小猪APP分发轻松实现应用内测分发

搞应用开发的朋友们&#xff0c;都知道内测分发这个环节有多重要。没有内测&#xff0c;一款应用基本上是不可能上线的。毕竟&#xff0c;谁也不想自己的产品在上线的那一刻就被用户吐槽得体无完肤。内测分发的好坏&#xff0c;直接影响到应用的质量和用户的第一印象。如何才能…

Web自动化元素定位之xpath定位【超详细】

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Web自动化常见的定位方式 为什么要学习定位 1.让程序操作指定元素&#xff0c;就必须先找到此元…

Linux文件IO深入剖析

目录 一、文件IO引发的项目血案 1、分析 一、Linux文件系统基本概念 1、文件系统接口 2、文件系统缓存 二、文件IO 访问方式概述 1、标准文件访问方式 2、直接IO 3、实现方式 4、缓存同步 5、Linux 文件IO流程图 6、血案解决 一、文件IO引发的项目血案 事件经过&am…

MTK平台Android13实现三方launcher为默认

一、前言 目前有遇到客户的定制需求,希望使用三方的launcher作为默认的launcher使用,一般情况下直接将三方launcher通过内置到系统并通过overlay机制即可很方便的实现launcher的替换,但是存在一个问题,需要增加ROM的维护成本。本文通过设备在使用前联网通过后台下发三方lau…

Potato(土豆)一款轻量级的开源文本标注工具

项目介绍&#xff1a; Potato 是一款轻量级、可移植的Web文本标注工具&#xff0c;被EMNLP 2022 DEMO赛道接受。它旨在帮助用户快速地从零开始创建和部署各种文本标注任务&#xff0c;无需复杂的编程或网页设计。只需简单配置&#xff0c;团队即可在几分钟内启动并运行标注项目…

【论文速读】| LLAMAFUZZ:大语言模型增强的灰盒模糊测试

本次分享论文&#xff1a;LLAMAFUZZ: Large Language Model Enhanced Greybox Fuzzing 基本信息 原文作者&#xff1a;Hongxiang Zhang, Yuyang Rong, Yifeng He, Hao Chen 作者单位&#xff1a;University of California, Davis 关键词&#xff1a;模糊测试&#xff0c;大…