Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

FeedsContactPrivacy© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
waf-dojo — Hands-on AWS WAF training game with tutorials, scored labs, and exams where players write Web ACL rules to block real attack shapes while avoiding false positives. | Kitploit
Tools/GitHubGitHub/nishikawaakira/waf-dojo
Defensive ToolsVulnerability AnalysisWeb Application ExploitationWAF BypassWeb SecurityCTFCloud SecurityLearning & EducationLearning Paths & CoursesLabs & Practice
GitHubnishikawaakira/waf-dojo
18371 day agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →

waf-dojo

Hands-on AWS WAF training game with tutorials, scored labs, and exams where players write Web ACL rules to block real attack shapes while avoiding false positives.

View Repository
Share

WAF Dojo

A hands-on training game for learning AWS WAF by defending against real attacks.

English | 日本語

For administrators: how to build the environment, hand it out to participants, run it, and clean up is covered in the Admin guide (docs/ADMIN.md), and the handout for participants is Getting started for players (docs/PLAYER_GUIDE.md). Both guides are currently in Japanese.

A hands-on environment for learning AWS WAF while under attack.

  1. Tutorials: The screen shows what the incoming attack looks like (sample requests) and step-by-step setup instructions. You configure your Web ACL while following along.
  2. Game mode: Unlocked once you clear the tutorials. Only an outline of the attack is given, and you design the rules to stop it yourself.
  3. Score: You are scored on how many attacks you blocked and how many regular users you blocked by mistake, and the results go on a leaderboard.

Play solo or compete with others.

Demo

WAF Dojo demo

The flow from reading a tutorial's attack and steps, to designing a rule in a vulnerability lab, launching the attack, reviewing the score and model answer, and finally opening a contest from the admin page (about 70 seconds). A higher-quality version is at docs/demo-en.mp4.

Recorded in development mode (make dev), which scores with the model answer instead of a real AWS WAF.

Architecture

                    ┌───────────────────── per player ──────────────────┐
Browser ── Lambda Function URL (gameapi: UI + API)                      │
                │  async invoke                                          │
                ▼                                                        │
          Lambda (trafficgen) ── HTTPS ─▶ ALB ◀── Web ACL (edited by the player)
                │                          │                             │
                │                          ▼                             │
                │                  Lambda (targetapp: dummy online shop) │
                ▼                   └────────────────────────────────────┘
            DynamoDB (runs, best scores, locks)
  • targetapp: A dummy app that returns 200 to every request, so any 4xx means WAF blocked it.
  • trafficgen: Sends a mix of attack requests and regular-user requests according to the scenario, then scores the result. It only sends to the player's own ALB, as configured by Terraform. It uses uTLS to craft different TLS ClientHellos for browsers (Chrome / Firefox / Safari) and attack tools, so you can practice telling them apart by JA4 fingerprint.
  • gameapi: The game UI and API, served from a Lambda Function URL.
  • An ALB can only have one Web ACL, so each player gets their own ALB and Web ACL.
  • To experience CloudFront's body inspection limit (16 KB by default, up to 64 KB), each player also gets a CloudFront distribution and a CloudFront-scoped Web ACL (wafdojo-<name>-cf, us-east-1). CloudFront fronts the dummy app's Lambda Function URL directly rather than the ALB, so the ALB's Web ACL rules do not apply there. Set enable_cloudfront = false to skip it.
  • JA4 is only computed over HTTPS, so the ALB listens on HTTPS (443). To work without a domain, a self-signed certificate is generated and imported into ACM (its private key ends up in the Terraform state).
  • Source IPs are represented by documentation addresses (RFC 5737) in X-Forwarded-For (the site is assumed to sit behind a CDN).

Scenarios

Tutorials (with steps; clear them all to unlock the game)

IDTopicWhat you learn
tutorial-1-sqliSQL injectionManaged rule groups
tutorial-2-xssXSS in the review formCustom rules (Rule builder), body inspection, text transformations
tutorial-3-ipsetIPs on a threat listIP sets, CIDR, X-Forwarded-For
tutorial-4-useragentVulnerability scannersString match on headers, OR statements, lowercase transformation
tutorial-5-ratelimitFloods from a single IPRate-based rules, aggregation keys
tutorial-6-ja4A scraper posing as a browserHow JA4 fingerprints work and how to read them (a_b_c), exact JA4 match, WAF log analysis

Game mode (no steps; applied skills)

IDTopicWhat you learn
game-1-fakebotA scraper posing as GooglebotCombining AND / NOT (UA says Googlebot AND the IP is not Google's)
game-2-adminExternal access to the admin panelURI path conditions + IP allow list, case sensitivity
game-3-traversalPath traversalStacking text transformations (double decoding), avoiding false positives
game-4-cmsAn XSS rule that blocks your editorsBuilding exceptions, rule priority, revisiting existing rules
game-5-bruteforceLogin brute force + corporate NATScope-down statements, threshold design
game-6-ja4regexA bot army that keeps tweaking its JA4 + a partner using the same libraryJA4 regular expressions (catching the shared b part), preparing for unseen variants, exceptions with AND NOT

Rules you created in the tutorials stay in place, so in game mode they sometimes cause false positives (stages 4 and 5). You need to revisit existing rules, not just stop new attacks.

Vulnerability labs (41 challenges, no steps)

Each challenge reads: "A new vulnerability is out. It can be blocked under these conditions. Write the rule." The goal is to be able to write your own rules whenever a new vulnerability appears. After one attempt you can see the model-answer rule JSON (ready to paste into the console's Rule JSON editor) and an explanation. Many Level 2 and 3 challenges also include a "common pitfall" rule and why it fails.

Download Tool