剑庭安
首页
黑客安全首页全部安全栏目 黑客技术黑客技术、渗透测试、漏洞利用工具与教程 安全软件安全工具、扫描器、检测与审计软件 病毒分析恶意软件分析、样本、逆向与沙箱 CTF思路CTF 题目、writeup、解题思路与工具 防护思路防御技术、加固、检测响应与蓝队 红蓝攻防红队攻击模拟、蓝队对抗、攻防演练 漏洞知识库漏洞、CVE、PoC、EXP 与安全研究
逆向|反编译
PHP源码PHP 网站源码、程序、系统 APP源码安卓/iOS APP 源码 ASP源码ASP 网站源码与程序 NET源码.NET 网站源码与系统 小程序源码微信/支付宝小程序源码 Dedecms风格模板Dedecms 织梦风格模板 Empirecms风格模板EmpireCMS 帝国风格模板 Discuz商业模板/插件Discuz 商业模板与插件 WordPress主题/插件WordPress 主题与插件 其它源码、模板其它各类源码与模板 游戏源码游戏源码与引擎项目 加密货币源码加密货币、区块链、钱包、USDT/比特币相关源码与工具 手游源码手机游戏源码、服务端、客户端与引擎项目 传奇源码热血传奇、传奇世界、复古传奇等客户端/服务端/引擎源码 页游源码网页游戏、H5 游戏、浏览器游戏源码 端游源码电脑单机游戏、PC 网游客户端/服务端源码
最新万能免驱动支持所有型号打印机下载程序 日历天气老黄历 · 每天同步真实日期与天气
站长工具站长工具 自助开通会员浏览该分类 其他资源qtziy SEO工具SEO工具 站群源码站群源码 泛程序泛程序 蜘蛛模板蜘蛛模板 蜘蛛池蜘蛛池 外链工具外链工具
搜索 自助开通会员🔓 破甲 API
登录 注册
首页 分类列表 CTF思路 CTFProxy - Your ultimate inf…
CTF思路
作者:admin 发布:2026-10-06

CTFProxy - Your ultimate infrastructure to run a CTF, with a

项目说明CTFProxyYour ultimate CTF infrastructure, with a BeyondCorp-like Zero-Trust Network and simple infrastructure-as-code configuration.This was used …
资源可下载 免费下载 0 条讨论
会员资源
开通会员后即可下载全部资源。
登录后开通会员
会员方案
381浏览量
0讨论
2下载链接
可下载资源状态
内容可验证
更新 2026-10-06
人工审核发布
评论区答疑

项目说明

CTFProxy

Your ultimate CTF infrastructure, with a BeyondCorp-like Zero-Trust Network and simple infrastructure-as-code configuration.

This was used for UNSW's Web Application Security course (COMP6443 and COMP6843), for which we are running 50+ challenges with 100+ containers. Only a single command is used to build all the containers (written in Golang, Python, PHP, Jsonnet, etc.). We also have CI ser to perform auto linting, compiling, pushing, and deploying. We have a test en running docker-compose and a prod en running Kubernetes. All configurations live in a single monorepo and do not require manual (undeterministic) work.

Players are SSO-authenticated with either mTLS certificate or username/password. This authentication info is then passed as JWT to internal services. Inter-service communication is also authenticated via IP address and signed with JWT tokens. All challenges and infra services have a single configuration file called challenge.libsonnet that defines its domain names, service images, replicas, health check, flags, and access control policies. Access control policies are defined in Starlark, a dialect of Python to allow really fine-grained access control.

This is a fork of our original Geegle3

