bendahrooge/ctfd-proxmox

GitHub: bendahrooge/ctfd-proxmox

CTFd 插件,为 CTF 参赛者按需自动分配基于 Proxmox 的隔离挑战虚拟机并提供浏览器内访问。

Stars: 0 | Forks: 0

# ctfd-proxmox 一个 [CTFd](https://github.com/CTFd/CTFd) 插件,允许挑战作者 使用 Proxmox VM 模板来支持挑战。参赛者点击 挑战页面上的按钮,即可获得他们自己的私有 VM 克隆以及 浏览器内的 noVNC 控制台——他们无需、也不会获得任何 Proxmox 的凭据。 ## 功能 - **`proxmox` 挑战类型** - 在挑战编辑表单中添加模板节点、模板 VMID、 目标节点/存储/网桥、TTL 和并发限制。 - **基于用户的 VM 克隆** - 每个参赛者都会获得一个链接克隆或完整克隆 - **内嵌 noVNC + xterm.js** - CTFd 发放一次性的 ticket,然后 代理 Proxmox `vncwebsocket`,因此参赛者无需拥有对 proxmox 的访问权限。 ## 要求 - CTFd >= 3.6,且必须使用支持 websocket 的 worker 运行 (`geventwebsocket.gunicorn.workers.GeventWebSocketWorker`,这是官方 CTFd Docker 镜像中的 默认 worker)。 - 一个 Proxmox VE 7 或 8 集群,且 CTFd 主机可以通过 `:8006/tcp` 访问该集群。 - 一个 Proxmox API token(见下文)。 ## 安装 ``` cd CTFd/plugins git clone https://github.com/bendahrooge/ctfd-proxmox.git pip install -r ctfd-proxmox/ctfd_proxmox/requirements.txt # 重启 CTFd ``` CTFd 会自动发现 `CTFd/plugins/` 下任何包含 `config.json` 的目录。重启后,你应该会看到: - 管理菜单栏中新增了一个 **Proxmox** 条目,并且 - 在创建挑战时,挑战类型下拉菜单中新增了一个 **proxmox** 选项。 ## Proxmox API token 创建一个专用的服务用户和 token: ``` pveum user add ctfd@pve pveum acl modify / --user ctfd@pve --role PVEVMAdmin pveum acl modify /storage/STOAGE_NAME --user ctfd@pve --role PVEDatastoreUser pveum user token add ctfd@pve api --privsep 0 ``` 其中 STOAGE_NAME 是用于克隆 VM 的每个后端存储的名称。 将返回的 `value` 复制到插件的 **API token secret** 字段中; **API token id** 为 `ctfd@pve!api`。
标签:CTFd插件, CTF平台, noVNC, Proxmox, 特权提升, 自动化部署, 自定义脚本, 虚拟化管理, 请求拦截, 逆向工具