Abstract¶
This volume empirically reproduces representative vulnerabilities from OWASP A01:2025 (Broken Access Control) against WebGoat v2025.3. Each case demonstrates exploitation under controlled conditions and traces the vulnerability to its implementation in the WebGoat source to identify the missing or inadequate authorization control. The work is intended both as a learning artifact for practitioners and as a reproducible reference for the broken access control category.
Introduction¶
A01:2025 places Broken Access Control at the top of the OWASP Top 10 1, ranking it the most prevalent category of web application vulnerability in the most recent edition. The category subsumes a wide range of underlying weaknesses: missing object-level authorization 2, insufficient entropy in session identifiers 3, and absent function-level controls 4, among others. Mitigation guidance from OWASP unifies the class under a small number of principles: deny by default, enforce authorization at the server, and avoid client-controlled keys 56. What unites the weaknesses is a server’s failure to enforce who is allowed to do what on which resource. The consequence is consistent across the class: unauthorized read, modification, or escalation of resources that should belong to other users.
The vulnerability class is well-documented at the level of taxonomy and mitigation principle. What is less commonly available in one place is a side-by-side reproduction in a controlled target paired with source-level explanation of why the implementation permits each exploit. This case study addresses that gap.
WebGoat itself is widely adopted in cybersecurity coursework at undergraduate and graduate levels as a hands-on target for teaching web application vulnerabilities, and a body of community resources has grown around it. Detailed walkthroughs 789 document procedural reproduction for selected lessons, and broader markdown collections 101112 catalogue solutions and notes across larger lesson sets covering a range of WebGoat versions. This volume treats each WebGoat vulnerability as an academic case study: empirical exploit reproduction at a pinned target version paired with source-level investigation of the WebGoat implementation, counterfactual identification of the missing or inadequate control, and explicit mapping to OWASP and CWE taxonomy. It is the first volume of The WebGoat Case Series, a multi-repo project applying this approach across the OWASP Top 10, opening with A01:2025 Broken Access Control and tracing each finding to the WebGoat source.
Methods¶
Each case study follows a consistent structure modelled on academic case-report writing:
Introduction establishes the vulnerability’s framing, taxonomy placement (OWASP / CWE), the mitigation principles relevant to the class, and the literature position of the case
Materials declares the pinned target application and proxy tool versions via shared include snippets from
content/_materials/Methods names the investigation phases, the tools used, and the success criterion that defines a complete empirical demonstration for the case
Results reproduces the exploit empirically, opening with a Mermaid attack-flow diagram and proceeding through intercepted requests and annotated screenshots
Discussion analyses the WebGoat implementation at the source level: the vulnerable code path at the pinned tag, the absent or inadequate authorization control, and the counterfactual change that would close the vulnerability
Conclusion synthesises the empirical result against the mitigations named in the introduction
The target application is pinned at WebGoat v2025.3 to ensure reproducibility against a specific implementation. Proxy tools (mitmproxy v12.2.0, Burp Suite Community Edition v2025.10.6) vary per case based on which surfaces the relevant request flow most clearly. Pinned versions and setup commands are declared inline in each case via the shared snippets in content/_materials/.
Scope¶
This volume is bounded to vulnerabilities within the OWASP A01 (Broken Access Control) category as expressed in WebGoat v2025.3. Infrastructure-level concerns (network controls, transport security, container hardening, supply chain), client-side weaknesses outside the access-control class, and vulnerabilities specific to WebGoat versions other than the pinned release are out of scope. Findings generalise to the weakness class as documented in CWE and OWASP, but the source-level analysis is specific to the WebGoat implementation under study.
Case Studies¶
Session Hijacking — predictable session identifier generation (CWE-330, CWE-340) and the keyspace collapse that follows from pairing a global counter with a wall-clock timestamp.
Insecure Direct Object References — missing object-level authorization (CWE-639, API1:2023 BOLA) on a profile endpoint that leaks the very identifier required to enumerate and modify other users’ records.
The target application under study (WebGoat at tag v2025.3) is a deliberately-vulnerable web application maintained by the OWASP Foundation for security training and research 13. No production or third-party systems were tested in the course of this work, and all vulnerabilities reproduced are documented in the upstream codebase as intentional teaching artifacts. Coordinated disclosure is therefore not applicable; the source-level analyses cite the public, version-pinned WebGoat source as released.
Data Availability¶
Source materials for this volume are available at https://tools/ directory. Content is licensed under CC BY-NC-SA 4.0; build tooling and configuration are licensed under Apache-2.0. The target application analysed throughout is WebGoat at tag v2025.3 13.
- OWASP Foundation. (2025). A01:2025 Broken Access Control. OWASP Top 10:2025.
- MITRE Corporation. (n.d.). CWE-639: Authorization Bypass Through User-Controlled Key. Common Weakness Enumeration. Retrieved May 24, 2026, from https://cwe.mitre.org/data/definitions/639.html
- MITRE Corporation. (n.d.). CWE-330: Use of Insufficiently Random Values. Common Weakness Enumeration. Retrieved May 24, 2026, from https://cwe.mitre.org/data/definitions/330.html
- MITRE Corporation. (n.d.). CWE-284: Improper Access Control. Common Weakness Enumeration. Retrieved May 24, 2026, from https://cwe.mitre.org/data/definitions/284.html
- OWASP Foundation. (n.d.). Access Control Cheat Sheet. OWASP Cheat Sheet Series. Retrieved May 24, 2026, from https://cheatsheetseries.owasp.org/cheatsheets/Access_Control_Cheat_Sheet.html
- OWASP Foundation. (n.d.). Authorization Cheat Sheet. OWASP Cheat Sheet Series. Retrieved May 24, 2026, from https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html
- Balluff, T., George, R., Karzhaubaeva, M., Kumara, E., & Tsai, Y.-A. (2025). Final Project: Hacking WebGoat. Student final project. https://github.com/erickumara1/erickumara1.github.io/blob/main/images/webgoat.pdf
- an1604. (n.d.). WebGoat Solutions Explained. GitHub repository. Retrieved May 25, 2026, from https://github.com/an1604/WebGoat-Solutions-/blob/main/webGoat%20solutions%20explained.pdf
- WebGoat Project Contributors. (n.d.). (Almost) Fully Documented Solution (en). WebGoat GitHub Wiki. Retrieved May 25, 2026, from https://github.com/WebGoat/WebGoat/wiki/%28Almost%29-Fully-Documented-Solution-%28en%29
- vernjan. (n.d.). WebGoat. GitHub repository. Retrieved May 25, 2026, from https://github.com/vernjan/webgoat
- fmauri. (n.d.). WebGoat Solutions. GitHub repository. Retrieved May 25, 2026, from https://github.com/fmauri/WebGoatSolutions
- JaWitold. (n.d.). High-Level Vulnerabilities. GitHub repository. Retrieved May 25, 2026, from https://github.com/JaWitold/high-level-vulnerabilities
- WebGoat Project Contributors. (2025). WebGoat: A deliberately insecure web application. GitHub repository, tag v2025.3. https://github.com/WebGoat/WebGoat/tree/v2025.3