sasanlabs/owasp-vulnerableapp

By sasanlabs

โ€ขUpdated about 16 hours ago

https://owasp.org/www-project-vulnerableapp/

Image
Security
2

50K+

sasanlabs/owasp-vulnerableapp repository overview

โ OWASP VulnerableApp OWASP VulnerableApp

OWASP Incubator License Java CI with Gradle PRs Welcome Docker Pulls codecov

โ Break it. Scan it. Reproduce it. Improve it.

OWASP VulnerableApp is a modular deliberately vulnerable application designed primarily for validating and benchmarking security scanners through reproducible test scenarios, while also supporting learning and experimentation.

โ ๐Ÿ” What makes it different

Unlike traditional vulnerable applications, VulnerableApp is designed as a testable security ecosystem, not a static training app.

โ It enables:
  • ๐Ÿ”ฌ Scanner benchmarking for tools like Burp Suite, OWASP ZAP, and custom DAST engines
  • ๐Ÿงฉ Modular vulnerability design that allows new scenarios without modifying core services
  • ๐Ÿ“Š Security regression testing across releases and environments
  • ๐ŸŽฏ Realistic attack surface simulation for modern web application patterns
  • ๐Ÿงช Deterministic vulnerability behavior for repeatable scanning results
  • ๐Ÿง  Built for security engineers, researchers, and educators
โ VulnerableApp helps you:
  • Validate how security tools behave across known vulnerability patterns
  • Build controlled environments for security experimentation
  • Extend vulnerability coverage as new attack techniques emerge
  • Run consistent, repeatable security testing pipelines
โ โš™๏ธ Why it matters

Most vulnerable apps are:

  • Static
  • Hard to extend
  • Designed only for manual learning
โ VulnerableApp is built for:

automation, reproducibility, and evolution

โ User Interface

VulnerableApp-facade UI

โ Running the project

There are 2 ways to run the project:

  1. The simplest way to run the project is using Docker containers which will run the full-fleged VulnerableApplication with all the components. For running as Docker application, follow following steps:
    1. Download and Install Docker Composeโ 
    2. Clone this Github repository
    3. Open the terminal and Navigate to the Project root directory
    4. Run the command docker-compose pull && docker-compose up
    5. Navigate to browser and visit http://localhost and this will give the User Interface for VulnerableApp.
    Note: The above steps will run the latest unreleased VulnerableApp version. If you want to run the latest released version, please use docker latest tag.
  2. Another way to run the VulnerableApp is as standalone Vulnerable Application is:
    1. Navigate to Releases Sectionโ  in github and download the Jar for the latest released version
    2. Open the terminal and navigate to the project root directory
    3. Run the command java -jar VulnerableApp-*
    4. Navigate to browser and visit http://localhost:9090/VulnerableApp. This will give the Legacy User Interface for the VulnerableApp.

โ Building the project

There are 2 ways in which this project can be built and used:

  1. As a Docker application which will help in running the full-fledged VulnerableApplication. For running as Docker application, follow following steps:
    1. Build the docker image by running ./gradlew jibDockerBuild
    2. Download Docker-Composeโ  and run in the same directory docker-compose up
    3. Navigate to browser and visit http://localhost and this will give the User Interface for VulnerableApp.
  2. As a SpringBoot application which will run with the Legacy UI or Rest API but gives the benefit of debugging and solving issues. This is the simple way,
    1. Import the project into your favorite IDE and run it
    2. Navigate to browser and visit: http://localhost:9090/VulnerableApp and this will give the Legacy User Interface for VulnerableApp which you can use to debug and test.

โ Contributing to Project

There are multiple ways in which you can contribute to the project:

  1. If you are a developer and trying to start on to the project, then the suggestion is to go through the list of issuesโ  which contains good first issue which can be a good starter.
  2. If you are a developer or a security professional looking to add new Vulnerability type then you can Generate the Sample Vulnerability by running ./gradlew GenerateSampleVulnerability. It will generate the Sample Vulnerability template which has placeholders and comments. Modified files can be seen in the logs of the command or in the github history. You can navigate to those files, fill in the placeholders and then build the project to see the effect of the changes.
  3. In case you are looking to contribute to the project by publicising it or working on the growth of the project, please feel free to add your thoughts to discussions section or issues and we can discuss over them.

โ Technologies used

  • Java17
  • Spring Boot
  • ReactJS
  • Javascript/TypeScript
โ Connecting to embedded H2 database

For accessing database from browser, visit: http://localhost:9090/VulnerableApp/h2

Database Connection properties:

JDBC Url: jdbc:h2:mem:testdb
User Name: admin
Password: hacker

โ Testing with Modern UI

VulnerableApp-facade provides a modern UI for VulnerableApp. To test your local changes with the Modern UI:

  1. Prerequisite: Ensure you have Docker and Docker-Compose installed.
  2. Run Testing Script:
    • On Windows: .\scripts\testWithModernUI.bat
    • On Linux/Mac: ./scripts/testWithModernUI.sh

This script will build your local changes into a Docker image (sasanlabs/owasp-vulnerableapp:unreleased) and start the full stack (including facade, jsp, and php services) using docker-compose.local.yml.

  1. Access the UI: Navigate to http://localhost to see the modern UI with your changes.

โ Currently handled Vulnerability types

  1. JWT Vulnerabilityโ 
  2. Command Injectionโ 
  3. Cryptography Failuresโ 
  4. File Upload Vulnerabilityโ 
  5. Path Traversal Vulnerabilityโ 
  6. SQL Injectionโ 
    1. Error Based SQLiโ 
    2. Union Based SQLiโ 
    3. Blind SQLiโ 
  7. XSSโ 
    1. Persistent XSSโ 
    2. Reflected XSSโ 
  8. XXEโ 
  9. Open Redirectโ 
    1. Http 3xx Status code basedโ 
  10. SSRFโ 
  11. IDORโ 
  12. Clickjackingโ 
  13. LDAP Injectionโ 
  14. Authentication Vulnerabilityโ 

โ Contact

In case you are stuck with any of the steps or understanding anything related to project and its goals, feel free to shoot a mail at [email protected]โ  or raise an issueโ  and we will try our best to help you.

โ Documentation and References

  1. Documentationโ 
  2. Design Documentationโ 
  3. Owasp VulnerableAppโ 
  4. Overview video for OWASP Spotlight seriesโ 
  5. Overview Videoโ 
โ Blogs
  1. Overview of Owasp-VulnerableApp - Medium articleโ 
  2. Overview of Owasp-VulnerableApp - Blogspot postโ 
  3. Introduction to Owasp VulnerableApp by Kenji Nakajimaโ 
  4. Gen AI based platform Shannon exploiting VulnerableAppโ 
โ Usage of OWASP VulnerableApp
  1. View Global Academic Interestโ 
โ Troubleshooting references
  1. Reddit exploiting SQL Injection Vulnerabilityโ 
โ Readme in other languages
  1. Russianโ 
  2. Chineseโ 
  3. Hindiโ 
  4. Punjabiโ 

Tag summary

Content type

Image

Digest

sha256:51e42062cโ€ฆ

Size

159.6 MB

Last updated

about 16 hours ago

docker pull sasanlabs/owasp-vulnerableapp:unreleased