sqlmap チートシート
SQLマップ をチェックする無料ツールです データベースの脆弱性 。 Web サイトを運営している場合、さまざまな SQL ベースのハッカー攻撃に対して脆弱であり、サイトの多くの機能の背後にあるデータベースが侵害される可能性があります。ハッカーがネットワークに侵入してエンドポイントに感染した場合、SQL インジェクション技術を使用して、サポートされているデータベースを侵害することもできます。 バックオフィス機能 。
データベースはビジネス情報システムの中心にあります。 ERP システムと店舗でのデータ共有を推進します。 機密データ 、顧客記録や売上高情報など。この領域の潜在的な脆弱性を完全に理解するには、SQL インジェクション攻撃とは何なのかを知る必要があります。
SQLインジェクション攻撃
SQL は、 構造化クエリ言語 。プログラムがデータにアクセスするために使用する言語です。 リレーショナルデータベース 。この言語には、データベース テーブルに保持されているデータを更新または削除するコマンドも含まれています。
エンドユーザーの場合、データベースへのアクセスは、Web ページまたはビジネス ソフトウェアのフロントエンドにあるフォームを通じて行われます。 Google ページでクエリを入力するフィールドはこの例です。コード 画面の後ろで ユーザーがフィールドに入力した入力を受け取り、それを SQL クエリにラップします。これはデータベースに送信され、一致するレコードが抽出されます。
ハッカーは、完全な SQL ステートメントまたはステートメントの句を入力フィールドに入力する方法を発見しました。これにより、フォームに埋め込まれたクエリ処理メカニズムが騙され、クエリ全体が渡される可能性があります。 SQL命令 入力をクエリ値として送信するのではなく、データベースに送信します。
このチートは「」と呼ばれています SQLインジェクション 」と入力フィールドを含むアプリケーションまたは Web ページのコーディングに組み込まれているコントロールをバイパスして、ハッカーにデータベースへの完全なアクセス権を与える可能性があります。
SQL インジェクション攻撃により、ハッカーがデータベース全体を盗んだり、値を更新したりする可能性があります。データベース内のデータを変更するオプションにより、ハッカーは次のことを行うことができます。 お金を盗む 。顧客が口座の残高をマイナスの金額からプラスの金額に変更できた場合を想像してください。自動化されたシステムでは、これにより支払いが発生し、社内の誰かがエラーに気づく前にハッカーがそのお金を持ち逃げする可能性があります。
こちらも参照: 最高の SQL Server 監視ツール
SQL インジェクション攻撃の分類
の Web アプリケーション セキュリティ プロジェクトを開く (OWASP) は、探すべき弱点の最終的なリストとみなされる、システムの脆弱性トップ 10 のリストを作成します。脆弱性スキャナーは次のことをチェックすることを約束します。 OWASP トップ 10 。 SQL インジェクションは、OWASP によってリストされている最大の脅威です。同組織はそのカテゴリーを 4 つのタイプに分類しています。
- クラシック SQL インジェクション
- ブラインドまたは推論 SQL インジェクション
- DBMS固有のSQLインジェクション
- 複合SQLインジェクション
これらのカテゴリは業界ごとにさらに分類されます。クラシック SQL インジェクション攻撃は、 帯域内攻撃 。このカテゴリには、エラー ベースの SQLI とユニオン ベースの SQLI という 2 つの可能な方法が含まれています。
複合 SQL インジェクション攻撃は、SQL インジェクション アクティビティに別の種類のハッカー攻撃を追加します。これらは:
- 認証攻撃
- DDoS攻撃
- DNSハイジャック
- クロスサイトスクリプティング (XSS)
このガイドでは簡潔にするため、以下に焦点を当てています。 sqlmap – これらの攻撃戦略の定義についてはここでは扱いません。
SQL インジェクションの脆弱性をチェックする
Sqlmap を使用すると、ハッカーがデータベースに対して実行する攻撃の種類を試すことができます。これにより、システムが正常かどうかを確認できます。 攻撃から保護される 。
ハッカーは常に新しい攻撃戦略を考案しています。ただし、リレーショナル データベースと SQL の動作方法を考慮すると、有効な攻撃の種類は限られています。言い換えれば、新たな攻撃は常に発生します。 テーマのバリエーション 。一般的なカテゴリの攻撃から確実に保護できるツールをお持ちであれば、考えられるすべての脆弱性を確実に発見できます。
sqlmap チェックは、多数のカテゴリのそれぞれで攻撃を試みます (合計 6 つあります)。これらの攻撃のいずれかが発生した場合、 成功する 、深刻な問題が発生しており、その攻撃をブロックするにはデータベースの前面にあるインターフェイスの一部を書き直す必要があることがわかります。
sqlmap が試みる攻撃の種類は次のとおりです。
- ブールベースのブラインド SQL インジェクション
- 時間ベースのブラインド SQL インジェクション
- エラーベースのSQLインジェクション
- ユニオンベースの SQL インジェクション
- スタックされたクエリ
- 帯域外攻撃
sqlmap 開発者が使用する定義は、OWASP が使用するカテゴリに正確にマッピングされていません。リストには両方のタイプが含まれています クラシック SQL インジェクション そして両方のタイプの ブラインド SQL インジェクション 。
sqlmap によって実行されるスタック クエリ攻撃戦略は、OWASP 用語をカバーする必要があります。 DBMS 固有の攻撃 。 OWASP の複合攻撃カテゴリは、SQL インジェクションに焦点を当てた sqlmap 検出システムとは関係ありません。
論理的には、システムが SQL インジェクション攻撃に対して脆弱ではないことを確認できれば、自動的に複合攻撃に対しても脆弱ではなくなります。ただし、他のものを使用する必要があります 侵入テストツール サイトが DDoS 攻撃、XSS、または DNS ハイジャックに対して脆弱かどうかを確認します。すべてのシステムは恒久的に認証攻撃の危険にさらされています。ビジネスを認証攻撃の脅威から保護するには、安全な ID とアクセス管理戦略を確保する必要があります。 認証クラッキング 。
sqlmap システム チェックは次の DBMS で動作します。
MySQL | Microsoft SQLサーバー | マイクロソフトアクセス | マリアDB |
オラクル | PostgreSQL | IBM DB2 | SQLite |
火の鳥 | サイベース | SAP Max DB | インフォミックス |
MemSQL | TiDB | ゴキブリDB | HSQLDB |
H2 | モネDB | アパッチダービー | アパッチ・イグナイト |
アマゾン赤方偏移 | 垂直 | マッコイ | すぐ |
高ベース | MimerSQL | クレートDB | グリーンプラム |
霧雨 | キューブリッド | インターシステムズ キャッシュ | 虹彩 |
エクストリームDB | フロントベース | ユガバイトDB | 名手 |
Raima データベースマネージャー |
sqlmap のシステム要件
sqlmapをインストールできます ウィンドウズ 、 マックOS 、 そして Linux 。
sqlmap システムは Python で書かれているため、インストールする必要があります。 Python 2.6 またはそれ以降をコンピュータ上で実行して sqlmap を実行します。 2021 年 7 月現在のバージョンは 3.9 です。
Python がインストールされているかどうかを確認するには、Windows でコマンド プロンプトを開き、次のように入力します。 Python –バージョン 。 Python をお持ちでない場合は、パラメーターを指定せずに python を再度入力するように求めるメッセージが表示されます。タイプ パイソン これにより、ダウンロードするように設定された Python パッケージを含む Microsoft Store が開きます。クリックしてください 得る ボタンをクリックし、インストール手順に従います。
macOSタイプの場合 Python –バージョン 。エラー メッセージが表示された場合は、次のコマンドを入力します。
|_+_|これらの行では、 $ はシステム プロンプトを表します。入力しないでください。
Linux を使用している場合は、Python がすでにインストールされています。
SQLマップをインストールする
sqlmap をインストールするには:
- 次の sqlmap プロジェクトの Web サイトに移動します。 sqlmap.org 。
- Windows を使用している場合は、 .zipをダウンロード ファイルボタン。 macOS または Linux を使用している場合は、 .tar.gzをダウンロード ファイルボタン。
- 圧縮ファイルを解凍します。
システムは、ディレクトリに圧縮ファイルと同じ名前を自動的に付けます。ただし、これは非常に長い名前なので、新しいディレクトリを sqlmap という名前にすることを選択します。コンピュータ上のどこにディレクトリを作成しても問題ありません。
sqlmap の実行
sqlmap システムはコマンドライン ユーティリティです。これには GUI インターフェイスがありません。したがって、コンピュータのコマンド ラインに移動して sqlmap を使用します。ユーティリティを実行するために作成した sqlmap ディレクトリに移動します。プログラムをコンパイルする必要はありません。
sqlmap を使用するために実行するプログラムは、sqlmap.py と呼ばれます。プログラム名の末尾にオプションを追加しないと実行されません。
sqlmap のオプションは次のとおりです。
-u URL | 対象のURL フォーマット:-in 'http://www.target.com/path/file.htm?variable=1' |
-d ダイレクト | データベースに直接接続するための接続文字列 フォーマット:-d DBMS://DATABASE_FILEPATHまたは -d DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME |
-l ログファイル | Burp または WebScarab プロキシ ログ ファイルからターゲットを解析する |
-m 一括ファイル | テキストファイルで指定された複数のターゲットをスキャンします フォーマット:ファイルには 1 行に URL が含まれている必要があります |
-r リクエストファイル | ファイルからHTTPリクエストをロードする フォーマット:ファイルには HTTP または HTTPS トランザクションを含めることができます |
-g グーグルダック | Google dork の結果をターゲット URL として処理する |
-c 設定ファイル | 構成 INI ファイルからオプションをロードする |
--ウィザード | ガイド付き実行サービス |
- アップデート | sqlmapを最新バージョンに更新します |
- パージ | sqlmapデータフォルダを空にする |
--パージ出力 | 上記のように |
--依存関係 | 不足している sqlmap 依存関係を確認する |
-h | 基本的なヘルプ |
-ああ | 高度なヘルプ |
- バージョン | バージョン番号を表示する |
これらのオプションのいずれかを使用しないと sqlmap を実行できません。がある 他の多くのオプション また、多くの場合、コマンド ラインに複数のオプションを順番に入力する必要があります。
完全な攻撃には非常に多くのオプションと入力が必要なので、それらのオプションをすべて入力するよりも、それらのオプションをすべてファイルに入れてからそのファイルを呼び出す方が簡単です。このシナリオでは、すべてのオプションを次のファイルに保存するのが慣例です。 テキストファイル 拡張子は .INI です。このオプションのリストは、-c オプションの後にファイル名を付けてコマンド ラインに含めます。この方法では、スペルミスやフォーマットエラーを考慮して、長いコマンド全体を何度も繰り返し入力する必要がなくなります。
その他の sqlmap オプション
に追加できるスイッチは他にもたくさんあります。 sqlmap 指示。文字ベースのオプション パラメーターは二重引用符 (' ') で囲む必要があります。数値パラメーターは引用符で囲まないでください。
このガイドでは簡潔にするために、これらすべてを PDF ファイルで示しています。
上の画像をクリックすると全文が開きます sqlmap チートシート JPG 新しいウィンドウで、または ここをクリックして sqlmap チートシートをダウンロードしてくださいPDF 。
sqlmap を使用した SQL インジェクション攻撃スキャンの実行
sqlmap で使用できるオプションが多数あるため、気が遠くなります。 SQL インジェクション攻撃を形成する方法を見つけるには、検討しなければならないオプションが多すぎます。さまざまな種類の攻撃を実行する方法の知識を得る最善の方法は、次のとおりです。 例から学ぶ 。
sqlmap テスト システムがどのように進行するかを体験するには、マーカーをサイトの URL に置き換えて次のテスト実行を試してください。
このコマンドは、すべての sqlmap プロシージャの実行をトリガーし、テストの進行に応じてオプションを提供します。
システムは表示します 開始時間 テストの。レポートの各行には、各テストの完了時間が含まれます。
sqlmap サービスは、 接続をテストする Web サーバーに送信し、サイトのさまざまな側面をスキャンします。これらの属性には、サイトのデフォルトの文字セット、次の文字セットの存在のチェックが含まれます。 防御システム 、Web アプリケーション ファイアウォールや侵入検知システムなど。
テストの次のフェーズでは、サイトに使用される DBMS を特定します。それは試みます 一連の攻撃 サイトのデータベースの脆弱性を調査するため。これらは:
- GET 入力攻撃 - これにより、クラシック SQLI および XSS 攻撃に対する脆弱性が特定されます。
- DBMS 固有の攻撃
- ブールベースのブラインド SQLI
- システムはレベルとリスク値を要求します。これらが十分に高い場合は、時間ベースのブラインド SQLI が実行されます。
- エラーベースの SQLI 攻撃
- レベルとリスクの値が十分に高い場合は、UNION ベースの SQLI
- スタックされたクエリ
この実行で使用されたバナー オプションに応じて、sqlmap は次の内容を取得して実行を完了します。 データベースのバナー 。最後に、抽出されたすべてのデータとその意味の説明が書き込まれます。 ログファイル 。
ご覧のとおり、コマンドに多くのオプションを指定しないと、sqlmap システムは標準的な一連の攻撃を実行し、テストの進行に応じてテストの深さに関する決定をユーザーに確認します。
コマンドを少し変更すると、同じ一連のテストが実行されますが、 役職 の代わりにテストメソッドとして 得る 。
次のコマンドを試してください。
|_+_|sqlmapを使用したパスワードクラッキング
前のセクションで使用した最初のコマンドの 1 つの単語を変更するだけで、さまざまなテストが実行され、 認証情報管理システム データベースには弱点があります。
次のコマンドを入力します。
|_+_|繰り返しますが、サイトの URL を
このコマンドを実行すると、sqlmap は一連のテストを開始し、途中でいくつかのオプションを提供します。
sqlmap の実行では、時間ベースのブラインド SQLI が試行され、次に UNION ベースのブラインド攻撃が試行されます。次に、別のツールで分析するためにパスワード ハッシュをファイルに保存するオプションが提供され、辞書ベースの攻撃の機会が与えられます。
このサービスは、一連の既知のユーザー アカウント名を試し、各候補ユーザー名に対してよく使用されるパスワードのリストを順に実行します。これを「」といいます。 クラスター爆弾 ' 攻撃。 sqlmap のファイル スイートには、この攻撃用のペイロードのファイルが含まれていますが、代わりに独自のファイルを提供することもできます。
sqlmap がユーザー名とパスワードの組み合わせをヒットすると、それが表示されます。実行のすべてのアクションは、プログラムの実行が終了する前にログ ファイルに書き込まれます。
システム上のデータベースとそのテーブルのリストを取得します。
情報は力であり、ハッカーがハッキングするには、まずシステム上にどのようなデータベース インスタンスがあるかを知る必要があります。この基本情報に簡単にアクセスできるかどうかを確認できます。 侵入者 次のコマンドを使用します。
|_+_|このテストには、時間ベース、エラーベース、および UNION ベースの SQL インジェクション攻撃が含まれます。次に、DBMS ブランドを識別し、データベース名をリストします。テスト実行中に取得された情報は、プログラムの終了時にログ ファイルに書き込まれます。
もう少し詳しく調査し、次のコマンドを使用して、これらのデータベースのいずれかにあるテーブルのリストを取得します。
|_+_|このセクションの最初のクエリのリストから取得したデータベース インスタンスの 1 つの名前を入力します。
このテスト バッチには、時間ベース、エラーベース、および UNION ベースの SQL インジェクション攻撃が含まれています。次に、指定されたデータベース インスタンスにあるテーブルの名前が一覧表示されます。このデータは、プログラムの終了時にログ ファイルに書き込まれます。
得る 内容 次のコマンドを使用して、これらのテーブルの 1 つを選択します。
|_+_|検出したテーブルの 1 つの名前を