Server-Side JavaScript Injection
Injection JavaScript côté serveur (Server-Side JavaScript Injection)
Théorie
Définition
L'injection JavaScript côté serveur est une forme spécifique d'injection liée aux bases de données NoSQL. Elle se produit lorsqu'un attaquant parvient à faire exécuter du code JavaScript arbitraire par le serveur dans le contexte de la base de données.
Scénarios d'injection
Injection en bande (in-band) : L'attaquant voit immédiatement les résultats de son injection.
Injection aveugle (blind) : L'attaquant ne voit pas directement les résultats mais peut effectuer des déductions.
Injection hors bande (out-of-band) : Exploitation indirecte, souvent en envoyant les résultats de l’injection vers un canal externe.
Exemple concret
Un serveur utilise une requête avec $where pour vérifier un couple username/password :
.find({
$where: "this.username == \"" + req.body['username'] + "\" && this.password == \"" + req.body['password'] + "\""
});La méthode find()
2. L'opérateur $where
3. Explication de la condition JavaScript
La condition est divisée en plusieurs parties :
4. L'ordre des opérations
L'expression complète devient :
this.username == "" || true && this.password == "" || true
5. Effet de la condition
Last updated