MongoDB Lab noSQL injection
username[$ne]=toto&password[$ne]=toto
login[$regex]=.*&pass[$regex]=.*Ce que ça fait :
Cible un utilisateur précis (admin@mangomail.com, %40 étant le caractère encodé pour @).
La condition password[$ne]=x signifie "le mot de passe n’est pas égal à 'x'".
Si l'entrée n'est pas validée correctement, MongoDB interprète cette requête comme :
{ email: "admin@mangomail.com", password: { $ne: "x" } }
Si le mot de passe de l'admin n'est pas "x", la requête réussit, et l'accès peut être accordé de manière non autorisée.Ce que ça fait :
Les champs email et password sont fournis comme chaînes vides.
L'opérateur $gt (greater than) vérifie si les valeurs sont "supérieures à" l'entrée donnée. Comme toute chaîne est "supérieure" à une chaîne vide dans l'ordre lexicographique, cette condition peut correspondre à presque tous les enregistrements.
Interprétation de la requête :
{ email: { $gt: "" }, password: { $gt: "" } }
Cela correspond à tous les utilisateurs ayant un email et un mot de passe non vides.Last updated