4 Home
emile edited this page 2 months ago

Welcome to the Wiki.

Installation guide

  • clone this repo
  • build the docker image:
$ docker build . -t circus-companion
...
Successfully built aaaaaaaaaaaa
Successfully tagged circus-companion:latest
  • clone the circus-vpn container somewhere
  • build the docker image:
$ docker build . -t circus-vpn
...
Successfully built aaaaaaaaaaaa
Successfully tagged circus-vpn:latest
  • clone the repos containing your challenges and build their docker-containers them (remember to tag them!)
  • write a companion.json file seeding the challenges (insert the docker image tag as value for “container”):
{
  "challenges": [
    {
      "name": "Evil Service",
      "description": "A meaningful and funny description",
      "flag": "CIRCUS[IS_REALLY_COOL]",
      "container": "challenge-evilservice",
      "category": "Miscellaneous"
    },
    {
      "name": "Insecure Stuff",
      [...]
  ]
}
  • and at last: run the companion container:
    • mount the docker socket so that the companion can spwan the containers as needed
    • mount the companion.json for seeding purposes
    • expose port 8080
    • set various flags (see the README.md for defaults):
      • -username: name of the default user
      • -accessCode: access code for the default user
      • -sessionSalt: some salt to use
      • -seedFile: the seed file to use (companion.json)
      • -vpnRemoteAddress: address the vpn will run on
  • example run:
$ docker run -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd)/companion.json:/etc/companion.json -p 8080:8080 --rm circus-companion:latest -accessCode abcdefg -sessionSalt saltyPwners -vpnRemoteAddress 127.0.0.1
2019/10/05 23:18:17 Setting up components
2019/10/05 23:18:17 Reading seed file
2019/10/05 23:18:17 Seed random number generator
2019/10/05 23:18:17 Starting VPN container ('circus-vpn')
2019/10/05 23:18:18 Starting limiter (end 0, timespan 0)
2019/10/05 23:18:18 Running HTTP server on port 8080