倫理的ハッキング-SQLインジェクション
SQLインジェクションは、Webアプリケーションに接続されているデータベースから必要な応答を取得するために、URL文字列またはデータ構造に配置されるSQLコマンドのセットです。このタイプの攻撃は通常、PHPまたはASP.NETを使用して開発されたWebページで発生します。
SQLインジェクション攻撃は、次の意図で実行できます。
システムのデータベース全体をダンプするには、
データベースの内容を変更するには、または
アプリケーションで許可されていないさまざまなクエリを実行するため。
このタイプの攻撃は、アプリケーションが入力をSQLステートメントに渡す前に、入力を適切に検証しない場合に機能します。インジェクションは通常、アドレスバー、検索フィールド、またはデータフィールドに配置されます。
WebアプリケーションがSQLインジェクション攻撃に対して脆弱であるかどうかを検出する最も簡単な方法は、文字列で「 '」文字を使用して、エラーが発生するかどうかを確認することです。
例1
いくつかの例を使用して、この概念を理解してみましょう。次のスクリーンショットに示すように、[名前]フィールドに「 '」文字を使用しました。
次に、をクリックします Loginボタン。次の応答が生成されるはずです-
これは、「名前」フィールドがSQLインジェクションに対して脆弱であることを意味します。
例2
このURLがあります- http://10.10.10.101/mutillidae/index.php?page=site-footer-xssdiscussion.php
そして、変数「page」をテストしたいのですが、文字列URLに「 '」文字を挿入した方法を観察します。
Enterキーを押すと、エラーのある次の結果が生成されます。
SQLMAP
SQLMAPは、SQLインジェクションを検出するために利用できる最高のツールの1つです。からダウンロードできますhttp://sqlmap.org/
Kaliディストリビューションでプリコンパイルされています。これは、-アプリケーション→データベース評価→Sqlmapにあります。
SQLMAPを開いた後、SQLインジェクションがあるページに移動し、ヘッダーリクエストを取得します。ヘッダーから、SQLで次のコマンドを実行します-
./sqlmap.py --headers="User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:25.0)
Gecko/20100101 Firefox/25.0" --cookie="security=low;
PHPSESSID=oikbs8qcic2omf5gnd09kihsm7" -u '
http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#' -
level=5 risk=3 -p id --suffix="-BR" -v3
次のスクリーンショットに示すように、SQLMAPはすべての変数をテストし、結果はパラメーター「id」が脆弱であることを示します。
SQLNinja
SQLNinjaは、Kaliディストリビューションで利用できるもう1つのSQLインジェクションツールです。
JSQLインジェクション
JSQLインジェクションはJavaであり、自動化されたSQLインジェクションを作成します。
クイックヒント
WebアプリケーションがSQLインジェクション攻撃を受けないようにするには、次の点に注意する必要があります。
チェックされていないデータベースへのユーザー入力は、アプリケーションGUIを通過させないでください。
アプリケーションに渡されるすべての変数は、サニタイズおよび検証する必要があります。
データベースに渡されるユーザー入力は引用符で囲む必要があります。