【CTF靶场搭建】GZ-CTF平台

简介

GZ::CTF 是一个基于 ASP.NET Core 的开源 CTF 平台,采用 Docker 或 K8s 作为容器部署后端,提供了可自定义的题目类型、动态容器和动态分值功能。

GZ::CTF 基于 AGPLv3 协议开源,使用和修改均需遵守开源协议。

官网

GZ::CTF官网

图片[1]-【CTF靶场搭建】GZ-CTF平台-松鼠博客

服务器系统目前最好用:ubuntu的22.04的版本目前我是使用这个,应为它是自带docker的省去搭建docker的环节,如果需要更大的集群官网有k8s搭建方法。

国内服务器docker换源

如果你是用ubuntu的22.04直接换源

详细换源教程在这篇文章:【Docker换源】Docker更换镜像源教程

{
    "registry-mirrors": [
        "https://ustc-edu-cn.mirror.aliyuncs.com/",
        "https://ccr.ccs.tencentyun.com/",
        "https://docker.m.daocloud.io/",
  "https://dockerhub.azk8s.cn",
  "https://mirror.baidubce.com",
  "https://docker.nju.edu.cn",
  "https://mirror.iscas.ac.cn",
  "https://dockerhub.icu",
  "https://docker.anyhub.us.kg",
  "https://hub.gog.email",
  "https://dockerpull.com",
  "https://atomhub.openatom.cn"
    ]
}
//这是新的源我也不知道好用不好用你们尝试一下

GZCTF的安装

有脚本我自己写的如果想直接的用我脚本

gzctf.7z
7z文件
1.4K

1.先创建一个GZCTF的文件夹,用来存放配置相关文件

mkdir GZCTF

2.创建 appsettings.json文件(在GZCTF文件夹下)

vim  appsettings.json

将以下内容输入到文件中记得替换初始参数之类的内容,删除掉所有注释,不然可能会报错

 
{
    "AllowedHosts": "*",
    "ConnectionStrings": {
        "Database": "Host=db:5432;Database=gzctf;Username=postgres;Password=GzctfAuto233",    // 此处Password内容可以自定义(安全起见,至少包含数字及字母大小写)
        "RedisCache": "cache:6379,abortConnect=false"
    },
    "EmailConfig": {                           // 邮件配置,用于找回密码之类的,这里就用163举例
        "SendMailAddress": "demo@163.com",    // 邮件发送者
        "UserName": "demo@163.com",  // SMTP用户名,就是你开启SMTP的邮箱
        "Password": "SMTP_PASSWORD", // 你得STMP服务器密码,唯一,
        "Smtp": {
            "Host": "smtp.163.com",   // 163邮箱的stmp服务器地址
            "Port": 465         // stmp端口
        }
    },
    "XorKey": "GzctfAuto233",          // 此处XorKey可以自定义
    "ContainerProvider": {
        "Type": "Docker",
        "PortMappingType": "Default",
        "EnableTrafficCapture": false,
        "PublicEntry": "XXX.XXX.XXX.XXX",      // 域名或IP配置,用于容器生成,域名不带http/https
        "DockerConfig": {
            "SwarmMode": false,
            "Uri": "unix:///var/run/docker.sock"
        }
    },
    "RequestLogging": false,
    "DisableRateLimit": true,
    "RegistryConfig": {
        "UserName": "DOCKER_USERNAME",
        "Password": "DOCKER_PASSWORD",
        "ServerAddress": "DOCKER_ADDRESS"
    },
    "CaptchaConfig": {
        "Provider": "None",
        "SiteKey": "",
        "SecretKey": "",
        "GoogleRecaptcha": {
            "VerifyAPIAddress": "https://www.recaptcha.net/recaptcha/api/siteverify",
            "RecaptchaThreshold": "0.5"
        }
    },
    "ForwardedOptions": {
        "ForwardedHeaders": 5,
        "ForwardLimit": 1,
        "ForwardedForHeaderName": "X-Forwarded-For",
        "TrustedNetworks": [
            "0.0.0.0/0"
        ]
    }
}

