Je commence à apprendre MongoDB et j'étais curieux de savoir s'il était sensible à un type d'attaque par injection similaire à SQLi . En raison de la nature de la base de données, je ne pense pas que vous puissiez y injecter mais ... Quels autres types d'attaques peuvent être exploités contre MongoDB ?
Référence d'objet direct non sécurisé
Application côté client de la sécurité côté serveur
Injection JavaScript côté serveur
MongoDB ne doit pas non plus être évalué par le public. Il peut être protégé par mot de passe et les mots de passe peuvent être forcés par la force brute. Les js côté client peuvent communiquer directement avec MongoDB et MongoDB peut authentifier des utilisateurs individuels. Cependant, leur système d'authentification est trop simpliste, et dans la pratique, je n'ai vu que cette conception échouer.
Il existe des attaques par injection contre MongoDB, mais elles sont largement atténuées par l'utilisation de bibliothèques d'adaptateurs de données appropriées. Néanmoins, il vaut la peine de savoir qu'il est possible d'injecter de plusieurs façons.
La première chose à surveiller est les cas où vous créez dynamiquement un $where
avec JavaScript, en utilisant l'entrée utilisateur. En modifiant leurs entrées, ils peuvent modifier votre requête. Le deuxième problème que vous devez gérer est l'injection d'opérateurs comme $or
(ou les paramètres de ces opérateurs) qui peuvent modifier le comportement de la requête. Ces deux éléments sont atténués en n'utilisant pas de méthodes de style concaténation, mais plutôt en utilisant des bibliothèques qui fonctionnent sur les structures de données (par exemple JSON).
Il peut également être possible d'échapper au $
qui précède un opérateur, afin de fournir des opérateurs alternatifs. Assurez-vous que vous échappez correctement les clés si des données utilisateur y sont utilisées.
Dans l'ensemble, j'éviterais des choses comme NodeJS pour tout ce qui est critique pour la sécurité. Il n'a pas été conçu avec une forme de sécurité en tête, et c'est un projet jeune. Si vous consommez MongoDB dans une autre langue, c'est bien.
Pour plus de détails, voir FAQ de MongoDB .
La première vulnérabilité similaire à l'injection sql peut également être effectuée dans les bases de données mongodb ou nosql. qui serait l'injection mongodb.
Essayez d'exécuter mongodb sur un port différent à la place sur le 27017 par défaut pour éviter l'exposition. Pour les pratiques de sécurité officielles, vous pouvez toujours consulter http://docs.mongodb.org/manual/administration/security/
Il indique les pratiques de sécurité qui devraient être utilisées avec le serveur mongodb.
Injection de Mongodb:
son décrit ici pour php comment l'injection mongodb peut avoir lieu dans phpwebapp si les données côté client ne sont pas filtrées correctement. Solution également à l'injection de mongodb
http://www.idontplaydarts.com/2010/07/mongodb-is-vulnerable-to-sql-injection-in-php-at-least/
Attaque par injection Mongodb Null byte
http://www.idontplaydarts.com/2011/02/mongodb-null-byte-injection-attacks/
Il s'agit également d'un type d'attaque bien écrit sur ce site.Voyez comment certains champs de la collection mongo peuvent être remplacés à l'aide de cette méthode. Cela peut être fait dans n'importe quelle application Web.
L'outil NoSQLMap comprend de nombreuses fonctionnalités qui ciblent directement MongoDB.
https://github.com/tcstool/NoSQLMap
Il existe une vidéo encore meilleure qui montre toutes sortes d'attaques.
Vous constaterez également que NoSQLMap appelle le framework metasploit, par exemple, exploit/linux/misc/mongod_native_helper
Le projet propose également une visualisation de cette conférence DEF CON - https://www.defcon.org/images/defcon-21/dc-21-presentations/Chow/DEFCON-21-Chow-Abusing-NoSQL -Databases.pdf
Un autre outil est le cadre d'exploitation Nosql
https://github.com/torque59/Nosql-Exploitation-Framework
Et encore un autre sur GitHub ici - https://github.com/cyberpunkych/attacking_mongodb
Il s'avère que MongoDB a de mauvaises valeurs par défaut (par exemple, un accès anonyme, /var/mongo/f.txt ou des emplacements de fichiers par défaut, etc.), des paramètres facilement devinés bien que modifiés, et problèmes classiques également comme problèmes Web .