GitHub Repository: github.com/andris9/sewercide-ctf
- Banner Package: github.com/andris9/sewercide-banner - Challenge briefing HTML content
- Static IP Setter: github.com/andris9/static-ip-setter - Network configuration utility used by this exercise
This Deputy package serves as a reference example for creating Open Cyber Range (OCR) exercises targeting Linux/web environments. It demonstrates a multi-VM CTF deployment with network isolation, feature packages, and banner integration.
This is a complete OCR exercise implementation consisting of:
- Deputy Feature Package (
package.toml) - Installs vulnerable web application - SDL Deployment File (
sewercide-ctf.sdl) - Defines infrastructure and network topology - Provisioning Scripts (
src/install.sh) - Automated VM configuration - Web Application (
src/www/) - Vulnerable PHP application with intentional security flaws - Banner Package (separate:
sewercide-banner) - Challenge briefing displayed to participants
Sewercide Plumbing CTF is a web exploitation challenge featuring an argument injection vulnerability in a development web application.
Participants are tasked with infiltrating Sewercide Plumbing Co.'s development web infrastructure to retrieve a hidden flag file. The company is running a development version of their website with exposed sensitive information due to misconfigurations.
Multi-VM Network:
-
Kali Linux 2025.2 (10.1.1.10) - Standard Kali Linux image with full pentesting suite
- Base image:
kali_2025_2 - Default credentials:
kali/kali - No additional configuration applied (standard Kali installation)
- Base image:
-
Ubuntu 24.04 Server (10.1.1.20) - Target server running vulnerable web application
- Base image:
ubuntu2404-base-web - Pre-installed: SSH, nginx, PHP 8.3, MySQL
- Services disabled by default: SSH, nginx, MySQL, PHP-FPM
- Services enabled by exercise install script as needed
- Base image:
-
Virtual Network Switch - Isolated network segment (10.1.1.0/24)
Challenge Flow:
- Participant accesses Kali VM through OCR platform (credentials: kali/kali)
- Performs network reconnaissance to discover target server on 10.1.1.0/24
- Identifies web application running on non-standard port 8080
- Exploits argument injection vulnerability in pricing form
- Exfiltrates SSH private key for webmaster account
- SSH into target server using stolen key
- Reads flag from
/etc/flag_<random>.txt
This package demonstrates:
- Multi-VM topology with attacker and target machines
- Static IP configuration using Deputy packages
- Feature package structure for software installation
- Provisioning script patterns (user creation, service config, cleanup)
- Banner integration for participant briefing
- SDL file structure with excersise setup
- Copy this package structure as template
- Modify
package.tomlname, description, version - Update SDL file with your VM specifications and network topology
- Replace vulnerable application in
src/with your challenge - Update
install.shprovisioning script for your requirements - Create separate banner package for challenge briefing
- Publish using
deputy publish
- Open Cyber Range platform access
- Deputy CLI installed
- Base images available:
kali_2025_2,ubuntu2404-base-web
# 1. Update version in package.toml and sewercide-ctf.sdl
# 2. Publish to Deputy registry
deputy publish- Create New Exercise - In Ranger, create a new exercise
- Configure Dashboard:
- Exercise name: Enter exercise name (e.g., "Sewercide Web")
- Deployment group: Specify deployment group
- AD Group: Specify Active Directory group
- Import SDL - Copy the contents of
sewercide-ctf.sdland paste into the Scenario SDL text area - Submit Dashboard Changes - Click "Submit" button to save exercise configuration
- Configure Banner - Navigate to the Banner screen and select banner from Deputy:
- Click "Get banner from Deputy package"
- Package name:
sewercide-banner - Package version: Select latest version
- Click "Add" to attach banner to exercise
- Scroll down and click "Update" to apply banner changes
- Create New Deployment - Click "Create a new deployment" button
- Configure Deployment Parameters:
- Deployment group: Specify deployment group name
- Deployment name: Enter descriptive name for this instance
- AD Group: Specify Active Directory group
- Add Deployment - Click "Add" to create the deployment instance
- Open Deployment - Navigate to the created deployment from the Deployments list
- Open Entity Selector - Access the deployment's Entity Connector screen
- Connect Participant - Assign the participant for this deployment:
- Entity:
red-team.participant(use dot notation for nested entities) - Username: Enter participant's username
- Click "Connect" to assign participant to entity
- Entity:
MIT License - Free to use as reference for your own OCR exercises.
Andris [email protected]