What is stored XSS? – Boulevard de la Sécurité

0

An introduction to the vulnerabilities of Stored Cross-Site Scripting (XSS)

photo by RoonZ to Unsplash

Cross-Site Scripting, or XSS, is one of the most common vulnerabilities threatening web applications today. It is so prevalent in modern applications that it has been consistently named as one of the top ten vulnerabilities in OWASP. Today we’re going to find out what XSS vulnerabilities are, what stored XSSs – the most dangerous type of XSS – are and how to avoid them.

What is XSS?

XSS is when an attacker can execute malicious scripts on a victim’s browser.

Most of the time, applications use user input to create web pages. And if that application cannot differentiate between user input and the legitimate code that makes up a web page, attackers can submit an entry in executable scripts format and have it executed by the victim’s browser.

The victim’s browser will then execute the malicious script, believing it to be the legitimate code of the web page. These scripts (Javascript, VBScript, etc.) can be used to steal cookies, disclose personal information, modify site content, or redirect the user to a malicious site.

There are three main types of XSS: Stored XSS, Reflected XSS, and XSS DOM. The difference between these cross-site scripting flaws is in the way the malicious code is delivered to the victim. Today we’re going to focus on the most dangerous type of cross-site scripting: Stored XSS.

What is a stored XSS?

Stored XSS occurs when the XSS payload, or malicious script, is stored on a server before being picked up by the victim’s browser.

When an application accepts user input, stores it on its servers, and uses it to create web pages without proper precautions, malicious JavaScript code can find its way into the database and then into browsers. the victims.

For example, let’s say that an Internet forum allows users to post comments. When a user submits a comment to a post, that user input is rendered on the web page that is served to anyone who views that blog post. Normally, users would submit text comments like these:

Vickie: Thanks for this great post!
Ben: I think this topic is more...
Jo: Appreciate the discussion, in this case...

But now what if an attacker submits a comment like this?

This comment contains the syntax of the JavaScript code. indicates to the browser that the content contained in the tags should be interpreted as JavaScript code and not as plain text. Thus, if an attacker submits a comment with JavaScript code, he can have this code executed by the browser of any user who views this blog post! The JavaScript code alert (“XSS by Vickie”) will generate a pop-up window on the victim’s browser stating “XSS by Vickie”. Each time a user posts the comment on the forum, their browser executes the built-in JavaScript. This is called a Stored Cross-Site Scripting, or Stored XSS, because the payload is first stored on the server before being retrieved by the victim’s browser.

During a stored XSS attack, attackers save their malicious scripts on the target application’s server and wait for victims to access them. Every time the users access the page, the malicious script is executed in their browser. Stored XSS tends to be the most dangerous type of XSS, as attackers can attack many victims with a single payload. And during a stored XSS attack, all the user has to do to become a victim is view a page with the payload built in, while thoughtful and DOM XSS usually require the victim to click on a malicious link. .

How can I prevent XSS?

So how could you prevent XSS?

First of all, remember that you should never trust user-submitted entries! To prevent XSS, you need to make sure that user-submitted entries do not contain dangerous characters that could influence the way browsers interpret information on your web page. You can do this by implementing robust input validation and output escaping.

You can to validate user input and reject the input that might contain malicious payloads. For example, a user entry containing the string ”

Vous pouvez également échapper caractères spéciaux dans l'entrée d'un utilisateur avant de l'afficher sur une page Web. Échapper signifie coder des caractères spéciaux afin qu'ils soient interprétés littéralement au lieu d'être un caractère spécial par le pro-
gramme. Par exemple, les crochets angulaires gauche et droit peuvent être codés en caractères HTML < et > afin qu'ils ne soient pas considérés comme des balises réelles en HTML. Outre les crochets angulaires , vous devez échapper les caractères qui ont une signification particulière en HTML, tels que le caractère &, les guillemets simples et doubles et le caractère barre oblique. De nombreux frameworks JavaScript modernes tels que React et Angular le font automatiquement pour vous, de sorte que de nombreuses vulnérabilités XSS peuvent être évitées en choisissant le bon framework JavaScript à utiliser.

Il existe également des moyens de limiter les dommages qu'un attaquant peut causer si un bogue XSS se produit. Pour empêcher les attaquants de voler les cookies des utilisateurs via des attaques XSS, vous devez également définir l'indicateur HttpOnly sur les cookies sensibles sur votre site. Enfin, vous pouvez demander au navigateur d'exécuter uniquement les scripts d'une liste de sources en utilisant l'en-tête de réponse HTTP Content-Security-Policy.

Mais que pouvez-vous faire contre les vulnérabilités XSS qui existent déjà dans votre code ? Vous pouvez les détecter en scannant votre code avec un outil d'analyse statique (SAST) et les corriger avec l'une des stratégies que j'ai mentionnées dans cet article. L'analyse de code ou l'analyse statique peut identifier les points de votre application où la protection XSS est manquante et constitue le moyen le plus efficace de découvrir XSS dans vos applications. L'outil d'analyse statique de ShiftLeft NG-SAST peut trouver les bugs de script inter-sites dans votre code et vous aider à les corriger. En savoir plus en nous rendant visite ici.

Merci d'avoir lu! Quelle est la partie la plus difficile du développement de logiciels sécurisés pour vous ? J'aimerais savoir. N'hésitez pas à vous connecter sur Twitter @vickieli7.


Qu'est-ce que le XSS stocké ? a été initialement publié dans ShiftLeft Blog sur Medium, où les gens poursuivent la conversation en mettant en évidence et en répondant à cette histoire.

*** Ceci est un blog syndiqué Security Bloggers Network de ShiftLeft Blog - Moyen écrit par Vickie Li. Lire le message original sur : https://blog.shiftleft.io/what-is-stored-xss-b3cb18841cfb?source=rss----86a4f941c7da---4



Source link

Leave A Reply

Your email address will not be published.