Introduction
Last updated on: 27 August 2024
Edit this page on GitHubLast updated on: 27 August 2024
Edit this page on GitHubWith thanks to
Ninoslava Bogdanović
Michał “czesiek” Czyżewski (https://czesiek.net)
Yana Ghahramanyan
There are many ways in which adversaries could try to attack websites, including:
Web application security is a deep domain of technical knowledge with many areas of specialization. This learning path will provide you with a general understanding of web application vulnerabilities and how some of the more common ones work. It should help you understand the types of vulnerabilities that commonly exist in web applications, capabilities that these vulnerabilities give to attackers, and how, in general, to eliminate or mitigate these vulnerabilities.
What is a web application?
Web applications refer to a broader category of software which runs dynamic services available through the web. A web page is a type of web application, though a static HTML page would not generally be considered one. Web applications typically involve some kind of client-side and/or server side data processing, storage, retrieval, with dynamic content. They generally rely on infrastructure, such as databases, additional servers, or cloud services (including ‘serverless code’). Common CMS platforms such as WordPress or Drupal are web applications. Many organizations deploy various applications to serve internal or external functionalities such as a members database, a constituent relationship management tool, a health information system, a ticketing system, internal operational tools, and many more. Some organizations will develop their own custom web applications fit for their own purposes. Major internet service platforms like MailChimp, Slack, Canva, X, etc, are all web applications as well, and their security affects their users as well, however such large entities have their own security teams and bug bounty programs which conducts or encourages professional web application security reviews for them. Smaller organizations which you may be working for, on the other hand, often do not have the resources to conduct web application security reviews and you may be the first to do so.
What are vulnerabilities?
There are many sorts of flaws that can appear in any complicated system. Typically we think of these as regular bugs where the system allows its users to do less than was intended. Something like “when I click ‘add to cart,’ the website just returns an error page.” However, some flaws allow users to do more than was intended. When these flaws negatively impact the system or its other users, we consider these flaws to be vulnerabilities. Examples of vulnerabilities include flaws that would allow one user to read or modify other users’ data, take control of a website’s underlying infrastructure, deny use of a system for other users, etc. In thinking about vulnerabilities, it’s helpful to group them by type. This learning path provides an overview of common web application vulnerabilities classes and how an attacker might use them to harm a website or its users.
Practitioners will learn the fundamental concepts of web application security, providing the background required to pursue further topics in web application security. Practitioners will be able to understand the key concepts of web application security, including:
To complete this learning path, we’ll be using a website called DVWA (Damn Vulnerable Web App). DVWA is a web application that’s intentionally vulnerable to various vulnerabilities. It requires minimal setup to use and is available online for a zero-setup experience.
There are several ways of running DVWA. The best current installation instructions can be found on the DVWA GitHub repository. As is highlighted in the _Warning _section on that page, DVWA should not be installed in a way which exposes it to the open internet. Options for running it include:
Before starting any of the exercises, remember to log into DVWA (the default credentials are admin / password) and make sure that the security level is set to “Low”.
One practice exercise requires you to install and use a tool known as rainbowcrack. Due to its high system requirements and the fact that the tool only works on Linux and Windows, we have opted to make this exercise optional. Since the main purpose of this exercise is to illustrate a security concept, learners who cannot or do not want to complete it will still be able to finish the whole learning path.
One optional exercise requires working knowledge of basic Python and a Python installation. This exercise can be skipped for learners who are not familiar with Python or who do not have it installed on their systems.
This learning path provides an internally-consistent, self-contained guide to web application security. It is meant to be read in a few short sittings, and provide you the background required to pursue deeper learning into web application security. Suggested follow-on learning paths include:
Congratulations on finishing the introduction!
Mark the checkbox to confirm you have read the introduction and continue to the next module.
Marks the introduction as completed and saves the progress for the user.
You've completed all modules in this learning path.