CAPECattack pattern
CAPEC-592 Stored XSS
Very High
Official page ↗
- Abstraction
- Detailed
- Status
- Stable
- Likelihood of attack
- High
- Typical severity
- Very High
- CAPEC version
- 3.9
Description
An adversary utilizes a form of Cross-site Scripting (XSS) where a malicious script is persistently "stored" within the data storage of a vulnerable web application as valid input.
Extended description
Initially presented by an adversary to the vulnerable web application, the malicious script is incorrectly considered valid input and is not properly encoded by the web application. A victim is then convinced to use the web application in a way that creates a response that includes the malicious script. This response is subsequently sent to the victim and the malicious script is executed by the victim's browser. To launch a successful Stored XSS attack, an adversary looks for places where stored input data is used in the generation of a response. This often involves elements that are not expected to host scripts such as image tags (<img>), or the addition of event attributes such as onload and onmouseover. These elements are often not subject to the same input validation, output encoding, and other content filtering and checking routines.
Execution flow
1. [Explore] [Survey the application for stored user-controllable inputs] Using a browser or an automated tool, an adversary follows all public links and actions on a web site. They record all the links, the forms, the resources accessed and all other potential entry-points for the web application. The adversary is looking for areas where user input is stored, such as user profiles, shopping carts, file managers, forums, blogs, and logs.
2. [Experiment] [Probe identified potential entry points for stored XSS vulnerability] The adversary uses the entry points gathered in the "Explore" phase as a target list and injects various common script payloads and special characters to determine if an entry point actually represents a vulnerability and to characterize the extent to which the vulnerability can be exploited.
3. [Experiment] [Store malicious XSS content] Once the adversary has determined which stored locations are vulnerable to XSS, they will interact with the web application to store the malicious content. The adversary can have many goals, from stealing session IDs, cookies, credentials, and page content from a victim.
4. [Exploit] [Get victim to view stored content] In order for the attack to be successful, the victim needs to view the stored malicious content on the webpage.
Prerequisites
• An application that leverages a client-side web browser with scripting enabled.
• An application that fails to adequately sanitize or encode untrusted input.
• An application that stores information provided by the user in data storage of some kind.
Skills required
• [Medium] Requires the ability to write scripts of varying complexity and to inject them through user controlled fields within the application.
Consequences
• Confidentiality: Read Data
• Confidentiality, Authorization, Access Control: Gain Privileges
• Confidentiality, Integrity, Availability: Execute Unauthorized Commands
• Integrity: Modify Data
Mitigations
• Use browser technologies that do not allow client-side scripting.
• Utilize strict type, character, and encoding enforcement.
• Ensure that all user-supplied input is validated before being stored.
Related
Child of · CAPEC (1)
- CAPEC-63 Cross-Site Scripting (XSS) attack pattern
Weakness · CWE (1)
- CWE-79 Improper Neutralization of Input During Web Page Generation weakness
Referenced by CAPEC · can precede (2)
Referenced by CAPEC · child of (10)
- CAPEC-18 XSS Targeting Non-Script Elements attack pattern
- CAPEC-198 XSS Targeting Error Pages attack pattern
- CAPEC-199 XSS Using Alternate Syntax attack pattern
- CAPEC-209 XSS Using MIME Type Mismatch attack pattern
- CAPEC-243 XSS Targeting HTML Attributes attack pattern
- CAPEC-244 XSS Targeting URI Placeholders attack pattern
- CAPEC-245 XSS Using Doubled Characters attack pattern
- CAPEC-247 XSS Using Invalid Characters attack pattern
- CAPEC-32 XSS Through HTTP Query Strings attack pattern
- CAPEC-86 XSS Through HTTP Headers attack pattern
Referenced by CWE · attack pattern (1)
- CWE-79 Improper Neutralization of Input During Web Page Generation weakness