众所周知,渗透测试练习有许多平台可供使用,比如 Metasploitable、DVWA 等环境,而搭建 CTF 平台也有许多项目可供参考,如 CTFd、FBCTF,一些比赛以及各个大学的练习站点就使用了这些项目。
CTFd 可使用多种方式 部署,为了以更加轻便的方式运行,此处使用 Docker。
环境部署
Docker
- 安装 Docker 的依赖
$ yum install yum-utils device-mapper-persistent-data lvm2 bind-utils
- 添加 Docker 的源,再 安装 Docker
$ yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo $ yum install docker-ce
Docker Compose
Docker Compose 使用 Python 开发,因此需先安装好 Python 的 pip
$ yum install epel-release python-pip
$ pip install docker-compose
启动 CTFd
CTFd
- 下载 CTFd
$ git clone https://github.com/CTFd/CTFd.git
- 进入
CTFd
,会发现项目文件夹中还有一个CTFd
文件夹$ cd CTFd $ docker-compose up -d
docker-compose
使用了 Docker API,等同于docker
,up
选项构建、运行容器,-d
参数表示在后台运行。
首次构建将拉取几个镜像(mariadb、python、redis 等),速度较慢,等到脚本跑完,就可以在本地通过 http://127.0.0.1:8000
访问。初次运行需注册 Admin 用户,填写相关信息。
汉化
其实没必要汉化,不过为了后期可定制化,此处 为汉化项目的地址,不过该项目只汉化了选手的界面,管理员相关页面仍为英文。
- 下载汉化包
$ git clone https://github.com/Gu-f/CTFd_chinese_CN.git
- 替换或者增加 theme
- 将
core_chinese
文件夹直接放入CTFd/CTFd/themes
目录 - 将
themes
直接替换CTFd/CTFd
目录下的themes
即可
- 将
动态独立靶机
现在很多比赛都使用了动态独立靶机(dynamic standalone instance),每道题目环境分离,且能为每个队伍生成独一无二的 flag,动态创建也能减少资源开销。
此处使用 赵师傅 的 [CTFd-whale]
根据 README,需要下载 frps,以实现穿透
在 docker-compose.yml
的 volume:
添加:
service:
volumes:
- /var/run/docker.sock:/var/run/docker.sock