Infra Microservices

  • ctfd: CTFd scoreboard (it doesn't require any manual setup for challenges. It's calling the flaganizer microservice)

  • ctfproxy: TLS (HTTPS) termination, SSO, Access Control, Domain Routing, Centralized Logging

  • dns: this is used only for docker deployment (not used with k8s) to help with inter-service communication

  • elk: elasticsearch stack for ctfproxy logging

  • flaganizer: flag signing and service (supports unique flag per player)

  • gaia: internal user authentication and groups microservice

  • isodb: isolated database as a service

  • requestz: a simple network debugging tool

  • whoami: shows you who you are

  • xssbot: headless chrome as a service (puppeteer queue), integrated with ctfproxy auth
  • We are, by design, using an external MySQL database out of the cluster so that we won't risk losing the data in a container.

    It's a TODO to add PostgreSQL support to isodb, so we can use the same isodb RPC interface to connect to different backends
    for SQL injection challenges.

    Installation

    Configuration

    First fork this repo!

    You need to configure your domain name and container registry in config.bzl.

    You also need to add a few commandline arguments to infra services as configuration. You can grep for FIXME to find them

    Challenge Creation

    TODO(adamyi): better documentation

    Every challenge li its own directory under challenges/ with a single configuration file challenges.libsonnet

    An example configuration looks like this:

    This is all you need for your challenge - no need to configure CTFd manually. The challenge will be added lazily on CTFd.

    The structure of your challenges are going to look very similar to the infra services under infra directory. In BUILD.bazel file, you need to define a :image target using rules_docker.

    While you can still use Dockerfile (there's a dockerfile_image rule in bazel rules_docker), try using container_image instead. Unlike Dockerfile, this ensures that the building process is actually deterministic/reproduceable. Use all existing infra/challenges BUILD files as reference, also learn more about it here:

    After creating your challenge, run bazel run //tools/ctflark to update challenges_list and container_bundle (this is automatic, you just need to run it)

    User authentication info is passed to challenges in X-CTFProxy-JWT header. Response headers starting with X-CTFProxy-I- are only shown to staff, not to players. They also appear in ELK logs. Use this for better logging/debugging.

    Please have a /healthz endpoint (this path is also configurable) on your challenge returning a 200. This is for load balancing and health checking purpose. Your instance will be killed and respawned if health check fails in k8s.

    Domain Routing

    Domain routing is handled automatically by CTFProxy. All you need is set up the challenge.libsonnet file. Specifically, your domain will be {ser}.{ctf_domain}. Multi-le are also supported. E.g., if my service is named de, and my ctf_domain is configured as adamyi.com. The service will live on .

    It's recommended that you set up a wildcard record to CTFProxy so you don't need to worry about the rest (you get a nice error page if the domain doesn't exist). If you prefer to only ha for existing domains, we have our infra to set up AWS Route53 configuration. Just run bazel build //infra/jsonnet:route53. Please send a pull request if you added integration with other cloud pro.

    TLS (HTTPS) is terminated by CTFProxy. You don't need to set up anything manually. It automatically pro your certificate using ACME protocol with Let's Encrypt. If you wish, you can also supply your own certificates by pro filepath to ctfproxy's commandline argument. Edit infra/ctfproxy/BUILD.bazel for this. Auto certs are propagated with GCS (Google Cloud Storage) among replicas.

    Access Control

    As mentioned above, you are using Starlark for access control policy. A more complex example would be:

    In this example, we made a shared Wordpress instance's admin portal safe in a CTF en.

    Specifically, you can call the following functions:

  • denyAccess() - deny access

  • grantAccess() - grant access provided that the user has logged in

  • openAccess() - grant access no matter if the user is logged in
  • You also ha to the following :

  • host: request hostname

  • method: request method

  • path: request path

  • rawpath: request path (url-encoded raw path)

  • query: raw query string

  • ip: remote IP address

  • user: SSO username

  • corpDomain: your configured CTF domain

  • groups: SSO groups that user is in

  • timestamp: current unix milli epoch timestamp
  • Building

    Please build using Linux AMD64. Cuz it's hard to set up cross-compiling for C programs on mac, ceebs.

    Build only:

    Build and tag locally (so that you can use docker-compose to boot them up):

    Deploying (kubernetes, alpha)

    We support both kubernetes and docker-compose!

    While the recommended practice is to use k8s, docker-compose has not been deprecated yet. This means that we shouldn't introduce any breaking changes that rely solely on k8s api. E should be able to run on just docker.

    The approach we adopted for COMP6443 is that we use docker-compose for local dev & testing, because it's simple to set up. Use k8s cluster for prod high-a deployment.

    Rationale for Switching from Docker-Compose to K8S

    Our manual approach for managing IP addresses works great, but we can only add service to the end of list so it gets a new ip range. Otherwise, we're changing ip addresses for existing docker networks and this requires a full reboot with downtime.

    k8s gives us better service discovery and can maintain zero-downtime for adding and updating services. k8s also gives us rolling updates, replicas, scaling, etc. Also, for isolated challenges, we no longer need one server per student in k8s infra (this is not yet supported with k8s deployment and is a TODO).

    The downside of k8s is that it's such a pain to set up a working cluster... But after it's set up, e just works (as long as you know what you're doing).

    Deploying (docker-compose, legacy stable)

    #### Main Server (Shared Server)

    #### Team Server (Separate Isolated Server)

    #### Test Server (All-in-one Server)

    Coding Style

  • Run bazel run //tools/ctflark to update challenges_list and container_bundle for challenges.

  • For golang, we use the go standard style. Please use bazel run //:bin/gofmt -- -s -d . to format your code. We use nogo to lint your code at compile-time. Use bazel run //:gazelle to generate BUILD files.

  • For python, we use yapf style, which is like PEP8, but uses 2-space indentation instead of 4. Please use yapf --in-place --recursi . to format your code. Use pylint as a linter (not yet enabled due to failed linting). Please ensure code is python2-compatible.

  • For jsonnet, please use tools/format_jsonnet.sh to format your code.

  • For bazel, use bazel run //:buildifier to format BUILD files.
  • There's a nice tools/format.sh to run all commands above.

    You can run tools/PRESUBMIT.sh to check if your code meets all style requirements and compiles correctly.

    Contributing

    You're welcome to contribute! Just send a pull request.

    Author

    Adam Yi

    LICENSE

    Open-sourced with lo Apache 2.0 License.

    项目信息

    开发语言:Go

    Star 数:71

    技术要点

    该项目属于CTF思路方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕Your ultimate infrastructure to run a CTF, with a BeyondCorp-like zero-trust network and simple infrastructure-as-code configuration.展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。

    从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。

    使用与学习建议

    1. 下载源码压缩包,解压到本地环境。

    2. 根据项目类型准备对应的运行环境与依赖。

    3. 按照 README 中的步骤完成配置与部署。

    4. 在隔离的测试环境中运行验证,避免影响生产系统。

    免责声明

    本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。

    资源标题CTFProxy - Your ultimate infrastructure to run a CTF, with a
    所属分类CTF思路
    发布作者admin
    发布时间2026-10-06 00:01:16
    下载权限 免费下载
    附件数量2 个下载链接
    浏览次数381
    讨论数量0
    主题状态正常讨论中

    本资源免费,登录后即可在本页「下载链接」区域获取全部附件。

    请在评论区留言说明具体链接,或联系作者补档。楼主更新后本页会同步最新的下载地址。

    请先阅读正文中的授权说明;未注明的默认仅限站内学习交流,禁止直接搬运到其他站点二次售卖。
    还没有讨论,快来抢沙发~
    登录 后才能参与讨论
    下载链接
    会员才能下载
    登录后开通会员
    同分类推荐
    暂无同类资源
    免费登录即可下载
    查看会员
    放大预览

    © 2026 剑庭安 - 网站开发定制 SEO 优化蜘蛛池代做 在线看手相算命. 保留所有权利。

    Powered by 酷像SEOv3.0

    网站地图 Sitemap.xml
    首页 全部分类 黑客安全 逆向|反编译 精品源码 站长工具自助开通会员其他资源SEO工具站群源码泛程序蜘蛛模板蜘蛛池外链工具创意乐园 搜索 会员服务 登录 注册