hands-on lab

Execute a Stored Cross-Site Scripting (XSS) Attack

Up to 30m
Get guided in a real environmentPractice with a step-by-step scenario in a real, provisioned environment.
Learn and validateUse validations to check your solutions every step of the way.
See resultsTrack your knowledge and monitor your progress.


Cross-site scripting (XSS) is a security vulnerability affecting web applications. XSS allows an attacker to execute scripts on the machines of clients of a targeted web application. This can allow attackers to steal credentials and sessions from clients or deliver malware. The Open Web Application Security Project (OWASP) has included XSS in its top ten list of the most critical web application security risks every year the list has been produced. It reports that XSS vulnerabilities are found in two-thirds of all applications.

This Lab demonstrates a stored cross-site scripting attack. Stored XSS is sometimes referred to as persistent XSS and is the most severe kind of XSS. It results in the web application server storing the malicious script that an attacker injects. You will use a web application that is intentionally vulnerable to illustrate the attack.

You will use the web browser on a Kali Linux host to launch the attack on a web application running on a Metasploitable 2 host. Both hosts are running as virtual machines in a Hyper-V virtual environment.

This Lab is designed for the CREST Practitioner Security Analyst (CPSA) certification examination but is of value to security practitioners in general.

Learning Objectives

Upon completion of this Lab you will be able to:

  • Describe the elements of a cross-site scripting attack
  • Perform basic cross-site scripting attacks
  • Understand how to prevent cross-site-scripting attacks

Intended Audience

This Lab is intended for:

  • CREST CPSA certification examinees
  • Security practitioners
  • Web application developers


You should be familiar with:

  • HTML and JavaScript language basics are beneficial but not required



July 10th, 2020 - Enabled direct browser RDP connection for a streamlined experience


Environment before

Environment after

About the author

Logan Rakai, opens in a new tab
Lead Content Developer - Labs
Learning paths

Logan has been involved in software development and research since 2007 and has been in the cloud since 2012. He is an AWS Certified DevOps Engineer - Professional, AWS Certified Solutions Architect - Professional, Microsoft Certified Azure Solutions Architect Expert, MCSE: Cloud Platform and Infrastructure, Google Cloud Certified Associate Cloud Engineer, Certified Kubernetes Security Specialist (CKS), Certified Kubernetes Administrator (CKA), Certified Kubernetes Application Developer (CKAD), and Certified OpenStack Administrator (COA). He earned his Ph.D. studying design automation and enjoys all things tech.

LinkedIn, Twitter, GitHub

Covered topics

Lab steps

Executing a Stored Cross-site Scripting (XSS) Attack