RSAC 2020 Learning Lab by @jkuemerle
Materials and references for RSA 2020 talk "Everyone Can Play!"
Workshop activites require local Docker and/or free Heroku account. Local execution of utility scripts requires Node.JS.
To perform command line configuration of Heroku install the Heroku CLI.
To prepare in advance, clone the this repository and the below repositories. If you will be working using local Docker you can build both the CTFd Docker Compose definition and the OWASP Juice Shop Docker image.
For the report building any basic reporting tool will work. The workshop will use a custom version of the Elasticsearch, Logstash, Kibana (ELK) Docker Image.
Customized, Heroku ready version of CTFd: https://github.com/jkuemerle/CTFd-RSAC2020
Customized, Heroku ready version of OWASP Juice Shop: https://github.com/jkuemerle/juice-shop-rsa-2020
Customized ELK: https://github.com/jkuemerle/elk-docker
Utility for self provisioning: https://github.com/jkuemerle/rsa-ctf-provision
Are located in the scripts folder.
Extracts challenges from a running Juice Shop instance.
npm install -g juice-shop-ctf-cli
juice-shop-ctf
- CTF framework: CTFd
- Juice Shop URL: http://localhost:3290
- Secret key: https://raw.githubusercontent.com/jkuemerle/juice-shop-rsa-2020/master/ctf.key
- Paid text hints
- No hint URLs
Unzip file to the events\RSAC2020 subdirectory.
Converts exported Juice Shop CTFd data (Challenges/Flags/Hints) to YAML file.
From scripts folder
node yfromjs.js -c "..\events\RSAC2020\db\challenges.json" -f "..\events\RSAC2020\db\flags.json" -h "..\events\RSAC2020\db\hints.json" -o "..\events\RSAC2020\challenges.yml"
Converts YAML document to Challenges/Flags/Hints and updates any Pages
From scripts folder
node ctfdFromYaml.js -o "..\events\RSAC2020\db" -p "..\events\RSAC2020\pages" -i "..\events\RSAC2020\challenges.yml"
Creates an event specific zip file for an instance.
From scripts folder
node createExport.js -i "..\events\RSAC2020" -o "..\events\RSAC2020\export.zip"
Copy the export.zip to the CTFd events subdirectory.
From scripts folder
node buildCTFdArchive.js -o "..\..\rsa-ctf-provision\public\ctfd.tar.gz" -i "..\..\rsa-ctfd-work"
From scripts folder
node buildCTFdArchive.js -o "..\..\rsa-ctf-provision\public\juiceshop.tar.gz" -i "..\..\rsa-juice-shop"
Builds the CTFd instance.
Custom integrated challenge plugin for CTFd https://github.com/salesforce/integrated_challenge
Starter code is in /plugin
Kibana: http://localhost:5601/app/kibana
Google sheets, import CSVs, delete id & team_id column from Solves and Solutions
Create Heroku application for CTFd:
heroku apps:create <app name>
Change application stack to container
heroku stack:set container