Security-testing-testing-injection
提供:Dev Guides
セキュリティテスト-インジェクション
インジェクション手法は、アプリケーションの入力フィールドを使用してSQLクエリまたはコマンドをインジェクトすることで構成されます。
Webアプリケーション-インジェクション
SQLインジェクションが成功すると、データベースから機密データを読み取って変更したり、データベースからデータを削除したりできます。 また、ハッカーはDBMSのシャットダウンやデータベースの削除など、データベースで管理操作を実行できます。
単純な図を使用して、この欠陥の脅威エージェント、攻撃ベクトル、セキュリティの弱さ、技術的影響、ビジネスへの影響を理解しましょう。
例
アプリケーションは、以下の脆弱なSQLコールの構築に信頼できないデータを使用します-
String query = "SELECT * FROM EMP WHERE EMPID = '" + request.getParameter("id") + "'";
ハンズオン
- ステップ1 *-以下に示すように、アプリケーションのSQLインジェクションエリアに移動します。
- ステップ2 *-演習で示したように、文字列SQLインジェクションを使用して認証をバイパスします。 SQLインジェクションを使用して、正しいパスワードを使用せずにボス(「ネビル」)としてログインします。 Nevilleのプロファイルを表示できること、およびすべての機能(検索、作成、削除など)が使用可能であることを確認します。
- ステップ3 *-パラメータを 'a' = 'a’または1 = 1として送信してパスワードをバイパスできるようにSQLを挿入します
- ステップ4 *-悪用後、以下に示すように管理者であるネヴィルとしてログインできます。
SQLインジェクションの防止
SQLインジェクションを防ぐ方法はたくさんあります。 開発者は、コードを記述するときに、それに応じて特殊文字を処理することを確認する必要があります。 OWASPから利用可能なチートシート/防止テクニックがあります。これは開発者向けのガイドです。
- パラメータ化されたクエリの使用
- すべてのユーザー指定入力のエスケープ
- エンドユーザーに対してデータベースの最小特権を有効にする