🚧 Reflected Cross-Site Scripting (XSS) Attack

Beginner
Practice Now

Introduction

In this lab, we will explore the concept of Reflected Cross-Site Scripting (XSS) attacks. The main objective is to understand the mechanism behind Reflected XSS and learn how to prevent such vulnerabilities in web applications. The lab provides a hands-on environment to practice and gain practical experience.

Understanding Reflected XSS

In this step, we will introduce the concept of Reflected XSS and demonstrate its implementation using the DVWA (Damn Vulnerable Web Application) platform.

Reflected XSS, also known as Non-Persistent XSS, is a type of XSS vulnerability where the malicious script is executed by the victim's web browser due to a vulnerability in the web application's handling of user input. Unlike Stored XSS, where the malicious script is stored on the server, Reflected XSS relies on the attacker delivering a malicious script through a crafted URL or web page request.

The DVWA platform is a intentionally vulnerable web application designed for security testing and learning purposes. It provides a safe environment to practice various web vulnerabilities, including XSS.

To begin, follow these steps:

  1. Launch the DVWA virtual machine by executing the following command in your terminal:

    sudo virsh start Metasploitable2
  2. Open a web browser and navigate to http://192.168.122.102 to access the DVWA login page.

  3. Log in with the default credentials (username: admin, password: password).

  4. In the DVWA main menu, set the security level to "Low" by navigating to the "DVWA Security" section.

  5. Go to the "XSS (Reflected)" module under the "Vulnerability" section.

  6. In the input field, enter the following JavaScript code:

    <script>
      alert("Hello, Reflected XSS!");
    </script>
  7. Click the "Submit" button.

You will notice that the script is executed, and an alert box pops up with the message "Hello, Reflected XSS!". This is because the application does not sanitize the user input before reflecting it back to the browser.

To understand the underlying mechanism, you can view the source code of the page by clicking the "View Source" button. You will notice that the application echoes the user input directly without any validation or sanitization.

Preventing Reflected XSS

In this step, we will explore different techniques to prevent Reflected XSS vulnerabilities and understand their effectiveness.

  1. Change the DVWA security level to "Medium" by navigating to the "DVWA Security" section.

  2. Attempt to execute the same JavaScript code as in Step 1 by entering the following in the input field:

    <script>
      alert("Hello, Reflected XSS!");
    </script>
  3. Click the "Submit" button.

You will notice that the script is not executed, and the input is displayed as plain text on the page. This is because the application has implemented a basic input sanitization technique by replacing the <script> tag with an empty string before displaying the user input.

However, this approach is not foolproof. You can bypass this sanitization by using different variations of the <script> tag, such as uppercase or mixed case.

  1. Change the security level to "High" by navigating to the "DVWA Security" section.

  2. Attempt to execute the JavaScript code again using different variations of the <script> tag.

You will notice that none of the variations are executed, and the input is displayed as plain text on the page. This is because the application has implemented a more robust input sanitization technique by using the htmlspecialchars() function, which converts special characters to their corresponding HTML entities.

By inspecting the source code, you will see that the application is using the htmlspecialchars() function to encode the user input before displaying it on the page.

Exploring XSS Attack Vectors

In this step, we will explore different attack vectors that can be used to exploit Reflected XSS vulnerabilities.

  1. Change the DVWA security level to "Low" by navigating to the "DVWA Security" section.

  2. In the input field, enter the following JavaScript code:

    <script>
      alert(document.cookie);
    </script>
  3. Click the "Submit" button.

You will notice that an alert box pops up displaying the current session cookie. This demonstrates how an attacker can steal a user's session cookie and potentially hijack their session or impersonate the user.

  1. Another common attack vector is to execute JavaScript code that redirects the user to a malicious website or perform other malicious actions.

  2. In the input field, enter the following JavaScript code:

    <script>
      window.location = "https://malicious.website";
    </script>
  3. Click the "Submit" button.

You will be redirected to the specified URL (in this case, a hypothetical malicious website).

These examples illustrate the potential impact of Reflected XSS vulnerabilities and the importance of proper input sanitization and validation in web applications.

Summary

In this lab, we explored the concept of Reflected Cross-Site Scripting (XSS) vulnerabilities. We learned how Reflected XSS attacks work by injecting malicious JavaScript code into a vulnerable web application through crafted URLs or web page requests. We used the DVWA platform to understand the implementation and prevention techniques for Reflected XSS.

By practicing in a controlled environment, we gained practical experience in identifying and exploiting Reflected XSS vulnerabilities, as well as implementing effective countermeasures such as input sanitization and output encoding. We also explored different attack vectors and their potential impact, including stealing session cookies and redirecting users to malicious websites.

This lab provided valuable insights into the importance of secure coding practices and the risks associated with improper handling of user input in web applications. The hands-on experience will help us better understand and mitigate Reflected XSS vulnerabilities in real-world scenarios.

Other Tutorials you may like