forked from anxolerd/dvpwa
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
patched.codes[bot]
committed
Nov 4, 2024
1 parent
a1d8f89
commit ab05e46
Showing
1 changed file
with
46 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
# DVPWA - Damn Vulnerable Python Web Application | ||
|
||
This project is a deliberately vulnerable web application written in Python, designed for educational purposes in web security. It showcases various common vulnerabilities, allowing developers to learn about and practice mitigating them. | ||
|
||
## Inputs | ||
|
||
- **User Input:** The application takes various user inputs, such as student names, course reviews, and evaluation points. These inputs are often used directly in database queries or displayed in web pages, creating opportunities for vulnerabilities like SQL injection and XSS. | ||
- **Login Credentials:** User login credentials (username and password) are used for authentication. Passwords are hashed but use a weak hashing algorithm (MD5), demonstrating insecure password storage. | ||
- **Course Information:** Users can input course titles and descriptions, which can be manipulated to exploit vulnerabilities. | ||
- **Review Text:** Review text allows for Stored XSS vulnerabilities. | ||
|
||
|
||
## Outputs | ||
|
||
- **Rendered Web Pages:** The application dynamically renders web pages, displaying user data and course information. This can lead to output-based vulnerabilities if input data is not handled properly. | ||
- **Database Queries:** SQL queries are made based on user inputs, leading to potential SQL injection exploits. | ||
- **Error Messages:** In case of vulnerabilities, error messages might reveal sensitive information about the database schema. | ||
- **User Data:** The app displays user data, and due to improper session management, user sessions are vulnerable to fixation. This could allow an attacker to hijack user accounts. | ||
|
||
|
||
## Usage Example | ||
|
||
The application is meant to be used as a sandbox environment for practicing and understanding common web vulnerabilities. By exploiting these weaknesses in a safe setting, developers can gain a practical understanding of their impact and effective mitigation strategies. | ||
|
||
The code comprises various files and directories typical of a web application: | ||
|
||
- `.gitignore`: Standard git ignore file. | ||
- `Dockerfile.app`, `Dockerfile.db`, `docker-compose.yml`: Configuration files for running the application in a Dockerized environment. This simplifies setup. | ||
- `LICENSE`: License file. | ||
- `README.md`, `README.rst`: Documentation about DVPWA. `README.rst` contains detailed information about setup and vulnerabilities, such as SQL injection, session fixation, XSS, and insecure password storage. | ||
- `config`: Configuration files for different environments. | ||
- `migrations`: SQL scripts for database schema and fixtures. | ||
- `requirements.txt`: Python package requirements. | ||
- `run.py`: Entry point script. | ||
- `sqli`: Application source code. | ||
- `dao`: Data Access Objects for interacting with the database. | ||
- `middlewares`: Middlewares for handling sessions and error pages. | ||
- `routes`: Routing configuration. | ||
- `schema`: Data validation schemas. | ||
- `services`: Services for setting up database and Redis connections. | ||
- `static`: Static assets (CSS and JavaScript). | ||
- `templates`: HTML templates. | ||
- `utils`: Utility functions. | ||
|
||
|
||
The project demonstrates a well-structured Python web application with clear separation of concerns. Understanding the code flow and purpose of different components is crucial for successfully identifying and exploiting the built-in vulnerabilities. |