Code Monkey home page Code Monkey logo

dvgm's Introduction

Damn Vulnerable Grade Management (DVGM) - An Intentionally Vulnerable Rails Application

Damn Vulnerable Grade Management is an intentionally vulnerable grade management application that can be used for teaching security testing and security programming. It aims to be a small application with a realistic use case that contains common vulnerabilities, making it a good target to get started with automatic security testing tools.

Known Vulnerabilities

DVGM contains (at least) the following vulnerabilities:

  • SQL Injection
  • Cross-Site Scripting (XSS)
  • DOM Based XSS / Client Side XSS
  • Missing server-side input validation
  • Insecure HTTP Headers
  • Vulnerable dependencies

Suggested Static and Dynamic Tools

We have tried many different tools to automatically find the vulnerabilities, and found the following tools to work best for this kind of application. While none of them finds all contained vulnerabilities, together they cover a reasonable amount:

Application Scenario

Damn Vulnerable Grade Management implements a simplistic system for managing university grades. Students can upload assignments (pdf), view their grades for their assignments and lectures, download their grades as reports, and add comments to the grades which can be viewed by lecturers. The application knows three roles: admins, lecturers, and students.

  • Admins can create new students, lecturers, and other admins. Admins can create new lectures, held by any lecturer. Admins can also create, view, and edit new grades for all lectures and students and can create, view, and edit comments.
  • Lecturers can create new students. They can also create new lectures that are being held by them. Lecturers can can view grades for all students, but only enter new grades for their own students. Lecturers can see comments for all grades, but can not change any.
  • Students can upload assignments (pdf). They can also view and comment on their grades for their assignments and overall lectures. For their convenience, they have the ability to filter their grade list by a lecturer name.
  • All roles are able to log into the system. They can also reset their password by providing the answer to their chosen security question.

You are Peter, a student and you can log in with peter as username and football as password. Try and see how much information/control you can gain!

Setup

Dependencies

Checkout

The repository can be cloned as usual:

git clone https://git.logicalhacking.com/BrowserSecurity/DVGM.git

Note, if you authorized to access the confidential solutions of the exercises for DVGM, you can obtain them by executing

git submodule update --init --recursive

Installation

After cloning the repository, install the dependencies; bundle will install all dependencies automatically into a project-local directory:

cd DVGM
bundle install --path vendor/bundle

Starting the server

To make exploration of the app a bit easier, we run DVGM in development mode. This means that

  • on errors, rails will return a detailed debug page, and
  • changed source files will automatically be picked up, without needing to restart the server (useful for seeing if your fixes work).

Now, start the server:

bin/rails server

Now, open your browser, go to http://localhost:3000, and start exploring!

Team

License

This project is licensed under the GPL 3.0 (or any later version).

SPDX-License-Identifier: GPL-3.0-or-later

Master Repository

The master git repository for this project is hosted by the Software Assurance & Security Research Team at https://git.logicalhacking.com/BrowserSecurity/DVGM.

dvgm's People

Contributors

adbrucker avatar mherzberg avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.