Ubuntu搭建CTFd平台实现动态靶机的过程
记录搭建CTFd过程
- 学校的毕业设计是搭建Web渗透攻防教学实训平台搭建,写这篇的目的是让大家少走弯路,一次性搭建完成
- 搭建环境:阿里云eos云主机1g2核
- ubuntu版本:20.04
- 采用的是第一种CTFd+CTFd-whale模式
赵师傅原文链接:
https://www.zhaoj.in/read-6333.html?tdsourcetag=s_pctim_aiomsg
特别感谢煜奕大佬在搭建过程中的指导
安装前记得先更新一下软件源和软件列表(一定要更新!)
sudo apt-get updatesudo apt-get upgrade
不然可能会报错
安装docker
- 使用的是通过版本安装
更新系统包索引
sudo apt-get update
添加HTTPS协议,允许apt从HTTPS安装软件包
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
添加Docker公共密钥 Docker 官方源
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
设置版本库类型,软件版本包括三种: stable、edge、test
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
安装最新版docker-ce
sudo apt-get install docker-ce
设置开机自启动并启动docker
sudo systemctl enable docker
sudo systemctl start docker
安装docker-compose
- 通过GitHub安装
进入https://github.com/docker/compose/releases 查看最新版本。
sudo curl -L https://github.com/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
设置权限
sudo chmod +x /usr/local/bin/docker-compose
查看是否安装成功
docker-compose --version
出现docker-compose version 1.26.2即安装成功
设置docker镜像加速
这个是需要设置的
- 进入阿里云容器镜像服务:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
- 根据底下配置方法进行配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://******.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
安装frps
注意!!!:一定要在/root目录下执行,否则后面的文件编辑位置会出错。
cd
wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_linux_amd64.tar.gz
tar -zxvf frp_0.29.0_linux_amd64.tar.gz
cd frp_0.29.0_linux_amd64
sudo cp systemd/* /etc/systemd/system/
sudo mkdir /etc/frp
sudo cp frpc.ini frps.ini /etc/frp/
sudo cp frpc frps /usr/bin/
sudo chmod a+x /usr/bin/frpc /usr/bin/frps
sudo systemctl enable frps
- 编辑/etc/frp/frps.ini
sudo vim /etc/frp/frps.ini[common]
bind_port = 7897
bind_addr = 0.0.0.0
token = thisistoken #token值一定要与frpc文件的保持一致
- 启动frps系统服务
sudo systemctl start frps
创建FRP网络
- 启动frpc容器
sudo docker network create ctfd_frp-containers
sudo docker run -d -v ~/frp_0.29.0_linux_amd64/frpc.ini:/etc/frp/frpc.ini --network="ctfd_frp-containers" --restart=always "glzjin/frp"
- 创建frpcadmin网络并将frpc容器接入网络
sudo docker network create frpcadmin
docker ps //查看frpcadmin容器ID
sudo docker network connect frpcadmin <frpc容器ID>
- 查看frpcadmin网络的连接情况并记录frpc容器的网络IP
docker network inspect frpcadmin
注意!!!:如果初次执行没有发现地址,多执行几次上面的命令,容器处于up状态时才可以加入。
- 修改/etc/frp/frpc.ini
vim /etc/frp/frpc.ini[common]
server_addr = 172.17.0.1 #docker0的ip
server_port = 7897
token=thisistoken
- 编辑~/frp_0.29.0_linux_amd64/frpc.ini(这个文件会用来配置frpc容器的)
vim ~/frp_0.29.0_linux_amd64/frpc.ini[common]
server_addr = 172.17.0.1 //docker0的ip
server_port = 7897
token = thisistoken //与前面frps.ini的token一致
admin_addr = 172.19.0.2 //frpc容器的网络IP,上面记录的IP
admin_port = 7400
log_file = ./frps.log
注意!!:之前配置的frps与两个frpc文件的token、port值一定要一样。不然容器会一直保持重启状态。
- 重启frpc容器
docker restart <frpc容器的ID>
CTFd和CTFd-whale插件的安装,汉化和修改
- 下载靶场和插件
git clone https://github.com/CTFd/CTFd.git
cd CTFd/
git reset 6c5c63d667a17aec159c8e26ea53dccfbc4d0fa3 --hard //回滚到当前教程适合的版本
cd CTFd/plugins //打开ctfd插件目录
git clone https://github.com/glzjin/CTFd-Whale.git ctfd-whale
cd ctfd-whale
git reset 5b32f457e9f56ee9b2b29495f4b3b118be3c57bd --hard //回滚到当前教程适合的版本
cd ../../.. //返回CTFd主目录
vim docker-compose.yml
- 配置docker-compose.yml文件(要在CTFd目录下)
vim docker-compose.yml
version: '2.2'services:ctfd:build: .user: rootrestart: alwaysports:- "8000:8000"environment:- UPLOAD_FOLDER=/var/uploads- DATABASE_URL=mysql+pymysql://root:ctfd@db/ctfd- REDIS_URL=redis://cache:6379- WORKERS=1- LOG_FOLDER=/var/log/CTFd- ACCESS_LOG=-- ERROR_LOG=-volumes:- .data/CTFd/logs:/var/log/CTFd- .data/CTFd/uploads:/var/uploads- .:/opt/CTFd:ro- /var/run/docker.sock:/var/run/docker.sock #添加这句即可,别的基本按照官方的不用动depends_on:- dbnetworks:default:internal:db:image: mariadb:10.4.12 #这里改成10.4.12,10.4.13会出错restart: alwaysenvironment:- MYSQL_ROOT_PASSWORD=ctfd- MYSQL_USER=ctfd- MYSQL_PASSWORD=ctfd- MYSQL_DATABASE=ctfdvolumes:- .data/mysql:/var/lib/mysqlnetworks:internal:# This command is required to set important mariadb defaultscommand: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci, --wait_timeout=28800, --log-warnings=0]cache:image: redis:4restart: alwaysvolumes:- .data/redis:/datanetworks:internal:networks:default:internal:internal: true
- 修改Dockerfile(要在CTFd目录下)
这里我使用的是3.6的,我的使用3.7的会报错
vim Dockerfile
FROM python:3.6-alpine
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories &&\apk update && \apk add python3 python3-dev linux-headers libffi-dev gcc make musl-dev py-pip mysql-client git openssl-dev
RUN adduser -D -u 1001 -s /bin/bash ctfdWORKDIR /opt/CTFd
RUN mkdir -p /opt/CTFd /var/log/CTFd /var/uploads
RUN pip config set global.index-url https://pypi.doubanio.com/simple
RUN pip config set install.trusted-host pypi.doubanio.com
COPY requirements.txt .RUN pip install -r requirements.txt -i https://pypi.doubanio.com/simpleCOPY . /opt/CTFdRUN for d in CTFd/plugins/*; do \if [ -f "$d/requirements.txt" ]; then \pip install -r $d/requirements.txt -i https://pypi.doubanio.com/simple; \fi; \done;RUN chmod +x /opt/CTFd/docker-entrypoint.sh
RUN chown -R 1001:1001 /opt/CTFd
RUN chown -R 1001:1001 /var/log/CTFd /var/uploadsUSER 1001
EXPOSE 8000
ENTRYPOINT ["/opt/CTFd/docker-entrypoint.sh"]
- 修改requirements.txt(要在CTFd目录下)
vim requirements.txt
最后一行添加banal==0.4.2
- 构建并启动镜像
docker-compose build
docker-compose up -d
- 将ctfd容器加入到frpcadmin网络中
docker ps #查看ctfd容器的id
docker network connect frpcadmin 容器id
输入
docker network inspect frpcadmin
显示
汉化CTFd页面
CTFd 汉化包地址: https://github.com/Gu-f/CTFd_chinese_CN
1.下载汉化包:
git clone https://github.com/Gu-f/CTFd_chinese_CN.git
2.替换或者增加theme
方法一:将core_chinese文件直接放入CTFd\CTFd\themes目录即可在更换主题处找到该中文主题
方法二:themes文件直接替换CTFd\CTFd目录下的themes即可完成汉化
我用的是V2.1.4里的themes解决CTFd页面访问慢的问题
原因是用了一个all.css。这个样式文件是从外网加载过来的。修改一下网址即可实现快速加载。这个样式文件的位置在:/CTFd/CTFd/themes/core/static/css/vendor/font-awesome/下的fontawesome-fonts.css
将
@import url('https://use.fontawesome.com/releases/v5.4.1/css/all.css');
替换为
@import url('https://cdn.bootcss.com/font-awesome/5.13.0/css/all.css');
然后重新启动docker
systemctl restart docker
访问页面
由于我是使用阿里云服务器
公网ip:8000 即可进入服务器
服务器一定要开放8000端口,28000/29000端口
开放端口在安全组配置-配置端口里
进去设置管理员账号密码这些
设置动态容器参数
用自己设置的管理员账号密码登录
汉化的:点击管理员->Plugins-> CTFd Whale
未汉化的:点击Admin -> Plugins->CTFd Whale
Frp API IP填frpc容器网络的IP
domain没有就填None
Frp Direct IP Address填服务器公网IP
template里面写上frpc.ini的内容,其他照着填就行!!
在CTFd上放置题目及配置
这里使用的是仓库里的题目:
仓库地址:https://github.com/CTFTraining/CTFTraining
该题库较为详细,目录结构清晰,通过docker编排
- 下载CTFTraining中的题库,这里要注意CTFTraining整个项目较大,题目建议一个个下,有选择性的拉取,下面以拉取第一个题目为例
mkdir CTFTraining
cd CTFTraining
git clone https://github.com/CTFTraining/qwb_2019_supersqli.git
每道题的地址
2. 进入该题目录:
cd qwb_2019_supersqli
修改docker-compose.yml(选的题目的端口被占用才需要进去修改端口,端口不被占用可以不用修改)
然后启动题目
docker-compose up -d
启动成功后访问CTFd页面
3.设置题目参数
Challenge Type题目类型选择dynamic_docker
Name题目名字
Category题目分类
Initial Value初始分值
Decay Value递减分值
Minimum Value最小分值
Docker Image支持动态flag的镜像
Frp Http Portfrps http开放的端口
Frp Redirect Type没有域名选择Direct
Frp Redirect Port转发到靶机容器的端口
Score Type是否启用动态分数
启动题目
等待,跳出题目的ip地址即成功
输入到浏览器,到此搭建完成
参考文章:
搭建:https://blog.csdn.net/weixin_43802844/article/details/108572271
https://blog.csdn.net/iczfy585/article/details/110305888
汉化,放题
https://zhuanlan.zhihu.com/p/86409304?from_voters_page=true
Ubuntu搭建CTFd平台实现动态靶机的过程相关推荐
- 基于Ubuntu搭建CTFd平台(全网最全)
前言: 最近在看<CTF安全竞赛入门>这本书,里面提到了搭建CTFd平台用于练习,学者可以在本地虚拟机上搭建. 所需系统:Ubuntu20.04 怎么安装虚拟机和配置Ubuntu这里就不再 ...
- trac linux,Ubuntu搭建trac平台步骤
Ubuntu搭建trac平台步骤: 注:如果不用mysql模式,mysql相关均可不装 # apt-get install apache2 # apt-get install libapache2-m ...
- Ubuntu搭建XSS平台 nginx+php5.6+mysql
重要! 因为网上搭建XSS平台的大多数都是用Apache来做Web服务器的,所以我就找了些资料用nginx进行搭建,其实很简单. 本人还是个小白,对php等技术了解并不深,基本上都是参照别的大佬的文章 ...
- CTFd+CTFd-whale动态靶机环境搭建
CTFd+CTFd-whale动态靶机插件搭建 文章目录 CTFd+CTFd-whale动态靶机插件搭建 1.安装docker 2.安装docker-compose 3.Frp的配置 4.CTFd和C ...
- 记一次CTFd平台搭建
CTFd平台搭建指南 前言 学校要承办市赛的网络安全赛项,要求要稳定的平台,所以这一次我选择了CTFd作为本次比赛的环境.(以前内部比赛用过H1v1,偶尔会出现500的报错.)之前看到过赵师傅写的CT ...
- 从零用Docker搭建CTFd动态靶场(CTFd+CTFd-whale)2023/04/01
目录 一.前言 二.服务器 三.搭建 1.安装Docker和Docker-compose并配置 (1)修改国内源 (2)更新yum包 (3)卸载旧版本 (4)安装必要工具 (5)添加docker的存储 ...
- ctfd的mysql导入_centos7 CTFd平台搭建过程
centos7 CTFd平台搭建过程 CTFd平台想要搭建成功,需要centos7,python,mariadb,flask,apache 0X01 升级数据库 1.备份数据库 mysqldump - ...
- edx平台搭建(基于Ubuntu搭建edx)
Edx的平台搭建,对于我这种完完全全的新手来说,搭建edx平台蛮耗劲的.上周在公司搞了一周的时间,最终完美搭建成功.下面写出自己的心路历程. 刚开始的,参考的是基于Ubuntu虚拟机安装edx-pla ...
- Ubuntu搭建DTN2仿真平台(详细过程记录)
基于Ubuntu搭建DTN2仿真平台 软件安装 软件下载 安装过程 基础运用 软件安装 编译安装 dtn2 之前要保证 gcc 编译器是 3.3 版本以上(但其实如果用低于4.9版本的gcc编译mak ...
最新文章
- javascript密码强度验证!
- 实现才是目的——《大道至简》第六章读后感
- SAP Spartacus StoreFeatureModule
- Asp.net MVC 中Controller返回值类型ActionResult
- redhat5.4 安装mysql_Linux redhat 5.4上安装MYDNS
- 你的下一代iPhone何必是iPhone,苹果或将于2022年推出AR设备取代手机
- Java基础学习总结(83)——Java泛型总结
- python读取配置文件configparser模块
- 微信小程序_简单组件使用与数据绑定
- (JavaScript)浮动广告代码
- java 微服务架构图_图解微服务架构演进
- 计算机专业本科一批,本科一批招生计划
- EMC电磁兼容---EMI电磁干扰
- windows平台Emacs单实例原理、设置及右键菜单的添加
- 【ARM学习笔记】ARM Cortex -A7 EPIT定时器
- 鸿蒙升级后桌面背景底纹怎么弄,ps添加背景怎么弄
- php 顺丰接口实例,顺丰对接源代码
- 如何将中文地址翻译成英文
- 提升eBay店铺流量的方式有哪些?
- 管理信息化涉及的领域
热门文章
- Altium Designer Query语句
- 专访 | Draven:像写代码一样,用树形的结构写文章
- mysql round不四舍五入_MySQL中ROUND函数进行四舍五入操作陷阱分析
- Docker学习--修改阿里云镜像
- 乔布斯往事:游戏之神卡马克眼中的“英雄和傻瓜”
- Python音乐下载
- ACL+SASL的认证配置后的Kafka命令操作(Windows版)
- 云主机和电脑主机服务器有什么区别?
- 算法——连续性后处理(把26邻域连续的变成6邻域连续的)
- 2022-2028全球隔离式CAN收发器行业调研及趋势分析报告