Web Application Vulnerabilities Compiled
Web Application Vulnerabilities Compiled
Web applications, also called web apps, are programs that allow users to perform actions online.
Many businesses use these programs to communicate with customers, sell products and improve work
processes. Understanding what a web application is can help you deepen your understanding of the role
technology plays in the workplace.
In this article, we define web applications, list some common functions for these programs,
explain how they work, list some key benefits of using them and share some examples of jobs that
require them.
A web application is a computer program that uses a web browser to perform a particular
function. They are client-server programs, so each program has a client side and a server side. In the
client-server environment, a client is a program an individual uses to run the application, while a server
processes the data needed to run the application for the user. For example, with a database, the client is
the program through which the user enters data and the server is the application that stores the
information.
Websites often host web applications, which allow visitors to perform certain actions when they
visit the site. For example, the website for a shoe company might host an online store application, which
allows shoppers to add products to their carts and submit payments. The company's web administrator
might choose which web applications to add to the site and customize the apps to meet their customers'
needs. A website might host multiple applications, like chat modules, payment pages and interactive
product customization tools.
https://www.indeed.com/career-advice/career-development/what-is-web-application
https://www.ringcentral.com/gb/en/blog/definitions/web-application/
A vulnerability is a weakness or error in a system or device’s code that, when exploited, can
compromise the confidentiality, availability, and integrity of data stored in them through unauthorized
access, elevation of privileges, or denial of service. A code or tool used to take advantage of a
vulnerability is called an exploit.
https://www.upguard.com/blog/vulnerability
https://www.trendmicro.com/vinfo/us/security/definition/Vulnerability
What Are Web Application Vulnerabilities?
https://www.contrastsecurity.com/glossary/application-vulnerability
https://www.acunetix.com/websitesecurity/web-application-attack/
A web application vulnerability is any system flaw that an attacker can exploit to compromise a
web application. Web application vulnerabilities involve a system flaw or weakness in a web-based
application. They have been around for years, largely due to not validating or sanitizing form inputs,
misconfigured web servers, and application design flaws, and they can be exploited to compromise the
application's security.
https://www.checkpoint.com/cyber-hub/cloud-security/what-is-an-application-vulnerability/
Security setting misconfigurations are one of the biggest drivers behind that stat. Web
applications can be attacked because their creators make errors that allow unauthorized people to
access sensitive data or gain administrative access rights to the web application itself or even to the
server.
Web applications are very vulnerable to attacks because they are not designed to be protected
by firewalls.They must be available to everyone, all the time, unless they are on an intranet. Malicious
hackers can, therefore, try to exploit them easily.
https://www.indusface.com/blog/what-is-a-website-vulnerability-and-how-can-it-be-exploited/
Web app vulnerabilities are exploitable when there are no proper security measures in place to
prevent attackers from finding and taking advantage of vulnerabilities. The factors that affect the
exploitability of a vulnerability are the complexity associated with exploitation and the availability of
active/ known exploits.
Based on this, the risk associated with the vulnerability is calculated and vulnerabilities are
categorized into critical, high, medium, and low risk. The critical and high-risk vulnerabilities must be
fixed and protected on a high-priority basis.
80% of exploits were published even before the CVE (Common Vulnerabilities and Exposure)
related to that exploit was made public. This means, instead of organizations steering ahead of
attackers, attackers had the first-mover advantage in most exploits.
https://www.acunetix.com/blog/web-security-zone/secure-coding-practices/
https://www.comparitech.com/blog/information-security/cybersecurity-vulnerability-statistics/
1. SQL Injection
SQL injection is a code injection technique that might destroy your database. Many applications use
Structured Query Language (SQL) to manage communications with the database. SQL vulnerabilities
allow attackers to insert malicious SQL commands to exfiltrate, modify, or delete data. Some hackers
use SQL to gain root access to the target system.
SQL injection attacks target servers that hold critical data used by web applications or services. They are
particularly dangerous when they expose critical or sensitive data, such as user credentials and personal
information. The most common vulnerability enabling SQL injection attacks is using unsanitized user
inputs. It is important to strip out any element in user-supplied inputs that the server could execute as
SQL code
An XSS attack can expose user data without indicating a compromise, impacting business reputation in
the long run. Attackers can steal any sensitive data sent to the infected app, and the users may remain
oblivious.
Here are some of the most common impacts of cross-site scripting attacks:
Account Hijacking
Attackers often steal session cookies in the browser to hijack legitimate user accounts. This allows attackers
to take over the victim's session and access any functionality or sensitive information on their behalf.
Assuming a malicious actor managed to steal the session cookies of an administrative account, the attacker
can gain administrative access to the entire web application.
Credential Theft
One of the most common XSS attack vectors is to use HTML and JavaScript in order to steal user credentials.
Attackers can clone the login page of the web application and then use cross-site scripting vulnerabilities to
serve it to the victims.
When a victim uses the vulnerable web page and inputs their credentials, they are forwarded to a server
under the attacker’s control. This way, attackers can obtain the credentials of a user in plaintext instead of
hacking their session cookies, which may expire.
Data Leakage
Another powerful XSS attack vector is exfiltrating sensitive data, such as social security numbers, personally
identifiable information (PII), or credit card info, and performing unauthorized operations, such as bank
transactions.
Once the attacker has access to the personal or sensitive information of users, they can demand ransom
payments from the organization to delete the data, or leak the information of their customers.
Fortnite
Fortnite — the popular online video game by Epic Games — could face an attack
leading to a data breach in January 2019. The issue was a retired, unsecured
web page with a dangerous cross-site scripting vulnerability that allowed
attackers to get unlimited access to 200 million users. The likely purpose of
attackers is stealing the game’s virtual currency and recording the players’
conversations, which may provide a treasure of useful information for their
future attacks.
eBay
In some cases, depending on the type of action, the attacker can gain full control of
the user’s account. If the compromised user has a privileged role within the
application, the attacker might be able to take full control of all the application’s
functionality and data, which is devastating to both the business and the user. The
result can be data theft, unauthorized fund transfers, damaged client relationships,
changed passwords and many more.
4. Session Fixation
Session fixation is a web-based attack technique where an attacker tricks the user into opening a URL
with a predefined session identifier. Session fixation attacks can allow the attacker to take over a victim’s
session to steal confidential data, transfer funds, or completely take over a user account.
A Session fixation attack is an attack that occurs when a malicious user sets up a fake session before the
legitimate users are able to log in. This leads to the entire system getting compromised and used to steal
sensitive data.
Session Fixation is an attack that permits an attacker to hijack a valid user session. The attack explores a
limitation in the way the web application manages the session ID, more specifically the vulnerable web
application. It involves forcing a user’s session ID to a specified value. Depending on the target web
application’s functionality, attackers may use various techniques to fix session ID values.Examples of
session fixation techniques include cross-site scripting exploits and reusing HTTP requests.
First, an attacker fixes the victim’s user session ID. Then, the user logs in and inadvertently exposes the
online identity. The attacker can then hijack the victim’s user identity using the fixed session ID value.
Any web application that authenticates users with sessions is vulnerable to session fixation attacks
without adequate defenses. Web apps that use session IDs typically use cookies, though they can also
use hidden form fields or URLs. Cookie-based user sessions are the most popular and the easiest to
compromise. Most fixation attacks target cookie-based sessions.
5. Local File Inclusion (LFI)
Local File Inclusion is an attack technique in which attackers trick a web application into either running
or exposing files on a web server. An LFI attack exploits the dynamic file inclusion mechanisms in a web
application. It may occur when a web application takes user input, such as a parameter value or URL,
and passes it to a file inclusion command. An attacker can use this mechanism to trick the app into
including a remote file containing malicious code.
Most web application frameworks enable file inclusion, which is useful primarily to package shared code
into different files for later reference by the application’s main modules. If a web app references a file
for inclusion, it might execute the code in the file explicitly or implicitly (i.e., by calling a specific
procedure). The application could be vulnerable to LFI attacks if the module-to-load choice is based on
HTTP request elements.
Commonly, it’s called Local File Inclusion (LFI) when the vulnerability allows files to be loaded on the
target server and Remote File Inclusion (RFI) when the attacker is able to load remote code in the
application, a technique that increases the chances of malicious code being executed on the target.
Let’s take a closer look at three possible outcomes of local file inclusion:
1. Information disclosure
Although not the worst outcome of a local file inclusion vulnerability, information disclosure can
reveal important information about the application and its configuration. That information can be
valuable to an attacker to gain a deeper understanding of the application and can help them
detect and exploit other vulnerabilities.
2. Directory Traversal
A local file inclusion vulnerability can lead to Directory Traversal attacks, where an attacker will
try to find and access files on the web server to gain more useful information, such as log files.
Log files can reveal the structure of the application or expose paths to sensitive files.
An incorrectly configured server can give attackers access to user config files, giving them
access to other files on your server, or even gain administrator access.
If you want to learn more about directory traversal, we have a great article that covers this
vulnerability in more depth – Directory Traversal: Examples, Testing, and Prevention
6. Security Misconfigurations
A security misconfiguration arises when essential security settings are either not implemented or
implemented with errors. Security misconfigurations are some of the most serious web application
vulnerabilities because they provide attacks with opportunities to infiltrate the application easily.
Attackers could exploit a wide range of security configuration vulnerabilities. These include unchanged
default configurations, data stored in the cloud, ad hoc or incomplete configurations, plaintext error
messages containing sensitive information, and HTTP header misconfigurations. Security
misconfigurations may be present in any operating system, library, framework, or application.
Directory traversal (also known as file path traversal) is a web security vulnerability that allows an
attacker to read arbitrary files on the server that is running an application. Directory traversal attacks, or
backtracking, involve exploiting how the web application receives data from a web server. Web apps
often use Access Control Lists (ACLs) to restrict user access to specific files within the root directory. A
malicious actor can identify the URL format the target application uses for file requests.
Malicious users can use this attack method to access secrets and sensitive information like passwords
and database credentials. They can also exploit the vulnerability to carry out further enumeration of the
system and obtain the information they need to enable a combined attack through vectors like LFI and
RFI.
https://snyk.io/learn/application-security/static-application-security-testing/
Static application security testing (SAST), or static analysis, is a testing methodology that
analyzes source code to find security vulnerabilities that make your organization’s applications
susceptible to attack. Static Application Security Testing (SAST) solutions scan source code for
vulnerabilities and security risks. Many web applications incorporate code scanning at multiple
stages of development, including while committing new code to the codebase and building new
releases.
What is Static Application Security Testing?
SAST is a set of technologies that analyze the application’s code, byte code, and binaries line by
line. As the analyzed code is transparent and available to the tool, Static Application Security
Testing is a white-box testing technique.
It is programming-language dependent.
SAST is usually rules-based and scan results can contain false positives, so the results must be
carefully analyzed and filtered to identify real security issues.
While SAST solutions can detect many common vulnerabilities like XSS, buffer
overflow, and SQL Injection, they are limited to vulnerabilities that occur in the
code itself. Unfortunately, many vulnerabilities in a runtime application do not
actually exist in the code, but only arise when the application is compiled. If you
rely solely on SAST solutions, you may release potentially vulnerable
applications.
Some organizations don’t have access to the application’s source code. This is a
big issue as Static Application Security Testing is complex. For it to function
properly it needs a semantic understanding of the code. This includes the codes’
dependencies, configuration files, etc. and many of other pieces that are always
in motion. Most dependencies aren’t even written in the same programming
language. Can SAST understand all these moving pieces? While also being
swift, accurate, and have a low false-positives rate? Not exactly.
Limitation 3: The need for a different SAST instance for every coding
language
That means all of them require separate maintenance and configuration. This
adds significant overhead.
In addition to requiring a different SAST instance for each coding language used
in an organization, SAST is limited to specific coding languages. While SAST
providers are constantly adding support for new languages, there are some
languages that will never be supported and others where SAST falls short from
providing complete coverage.
JavaScript is the standard programming language of the web, and web is the
most used computing platform ever built. SAST’s inability to work well with
JavaScript represents a significant limitation. There are over 1.6 billion websites
in the world. JavaScript is used in 95% of them.
Another issue with Static Application Security Testing tools is the Microservices
architecture. SAST solutions can’t work in a world of Microservices. That’s a
huge problem as most developers today use microservices architecture.
Microservices architecture is highly maintainable and organized around business
capabilities.
One of the biggest problems with SAST solutions is that they are prone to false
positives. Developers can get results that point out a lot of findings. Only it turns
out most weren’t actually exploitable, or relevant. These results take time to
examine and see if a flaw can damage your application or not.
Dynamic Application Security Testing (DAST) is the process of analyzing a web application
through the front-end to find vulnerabilities through simulated attacks. it can test an
application that is deployed in a staging or production environment, and execute its code to
check for vulnerabilities. Automated DAST tools find vulnerabilities by sending numerous
requests, including unexpected and malicious inputs, to applications, and analyzing the results
to identify security vulnerabilities.
Dynamic application security testing (DAST) is a black-box testing method that scans applications
in runtime. It is applied later in the CI pipeline. DAST is a good method for preventing
regressions and doesn’t depend on a specific programming language.
Manual penetration testers usually perform similar tests to those performed by DAST tools,
using tools like Burp Suite, Fiddler, and Postman.
Types of DAST
Automated DAST
The testing tool uses crawlers and the main URL to scan the application in automated DAST. The
tool will also monitor and audit entire web applications to find critical vulnerabilities. Every
accessed page in the application is logged along with its request and response from the server.
The automated DAST can be configured to check for denial of service and brute force attacks,
too however it will slow the main application or website. Therefore, denial of service and brute
force tests are generally made with the consent of the application owner.
Manual DAST
In manual DAST, the testing is done related to the context of the application. An automated
DAST scan cannot find all the vulnerabilities in the system. Business logic vulnerabilities are
generally out of scope for automated DAST as the automated scan cannot be fine-tuned for
every application. Therefore, manual DAST is used.
The tester has to understand the application in depth which is in the testing scope, and then
create test cases depending on various scenarios which can be breached by a malicious user.
The request sent to the server can be genuine or a crafted one, and the response from the
server is captured manually by proxy tools. Due to this, application-specific manual DAST can
find critical vulnerabilities which cannot be found by automated DAST.
https://www.xenonstack.com/blog/application-testing-dast/
IAST (interactive application security testing) analyzes code for security vulnerabilities while the
app is run by an automated test, human tester, or any activity “interacting” with the application
functionality. IAST solutions combine dynamic testing (similar to DAST tools) with static analysis
(similar to SAST tools) to help identify and manage security risks in web applications.
IAST solutions monitor application execution and gather information about functionality and
performance. They identify vulnerabilities in real time by deploying agents and sensors that
inspect running applications, and continuously analyzing all application interactions. In addition,
many IAST solutions incorporate software configuration analysis (SCA) to identify open source
components and frameworks and discover known vulnerabilities.
Interactive application security testing (IAST) solutions help detect and remediate vulnerabilities
in web applications, as part of an organization’s security testing toolset.
IAST involves using dynamic testing, also known as runtime testing, to monitor application
performance. IAST solutions instrument applications during runtime, using specialized
sensors, to collect operational data and analyze user interactions with the application.
The IAST process can incorporate a combination of automated security tests, customized tests
defined by the organization, or software composition analysis (SCA) to analyze open source
components and find known vulnerabilities.
A penetration test, also known as a pen test, is a simulated cyber attack against your computer
system to check for exploitable vulnerabilities. Penetration testing is a security technique that
combines human security expertise with dynamic scanning tools to find vulnerabilities in web
application security mechanisms.
The term penetration testing (pentesting) refers to processes, tools, and services designed and
implemented for the purpose of simulating attacks and data breaches, and finding security
vulnerabilities. You can run a pentest for a computer system, an entire network, or a web
application.
The main goal of a pentest is to discover vulnerabilities that attackers can exploit. There are
several ways to discover these vulnerabilities. You can opt for manual pentests performed by a
team of white hat hackers, or automated penetration testing performed by a software solution.
The penetration testing process typically involves several phases. First, the tester (or solution)
gathers information about the target and identifies possible entry points. Then, the tester
attempts to breach the tested environment. Finally, the tester compiles a report detailing
vulnerabilities found and suggestions for improving security of the tested environment.
A web application penetration testing process typically performs the following three phases:
Web application penetration testing, also known as pentesting, simulates attacks against your
web applications, to help you identify security flaws and weaknesses so they can be remediated.
You can use penetration tests to detect vulnerabilities across web application components and
APIs including the backend network, the database, and the source code.
A web application penetration testing process provides a detailed report with security insights.
You can use this information to prioritize threats and vulnerabilities and define a remediation
strategy.
Here are the main differences between external and internal pentesting:
External pen testing—attacks the application from the outside. The test
simulates how an external attacker would behave when launching an attack.
You can perform an external pentest to check firewalls and servers.
Internal penetration testing—attacks launched from within the organization.
This is typically performed through LAN connections. The goal is to identify
vulnerabilities that might exist within the firewall, simulating an attack by a
malicious insider.
In addition to location of the attacker, there are other aspects to consider, such as levels of
access and scope of knowledge. Below are three main types of pentesting you can run:
8 Critical Web Application Vulnerabilities and How to Prevent Them. (2022, May 30). Bright
Security. https://brightsec.com/blog/web-application-vulnerabilities/
3 Dangerous Cross-Site Scripting Attacks of the Last Decade. (2020, December). ReadWrite.
https://readwrite.com/3-dangerous-cross-site-scripting-attacks-of-the-last-decade/
SQL Injection Attack: Real Life Attacks and Code Examples. (2022, April 8). Bright Security.
https://brightsec.com/blog/sql-injection-attack/#:~:text=7%2DEleven%20breach%E2%80%94a
%20team,the%20IT%20security%20company’s%20website.
development/preventing-csrf-attacks
community/attacks/xss/
community/attacks/Session_fixation
Local File Inclusion: Understanding and Preventing Attacks. (2021, December 13). Bright
Security. https://brightsec.com/blog/local-file-inclusion-lfi/
https://reciprocity.com/blog/security-misconfigurations-how-to-avoid-them/#:~:text=explore
%20those%20issues.-,What%20Is%20a%20Security%20Misconfiguration%3F,a%20cyber
%20attack%20or%20breach.
What is XXE (XML external entity) injection? Tutorial & Examples | Web Security Academy.
%20entity%20injection%20(also,application’s%20processing%20of%20XML%20data.
What is directory traversal, and how to prevent it? | Web Security Academy. (2022).
Portswigger.net. https://portswigger.net/web-security/file-path-traversal
What Is SAST and How Does Static Code Analysis Work? | Synopsys. (2022). Synopsys.com.
https://www.synopsys.com/glossary/what-is-sast.html
What is Dynamic Application Security Testing (DAST) | Micro Focus. (2019). Microfocus.com.
https://www.microfocus.com/en-us/what-is/dast
What is IAST? Interactive Application Security Testing | Veracode. (2020, December 7).
Veracode. https://www.veracode.com/security/interactive-application-security-testing-iast
What is Penetration Testing | Step-By-Step Process & Methods | Imperva. (2019, December 29).