Ethical-hacking-sql-injection
倫理的ハッキング-SQLインジェクション
SQLインジェクションは、Webアプリケーションに接続されているデータベースから必要な応答を取得するために、URL文字列またはデータ構造に配置される一連のSQLコマンドです。 このタイプの攻撃は通常、PHPまたはASP.NETを使用して開発されたWebページで発生します。
SQLインジェクション攻撃は、次の意図で行うことができます-
- システムのデータベース全体をダンプするには、
- データベースの内容を変更するには、または
- アプリケーションで許可されていないさまざまなクエリを実行します。
この種の攻撃は、アプリケーションが入力を適切に検証せずに、SQLステートメントに渡す前に機能します。 注入は通常、アドレスバー、検索フィールド、またはデータフィールドに配置されます。
WebアプリケーションがSQLインジェクション攻撃に対して脆弱かどうかを検出する最も簡単な方法は、文字列に「」文字を使用して、エラーが発生するかどうかを確認することです。
例1
いくつかの例を使用して、この概念を理解してみましょう。 次のスクリーンショットに示すように、「名前」フィールドに「」文字を使用しました。
次に、[ログイン]ボタンをクリックします。 それは次の応答を生成する必要があります-
これは、「名前」フィールドがSQLインジェクションに対して脆弱であることを意味します。
例2
このURLがあります- http://10.10.10.101/mutillidae/index.php?page = site-footer-xssdiscussion.php
変数「page」をテストしますが、文字列URLに「」文字を挿入した方法を観察します。
Enterキーを押すと、エラーのある次の結果が生成されます。
SQLMAP
SQLMAPは、SQLインジェクションを検出するために利用できる最高のツールの1つです。 [[1]]
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ディストリビューションで利用可能な別のSQLインジェクションツールです。
JSQLインジェクション
JSQLインジェクションはJavaであり、自動化されたSQLインジェクションを行います。
クイックヒント
WebアプリケーションをSQLインジェクション攻撃から防ぐには、次の点に留意する必要があります-
- データベースへの未チェックのユーザー入力は、アプリケーションGUIを通過できません。
- アプリケーションに渡されるすべての変数は、サニタイズおよび検証される必要があります。
- データベースに渡されるユーザー入力は引用符で囲む必要があります。