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