-: Dans cette conférence
et les prochaines conférences, nous allons parler d'une vulnérabilité appelée XSS.
XSS est l'abréviation de Cross Site Scripting.
Ce type de vulnérabilité permet à
un attaquant d'injecter du JavaScript dans une page.
JavaScript est donc un langage de programmation.
Et en utilisant cette vulnérabilité, un
attaquant pourrait exécuter du code, écrit en
JavaScript, dans une
certaine page d'un
site Web.
JavaScript est un langage côté client,
donc lorsque le code est exécuté, il sera
exécuté sur le client, sur l'utilisateur, sur
la personne qui naviguait sur la page Web.
Il ne sera pas exécuté
sur le serveur, donc même
si votre code vous donne un shell
inversé, le shell proviendra de l'utilisateur
qui parcourt la
page et ne proviendra pas du site Web.
Ainsi, tout code que vous écrivez en JavaScript sera exploité ou
exécuté sur l'utilisateur cible, sur les personnes
qui voient les pages
et ce n'est pas sur le serveur Web.
Ainsi, le serveur Web ne sera utilisé que comme moyen
d'exécuter le code ou de livrer le code.
Il existe trois principaux types de vulnérabilités XSS,
persistantes ou stockées, réfléchies et
basées
sur le DOM.
Le XSS stocké est stocké dans la base de données, de sorte
que le code que vous injectez sera stocké dans la base de
données ou dans
la page, de sorte qu'à chaque fois que toute personne visualise
cette page, votre code sera exécuté.
Celui de Reflected,
le code ne sera exécuté
que lorsque l'utilisateur cible exécutera une URL spécifique
créée ou écrite par vous.
Ainsi, vous manipulerez une sorte d'URL et
l'enverrez à une cible et
lorsqu'ils exécuteront cette
cible, lorsqu'ils exécuteront cette URL, le code sera exécuté.
Les résultats basés sur DOM à partir du code JavaScript écrit sur
le client.
Ainsi, le code sera réellement
interprété et exécuté côté
client sans aucune communication avec le serveur Web.
Ceux-ci peuvent être
très dangereux car parfois les serveurs Web appliquent une sorte
de sécurité et de filtrage pour vérifier XSS.
Mais avec le DOM, le code n'est jamais envoyé au
serveur Web.
Ainsi, le code sera interprété et exécuté sur le navigateur
Web sans même interagir avec le serveur Web.
Et ceux-ci seront présents dans les sites Web qui
mettent à jour leur contenu sans actualisation.
Nous avons donc tous utilisé des sites Web où vous mettez votre
nom d'utilisateur,
par exemple, et il
se charge immédiatement sans avoir à vérifier auprès du serveur Web, ou
vous le faites, vous mettez une sorte
de chaîne et il effectue une recherche sans communiquer avec un serveur
Web ou fait quelque chose sans communiquer avec le serveur Web.
Donc, si vous pouvez injecter dans cela,
alors cette injection ne sera pas validée,
elle sera donc exécutée immédiatement et
contournera toutes les validations.