cyber:vulnerabilite:javascript_authentification
Différences
Ci-dessous, les différences entre deux révisions de la page.
cyber:vulnerabilite:javascript_authentification [2025/07/29 14:12] – créée admin | cyber:vulnerabilite:javascript_authentification [2025/07/29 14:17] (Version actuelle) – admin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== JavaScript - Authentification ====== | ====== JavaScript - Authentification ====== | ||
+ | ===== Description ===== | ||
+ | **L' | ||
+ | |||
+ | ===== Pré-requis d' | ||
+ | |||
+ | Pour exploiter cette famille de vulnérabilité, | ||
+ | |||
+ | ==== Connaissances nécessaires ==== | ||
+ | * Connaissances de base du langage JavaScript ; | ||
+ | * Connaissances en matière de sécurité liée à l' | ||
+ | |||
+ | ==== Outils nécessaires ==== | ||
+ | * Avoir accès à une console de navigateur (Firefox, Chrome). | ||
+ | |||
+ | ===== Flux d' | ||
+ | ==== Explorer ==== | ||
+ | |||
+ | Naviguer sur l’application afin d’identifier le/les script(s) d' | ||
+ | |||
+ | ==== Expérimenter ==== | ||
+ | |||
+ | Tester les champs de formulaire d' | ||
+ | |||
+ | ==== Exploiter ==== | ||
+ | |||
+ | ===== Conséquences potentielles ===== | ||
+ | |||
+ | Une exploitation réussie de ce type de vulnérabilité peut permettre : | ||
+ | * L' | ||
+ | * L' | ||
+ | |||
+ | ===== Contre-mesures ===== | ||
+ | |||
+ | Les contre-mesures suivantes peuvent être mises en œuvre : | ||
+ | * Utiliser une base de données ou un service d' | ||
+ | * Chiffrer les mots de passe avant de les stocker dans la base de données ou le service d' | ||
+ | * Utiliser l' | ||
+ | |||
+ | ====== Comment cela fonctionne | ||
+ | Les scénarios suivants peuvent être joués via l’exploitation de cette vulnérabilité : | ||
+ | -* Retrouver les identifiants de connexion en clair à partir du script d’authentification. | ||
+ | -* Obtenir un accès sur l' | ||
+ | |||
+ | ===== Exemple 1 ===== | ||
+ | |||
+ | |||
+ | Voici un exemple d'un script vérifiant un identifiant et un mot de passe en clair : | ||
+ | |||
+ | <code javascript> | ||
+ | function login() { | ||
+ | if (username == ' | ||
+ | window.location = '/ | ||
+ | } else { | ||
+ | window.location = '/ | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Exemple 2 ===== | ||
+ | |||
+ | Voici un exemple d'un script d' | ||
+ | |||
+ | <code javascript> | ||
+ | // Tableau contenant les noms d' | ||
+ | const users = [ | ||
+ | { | ||
+ | username: ' | ||
+ | password: ' | ||
+ | }, | ||
+ | { | ||
+ | username: ' | ||
+ | password: ' | ||
+ | } | ||
+ | ]; | ||
+ | |||
+ | // Récupération des champs de formulaire de connexion | ||
+ | const usernameField = document.getElementById(' | ||
+ | const passwordField = document.getElementById(' | ||
+ | const loginButton = document.getElementById(' | ||
+ | |||
+ | // Fonction qui vérifie si les champs de formulaire sont remplis et active le bouton de connexion si c'est le cas | ||
+ | function checkForm() { | ||
+ | if (usernameField.value && passwordField.value) { | ||
+ | loginButton.disabled = false; | ||
+ | } else { | ||
+ | loginButton.disabled = true; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Écouteurs d' | ||
+ | usernameField.addEventListener(' | ||
+ | passwordField.addEventListener(' | ||
+ | |||
+ | // Écouteur d' | ||
+ | loginButton.addEventListener(' | ||
+ | event.preventDefault(); | ||
+ | |||
+ | // Vérification de l' | ||
+ | const user = users.find(u => u.username === usernameField.value && u.password === passwordField.value); | ||
+ | |||
+ | if (user) { | ||
+ | // Connexion réussie, redirection vers la page flag | ||
+ | window.location.replace('/ | ||
+ | } else { | ||
+ | // Afficher un message d' | ||
+ | alert(' | ||
+ | } | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | ====== Références ====== | ||
+ | URL : | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | ====== Retour fiches vulnérabilités ====== | ||
+ | * [[cyber: | ||
cyber/vulnerabilite/javascript_authentification.1753791138.txt.gz · Dernière modification : 2025/07/29 14:12 de admin