Détection d’une injection NoSQL
Detecting NoSQL injection
Objectif du laboratoire
Ce laboratoire contient une application e-commerce dont le filtre de catégories repose sur une base de données MongoDB (NoSQL). Une vulnérabilité d’injection NoSQL permet d’afficher des produits non publiés.
L’objectif est d’exploiter cette vulnérabilité afin de forcer l’application à retourner tous les produits, y compris ceux qui ne devraient pas être visibles.
Contexte de l’application
Page e-commerce avec un filtre par catégorie.
Exemple de requête normale

Identification de la vulnérabilité
Lorsque l’on ajoute une apostrophe à la fin du paramètre category, le serveur retourne une erreur interne :

Cette erreur révèle plusieurs éléments importants :
Le backend utilise MongoDB.
Les entrées utilisateur sont interprétées dans un contexte JavaScript côté base de données.
L’application est vulnérable à une injection NoSQL.
Exploitation de l’injection NoSQL
L’objectif est de manipuler la condition utilisée dans la requête MongoDB afin qu’elle soit toujours vraie.
Exemples de payloads testés :
Ces expressions forcent la condition à être vraie, ce qui provoque l’affichage de tous les produits, y compris ceux non publiés

Payloads non fonctionnels (à titre de comparaison)
Ces conditions sont évaluées comme fausses et ne retournent aucun produit

Mis à jour