3.在当前文件夹下继续创建docker-compose.yml文件

vim docker-compose.yml

在文件里输入以下内容,记得替换初始参数之类的内容,删除掉所有注释

services:
  gzctf:
    image: registry.cn-shanghai.aliyuncs.com/gztime/gzctf:develop
    restart: always
    environment:
      - "GZCTF_ADMIN_PASSWORD=<Your GZCTF_ADMIN_PASSWORD>"  # <Password>换成账户管理员密码,管理员账户为admin
      # choose your backend language `en_US` / `zh_CN` / `ja_JP`
      - "LC_ALL=zh_CN.UTF-8"
    ports:
      - "80:8080"
    volumes:
      - "./data/files:/app/files"
      - "./appsettings.json:/app/appsettings.json:ro"
      # - "./kube-config.yaml:/app/kube-config.yaml:ro" # this is required for k8s deployment
      - "/var/run/docker.sock:/var/run/docker.sock" # this is required for docker deployment
    depends_on:
      - db

  db:
    image: postgres:alpine
    restart: always
    environment:
      - "POSTGRES_PASSWORD=<Your POSTGRES_PASSWORD>"  # 数据库密码,务必要和appsettings.json中的配置一致
    volumes:
      - "./data/db:/var/lib/postgresql/data"

在构建并启动GZCTF

在当前文件夹下(GZCTF),执行命令,成功构建并启动GZCTF

docker-compose up -d

后续修改配置文件的时候要停止docker,并再此运行上述命令。

第一次安装的时候会有点慢,后面会快很多

查看GZCTF启动状态:

docker ps
图片[2]-【CTF靶场搭建】GZ-CTF平台-松鼠博客

会看到容器的状态

然后访问你填的ip或者域名即可

https配置

需要先下载caddy

caddy v2官网:欢迎 — Caddy v2中文文档

Debian、Ubuntu、Raspbian安装命令在下面

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

安装完之后caddy先查看它的状态

service caddy status

应为caddyv2不需要配置证书什么基本上是自动化所以我们重新到GZCTF文件夹下编辑compose.yml

默认一般是ports:80:8080,要把80改成127.0.0.1:8081或者127.0.0.1:8080

图片[3]-【CTF靶场搭建】GZ-CTF平台-松鼠博客

改完gzctf里面内容可以重载compose

docker compose down && docker compose up -d

最重要是改caddyfile文件里面这个文件默认安装在/etc/caddy/Caddyfile

vim /etc/caddy/Caddyfile

就会看到

图片[4]-【CTF靶场搭建】GZ-CTF平台-松鼠博客
ctf.squirrelblog.com {
    reverse_proxy 127.0.0.1:8081 #这里输入你想反代的服务器IP和端口

}

把这个reverse_proxy 后面改成之前在compose.yml中配置的代码我在上面已经截图过了要一样

然后将ctf.squirrelblog.com改成自己域名,切记域名要确保解析自己服务器了否则不会有效果

caddy run
systemctl status caddy

caddy一些指令

# 启动Caddy
systemctl start caddy

# 开机自启
systemctl enable caddy

# 重启Caddy2
systemctl restart caddy

# 停止Caddy2
systemctl stop caddy

# 重载配置Caddy配置文件(修改配置文件后执行)
systemctl reload caddy

# 查看Caddy2运行状态
systemctl status caddy
图片[5]-【CTF靶场搭建】GZ-CTF平台-松鼠博客

看它有没有爆红报错的提示如果没有就代表成功了

GZ后台用户管理ip显示教程

先到后台查看:172.xxx.xxx.xx/17然后只要把你管理员的那个在后台显示改下面的地方

图片[6]-【CTF靶场搭建】GZ-CTF平台-松鼠博客
图片[7]-【CTF靶场搭建】GZ-CTF平台-松鼠博客

把他替换管理员就能显示用户ip了

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容