私はMongoDBを学び始めており、 SQLi のような何らかのタイプのインジェクション攻撃の影響を受けやすいかどうか知りたいと思っていました。 DBの性質上、注入することはできません考えませんが... MongoDBに対して他のどのような種類の攻撃を利用できますか?
また、MongoDBは一般に公開されるべきではありません。パスワードで保護したり、パスワードをブルートフォースで強制することができます。クライアント側のjsはMongoDBと直接通信でき、MongoDBは個々のユーザーを認証できます。ただし、それらの認証システムは非常に単純化されており、実際には、この設計が失敗するのを目にしただけです。
MongoDBに対するインジェクション攻撃がありますが、これらは主に適切なデータアダプターライブラリを使用することで軽減されます。それでも、いくつかの方法で注入できることを知っておく価値があります。
最初に注意する必要があるのは、ユーザー入力を使用して、JavaScriptで$where
を動的に構築する場合です。入力を変更することにより、クエリを変更できる場合があります。処理しなければならない2番目の問題は、クエリの動作を変更する可能性がある$or
などの演算子(またはそのような演算子へのパラメーター)の注入です。これらはどちらも、連結スタイルのメソッドを使用するのではなく、データ構造で機能するライブラリ(JSONなど)を使用することで軽減されます。
代替演算子を提供するために、演算子の前にある$
をエスケープすることもできます。ユーザーデータがキーで使用されている場合は、キーを適切にエスケープしていることを確認してください。
全体として、セキュリティが重要な場合はNodeJSのようなものは避けます。セキュリティを考慮して設計されたものではなく、若いプロジェクトです。別の言語からMongoDBを使用している場合は、問題ありません。
詳しくは MongoDBのFAQ をご覧ください。
SQLインジェクションに類似した最初の脆弱性は、mongodbまたはnosqlデータベースでも発生する可能性があります。これはmongodbの注入です。
公開を避けるために、デフォルトの27017ではなく別のポートでmongodbを実行してみてください。公式のセキュリティ慣行については、いつでもチェックできます http://docs.mongodb.org/manual/administration/security/
これは、mongodbサーバーで使用する必要があるセキュリティプラクティスを示します。
Mongodbインジェクション:
クライアント側のデータが適切にフィルタリングされていない場合に、phpwebappでmongodbインジェクションがどのように行われるかについては、phpで詳しく説明しています。 mongodb注入の解決策も
http://www.idontplaydarts.com/2010/07/mongodb-is-vulnerable-to-sql-injection-in-php-at-least/
Mongodb Nullバイトインジェクション攻撃
http://www.idontplaydarts.com/2011/02/mongodb-null-byte-injection-attacks/
これもこのサイトでよく書かれているタイプの攻撃です。このメソッドを使用してmongoコレクションの特定のフィールドをどのように上書きできるかを確認してください。これはどのWebアプリケーションでも実行できます。
NoSQLMapツールには、MongoDBを直接対象とする多くの機能が含まれています。
https://github.com/tcstool/NoSQLMap
あらゆる種類の攻撃を示す、より優れたビデオがあります。
また、NoSQLMapがmetasploit-frameworkを呼び出すこともわかります。たとえば、exploit/linux/misc/mongod_native_helper
プロジェクトは、このDEF CONトークの視聴も提案しています https://www.defcon.org/images/defcon-21/dc-21-presentations/Chow/DEFCON-21-Chow-Abusing-NoSQL -Databases.pdf
別のツールはNosql Exploitation Frameworkです
https://github.com/torque59/Nosql-Exploitation-Framework
そして、GitHubのさらに別の場所- https://github.com/cyberpunkych/attacking_mongodb
MongoDBにはいくつかの不適切なデフォルト(たとえば、匿名アクセス、/ var/mongo/f.txt、またはデフォルトのファイルの場所など)、変更された設定ではあるが容易に推測できる、そして クラシックな問題 もあることが判明 webの問題 として。