はじめに
Nikto は、強力なオープンソースのウェブサーバースキャナーであり、6700 を超える潜在的に危険なファイル/プログラム、1250 を超えるサーバーの古いバージョン、270 を超えるサーバーのバージョン固有の問題など、複数の項目に対してウェブサーバーに対して包括的なテストを実行します。
デフォルトでは、Nikto は幅広いプラグインを実行しますが、これには時間がかかる場合があります。より効率的でターゲットを絞ったスキャンを行うには、特定のプラグインを選択して実行できます。これは、特定の脆弱性や特定の設定ミスをチェックしたい場合に役立ちます。
この実験では、利用可能なすべての Nikto プラグインを一覧表示し、その後、単一の特定のプラグインを使用して焦点を絞ったスキャンを実行する方法を学びます。
-list-plugins を使用して利用可能なすべてのプラグインを一覧表示する
このステップでは、Nikto がスキャン用に利用できるすべてのプラグインを表示する方法を学びます。これは、焦点を絞ったスキャンを実行するための最初のステップです。なぜなら、選択できるプラグインの名前を知る必要があるからです。
-list-plugins オプションは、Nikto にすべてのプラグインの詳細なリストを出力させ、スキャンを実行せずに終了するように指示します。
利用可能なすべてのプラグインを一覧表示するには、ターミナルで次のコマンドを実行してください。
nikto -list-plugins
多くのプラグインがスクロールして表示されます。出力は、プラグインの名前、作成者、およびその目的の簡単な説明を示す列にフォーマットされています。
以下は、出力がどのようになるかの抜粋例です。
- Nikto 2.5.0
---------------------------------------------------------------------------
Plugin: apache_expect_header
Author: David Lodge <dave at cirt.net>
Description: See if an Expect header will crash Apache. Bugtraq ID 5253.
Type: Standard
Version: 2.5.0
CVSID: $Id: apache_expect_header.plugin,v 1.6 2023/03/28 17:00:00 cirt Exp $
Plugin: apacheusers
Author: Chris Forte
Description: Enumerate apache users via ~user requests
Type: Standard
Version: 2.5.0
CVSID: $Id: apacheusers.plugin,v 1.6 2023/03/28 17:00:00 cirt Exp $
... (さらに多くのプラグイン) ...
リストをしばらく見て、Nikto が実行できるさまざまなテストのアイデアを得てください。
実行する特定のプラグインを選択する例:apacheusers
このステップでは、前のステップのリストを確認し、焦点を絞ったスキャン用の特定のプラグインを選択します。これは、特定のテスト目標に基づいてプラグインを特定する概念的なステップです。
この実験では、apacheusers プラグインを選択します。その説明にあるように、このプラグインは「~user リクエスト経由で Apache ユーザーを列挙する」ことを試みます。これは、ウェブサーバーが有効なシステムユーザー名を公開しているかどうかを確認するための一般的なテストです。
ターゲットサーバーは単純な Python サーバーであり Apache ではありませんが、このプラグインを使用して選択と実行のプロセスをデモンストレーションします。プラグインは実行されますが、Apache ではないサーバーでは脆弱性は見つかりません。これは有効で期待される結果です。
次のステップでは、このプラグインのみを使用するコマンドを構築する方法を学びます。
目的のプラグイン名を -plugins オプションと共に使用する
このステップでは、選択したプラグインのみを実行するための Nikto コマンドを構築する方法を学びます。
実行するプラグインを指定するには、-plugins オプションの後にプラグイン名を続けます。複数のプラグインを実行したい場合は、カンマ区切りのリストを提供することもできますが、この実験では単一のプラグインに焦点を当てます。
基本的なコマンド構造は次のとおりです。
nikto -h <target_host> -plugins <plugin_name>
選択したプラグイン apacheusers と、ローカルポート 8000 で実行されているテストサーバーの場合、コマンドは次のようになります。
nikto -h 127.0.0.1:8000 -plugins apacheusers
このコマンドの内訳を見てみましょう。
nikto: 実行しているプログラムです。-h 127.0.0.1:8000:-h(host) オプションはターゲットを指定します。テストサーバーはローカルマシン (127.0.0.1) のポート8000で実行されています。-plugins apacheusers: これはコマンドの重要な部分です。Nikto にapacheusersプラグインのみを実行し、他のすべてのプラグインをスキップするように指示します。
次のステップでは、このコマンドを実行し、焦点を絞ったスキャンの結果を確認します。
ターゲットに対して焦点を絞ったスキャンを実行する
このステップでは、学習したばかりのコマンドを実行して、テストウェブサーバーに対して焦点を絞ったスキャンを行います。
ターミナルで以下のコマンドを実行してください。これにより Nikto が起動しますが、数分間実行されるのではなく、単一のプラグインのみを実行するため非常に迅速に完了します。
nikto -h 127.0.0.1:8000 -plugins apacheusers
出力は通常の Nikto スキャンよりもはるかに短くなります。以下のようなものになります。
- Nikto 2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 8000
+ Start Time: 2023-10-27 10:30:00 (GMT0)
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
+ Allowed HTTP Methods: GET, HEAD
+ 1 host(s) tested
+ 0 error(s) and 0 item(s) reported on remote host
+ End Time: 2023-10-27 10:30:01 (GMT0) (1 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
スキャンがどれだけ迅速に完了したかに注目してください。これは、ターゲットを絞ったテストのために特定のプラグインを使用する主な利点を示しています。
プラグイン固有の出力を分析する
この最後のステップでは、焦点を絞ったスキャンの出力を分析しましょう。セキュリティテストにおいて、結果の意味を理解することは非常に重要なスキルです。
前のステップからの出力を再度確認してください。
- Nikto 2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 8000
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
...
+ 0 error(s) and 0 item(s) reported on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
分析において最も重要な行は次のとおりです。
+ 0 error(s) and 0 item(s) reported on remote host
この行は、apacheusers プラグインが実行されたものの、検出するように設計された条件のいずれも見つからなかったことを示しています。これは予想される結果です。なぜなら、私たちのターゲットは Python サーバーであり、ユーザーディレクトリを公開するように設定された Apache サーバーではないからです。
ペネトレーションテストでは、ネガティブな結果(脆弱性が見つからないこと)は、ポジティブな結果と同様に重要です。これは、この特定のテストにおいて、サーバーは安全であるように見えることを意味します。apacheusers プラグインのみを実行することで、フルスキャンのノイズや時間をかけずに、これを迅速かつ効率的に確認することができました。
まとめ
この実験を完了したことをお祝いします!
特定のプラグインを選択して Nikto で焦点を絞ったスキャンを実行する方法を習得しました。このテクニックは、効率的でターゲットを絞ったウェブセキュリティ評価に不可欠です。
この実験では、以下のスキルを練習しました。
-list-pluginsオプションを使用して、利用可能なすべての Nikto プラグインを一覧表示する。- 特定のテストに関連するプラグインを選択する方法を理解する。
-pluginsオプションを使用して、指定されたプラグインのみを実行するように Nikto に指示する。- 焦点を絞ったスキャンを実行し、簡潔でプラグイン固有の出力を分析する。
このスキルを習得することで、テストワークフローを大幅にスピードアップし、特定のターゲットにとって最も重要な脆弱性に労力を集中させることができます。


