
MongoDBを使用して脆弱なウェブサイトを見つけるためのNoSqlインジェクションCLIツール。
高速なNoSQLスキャナー兼インジェクター。NoSQLインジェクション、特にMongoDBに脆弱なサイトを見つけるためのツールです。
私は、シンプルで使いやすく、完全にコマンドラインベースで設定可能な、より優れたNoSQLインジェクションツールを望んでいました。そのために、Goで書かれたシンプルなNoSQLインジェクションツールであるnosqliの開発を始めました。
高速で正確、かつ高いユーザビリティを目指しており、わかりやすいコマンドラインインターフェースを備えています。
Nosqliは現在、MongoDBに対するNoSQLインジェクション検出をサポートしています。以下のテストを実行します:
お使いのOS用の最新のバイナリバージョンをダウンロードし、パスにインストールするか、ローカルフォルダから実行してください。
データ抽出機能を追加する予定です。その他の機能や設定オプションをご希望の場合は、プルリクエストまたはイシューを開いてください!
コマンドを実行してヘルプファイルを読めば、自明に理解できるはずです。
$ nosqli
NoSQLInjector is a CLI tool for testing Datastores that
do not depend on SQL as a query language.
nosqli aims to be a simple automation tool for identifying and exploiting
NoSQL Injection vectors.
Usage:
nosqli [command]
Available Commands:
help Help about any command
scan Scan endpoint for NoSQL Injection vectors
version Prints the current version
Flags:
--config string config file (default is $HOME/.nosqli.yaml)
-d, --data string Specify default post data (should not include any injection strings)
-h, --help help for nosqli
-p, --proxy string Proxy requests through this proxy URL. Defaults to HTTP_PROXY environment variable.
-r, --request string Load in a request from a file, such as a request generated in Burp or ZAP.
-t, --target string target url eg. http://site.com/page?arg=1
-u, --user-agent string Specify a user agent
Use "nosqli [command] --help" for more information about a command.
$ nosqli scan -t http://localhost:4000/user/lookup?username=test
Running Error based scan...
Running Boolean based scan...
Found Error based NoSQL Injection:
URL: http://localhost:4000/user/lookup?=&username=test
param: username
Injection: username='
私の脆弱なNode.jsアプリや他のNoSQLインジェクションラボを使ってツールをテストできます。
ターゲットURLを選択する際は、テスト可能なすべてのパラメータがURLに含まれていることを確認してください。例えば、あるサイトにフォームで検索するページ/user/lookupがあるとします。フィールドにデータを入力すると、URLは/user/lookup?username=に変わります。/user/lookupのみをスキャンすると、ツールはインジェクションの可能性を見つけられません。正しくスキャンするには、すべてのパラメータを含む完全なURL(この場合は/user/lookup?username=)を使用するようにしてください。
ソースからビルドしたい場合、またはお使いのプラットフォーム用のコンパイル済みバイナリがない場合は、リポジトリをクローンし、依存関係をインストールし、手動でプロジェクトをビルドすることで可能です。これには最新のGoバージョンと適切なGOPATH環境変数が必要です。
$ git clone https://github.com/Charlie-belmer/nosqli
$ cd nosqli
$ go get -u -d ./...
$ go install
$ nosqli -h
適切なテストスイートが含まれています。単体テストと簡単なインジェクションカバレッジは、ルートディレクトリからgo testを使用して実行できます:
go test ./...
統合テストも利用可能で、ローカルで動作している既知の脆弱なアプリに対してインジェクションを実行します。統合テストを使用するには、脆弱なNode.js Mongoインジェクションアプリと、digininjaの私の脆弱なPHPラボフォークをインストールして実行してください。各サイトにアクセスしてDBをリセットするのを忘れずに!その後、integrationsフラグを渡します:
go test ./... -args -integrations=true
いずれかの環境が見つからない場合、テスト実行を高速化するために、いずれかのテストケースによって統合テストが無効になります。
コントリビューションを歓迎します! プルリクエストを送信するか、議論のためにイシューを開いてください。
特に指定がない限り、あなたはnosqliプロジェクトに対して、コントリビュートしたコードを再利用、修正、再ライセンスする無制限かつ非独占的な権利を提供しているものとみなされます。このプロジェクトは常にオープンソースとして利用可能ですが、コードの再ライセンスができないことが他のフリーソフトウェアプロジェクト(KDEやNASMなど)に壊滅的な問題を引き起こしたことがあるため、これは重要です。コントリビューションに特別なライセンス条件を指定したい場合は、送信時にその旨をお知らせください。