はじめに
この実験では、Kali Linux 内で sqlmap 環境を初期化および検証するための基本的な手順を学びます。sqlmap は、SQL インジェクションの脆弱性を検出し、悪用するプロセスを自動化し、データベースサーバーを乗っ取るためのオープンソースのペネトレーションテストツールです。Web アプリケーションのセキュリティ評価を実行する上で、sqlmap を適切にセットアップし、操作する方法を理解することは非常に重要です。この実験では、インストールの検証、広範なヘルプメニューの探索、さまざまな詳細度レベルの理解、およびテスト対象の URL の特定を行います。
Kali Linux ターミナルへのアクセス
このステップでは、sqlmap やその他のコマンドラインツールと対話するための主要なインターフェースである Kali Linux ターミナルにアクセスします。ターミナルは、コマンドを実行し、その出力を表示するための強力な環境を提供します。
まず、~/project ディレクトリにいることを確認してください。これは、実験環境のデフォルトの作業ディレクトリです。
cd ~/project
次に、まだ開いていない場合は新しいターミナルウィンドウを開くか、既存のターミナルにいることを確認してください。labex@labex-vm:~/project$ のようなプロンプトが表示されるはずです。
sqlmap --version で sqlmap のインストールを確認する
このステップでは、sqlmap のバージョンを確認することで、Kali Linux 環境に sqlmap が正しくインストールされ、アクセス可能であることを検証します。これは、ツールが使用準備ができていることを確認する簡単な方法です。
ターミナルで以下のコマンドを実行してください。
sqlmap --version
以下のような出力が表示され、インストールされている sqlmap のバージョンが示されます。
sqlmap version 1.x.x.x ## または類似のバージョン番号
この出力は、sqlmap がインストールされており、コマンドラインから実行できることを確認します。
sqlmap -h でメインヘルプメニューを探索する
このステップでは、sqlmap のメインヘルプメニューを探索します。ヘルプメニューは、利用可能なすべてのオプションとその機能の包括的な概要を提供し、ツールの効果的な使用方法を理解するために不可欠です。
メインヘルプメニューを表示するには、以下のコマンドを実行します。
sqlmap -h
このコマンドは、オプション、カテゴリ、および例の長いリストを出力します。出力をスクロールして、sqlmap の機能の全体像を把握してください。ターゲットの指定、リクエストオプション、最適化、インジェクション、検出などのセクションに気づくでしょう。
_
_ __ _ __| | __ ___ ___
| '_ \| '__| |/ / / __|/ __|
| |_) | | | < \__ \\__ \
| .__/|_| |_|\_\ |___/|___/
|_|
... (出力は省略) ...
Usage: python3 sqlmap [options]
Options:
--version Show program's version number and exit
-h, --help Show this help message and exit
-v VERBOSE Verbosity level: 0-6 (default 1)
Target:
At least one of these options has to be provided to define the
target(s)
-u URL, --url=URL Target URL (e.g. "http://www.site.com/vuln.php?id=1")
-g GOOGLEDORK Process Google dork results as target URLs
... (出力は省略) ...
この出力は、sqlmap で使用できるさまざまなパラメータを理解するために重要です。
-v オプションで詳細度レベルを理解する
このステップでは、-v オプションを使用して sqlmap の詳細度レベルについて学びます。詳細度レベルは、sqlmap の実行中に表示される情報の量を制御し、デバッグや操作の詳細な洞察を得るのに非常に役立ちます。
-v オプションは 0 (サイレント) から 6 (デバッグ) の範囲です。違いを見るためにいくつか試してみましょう。
まず、低い詳細度レベル (例:0) を試します。
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -v 0 --batch
sqlmap はサイレントで実行されるため、出力はほとんどありません。このデモンストレーションではインタラクティブなプロンプトを避けるために --batch オプションを追加しています。
次に、高い詳細度レベル (例:3) を試します。
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -v 3 --batch
HTTP リクエスト、レスポンス、およびテストプロセスに関する詳細情報を含む、大幅に多くの出力が表示されます。このレベルは、sqlmap がバックグラウンドで何を行っているかを理解するのに役立つことがよくあります。
_
_ __ _ __| | __ ___ ___
| '_ \| '__| |/ / / __|/ __|
| |_) | | | < \__ \\__ \
| .__/|_| |_|\_\ |___/|___/
|_|
... (出力は省略) ...
[HH:MM:SS] [INFO] starting @ HH:MM:SS /YYYY-MM-DD/
[HH:MM:SS] [INFO] fetched data: 'cat=1'
[HH:MM:SS] [INFO] testing connection to the target URL
[HH:MM:SS] [INFO] checking if the target is protected by some kind of WAF/IPS/IDS
[HH:MM:SS] [INFO] the target URL is not protected by any kind of WAF/IPS/IDS
[HH:MM:SS] [INFO] testing if the target URL is stable
[HH:MM:SS] [INFO] target URL is stable
[HH:MM:SS] [INFO] testing for GET parameter 'cat'
[HH:MM:SS] [INFO] GET parameter 'cat' is vulnerable.
... (出力は省略) ...
詳細度レベルを理解することは、表示される情報の量を制御するのに役立ち、ペネトレーションテスト中の効率的な分析に不可欠です。
脆弱なテストアプリケーションの URL を特定する
このステップでは、sqlmap のテストに使用できる、公開されている脆弱なウェブアプリケーションの URL を特定します。倫理的なハッキングと学習の目的のために、テストの明示的な許可を得ている指定されたテスト環境またはアプリケーションを使用することが重要です。
この実験では、ターゲット URL として http://testphp.vulnweb.com/listproducts.php?cat=1 を使用します。この URL は意図的に SQL インジェクションに対して脆弱であり、Acunetix によってテスト目的で提供されています。
この URL をメモしておくだけで構いません。今後の実験で、この URL を sqlmap と共に使用して、さまざまな SQL インジェクション攻撃を実行します。
URL は次のとおりです:http://testphp.vulnweb.com/listproducts.php?cat=1
この URL には、脆弱であることが知られている GET パラメータ cat が含まれています。これが、後続の sqlmap 演習のターゲットとなります。
まとめ
この実験では、Kali Linux で sqlmap 環境を正常に初期化および検証しました。ターミナルへのアクセス方法、sqlmap のバージョン確認、包括的なヘルプメニューの探索、詳細な出力のための詳細度レベルの重要性の理解を学びました。さらに、将来の SQL インジェクション演習のターゲットとなる、公開されている脆弱なウェブアプリケーションの URL (http://testphp.vulnweb.com/listproducts.php?cat=1) を特定しました。これらの基本的なステップは、ペネトレーションテストのシナリオで sqlmap を効果的に活用するために不可欠です。


