Nikto のチューニングオプションでスキャン動作を制御する

PythonBeginner
オンラインで実践に進む

はじめに

Nikto は、人気のあるオープンソースのウェブサーバー スキャナーであり、6,700 を超える潜在的に危険なファイル/プログラム、1,250 を超えるサーバーの古いバージョン、および 270 を超えるサーバーのバージョン固有の問題を含む、複数の項目に対してウェブサーバーに対して包括的なテストを実行します。

デフォルトのスキャンは徹底的ですが、時間がかかり、多くの出力が生成される可能性があります。より的を絞った評価のために、Nikto は -Tuning オプションを提供します。この機能を使用すると、実行するテストの種類を指定できるため、スキャンをより高速かつ集中的に行うことができます。

この実験では、-Tuning オプションを使用して Nikto のスキャン動作を制御する方法を学びます。さまざまなチューニングレベルでスキャンを実行して特定の脆弱性を発見し、結果を比較する練習をします。

-Tuning オプションの目的を理解する

このステップでは、-Tuning オプションと、それが制御できるさまざまなテストカテゴリについて学びます。-Tuning オプションは、スキャンを特定の関心のある領域に集中させるのに役立ち、時間を節約し、出力のノイズを減らします。

Nikto はテストをいくつかのタイプに分類します。特定のカテゴリを選択するには、数字または文字を使用できます。利用可能な主なチューニングオプションを見てみましょう。ヘルプ情報を表示することで、これらを確認できます。

Nikto のヘルプメニューを表示するには、次のコマンドを実行します。

nikto -h

出力をスクロールして、-Tuning セクションを見つけます。次のような表示になります。

   -Tuning
       Tuning options control the test that Nikto will use against a target.
       By default, Nikto runs the default set of tests. The tuning options
       are a bitwise value, so they can be combined (e.g. -Tuning 12).
       The options are:
           0 - File Upload
           1 - Interesting File / Seen in logs
           2 - Misconfiguration / Default File
           3 - Information Disclosure
           4 - Injection (XSS/Script/HTML)
           5 - Remote File Retrieval - Inside Web Root
           6 - Denial of Service
           7 - Remote File Retrieval - Server Wide
           8 - Command Execution / Remote Shell
           9 - SQL Injection
           a - Authentication Bypass
           b - Software Identification
           c - Remote Source Inclusion
           x - Reverse Tuning Options (i.e., include all except specified)

ご覧のとおり、各数字は特定のテストカテゴリに対応しています。たとえば、1 は「Interesting File」、2 は「Misconfiguration」です。x オプションは特別です。これはロジックを反転させ、指定されたテストを除くすべてのテストを実行するように Nikto に指示します。

「興味深いファイル」のために -Tuning 1 でスキャンを実行する

このステップでは、「興味深いファイル」のみを検索するための集中的なスキャンを実行します。このタイプのスキャンは、ウェブアプリケーションから直接リンクされていない可能性のあるファイルで、バックアップファイル、設定ファイル、またはログなどの機密情報が含まれている可能性のあるものを探します。私たちのセットアップスクリプトは、この目的のために config.bak ファイルを作成しました。

-Tuning 1 オプションを使用して、Nikto に「Interesting File / Seen in logs」カテゴリのテストのみを実行するように指示します。ウェブサーバーはポート 8000127.0.0.1 で実行されています。

ターミナルで次のコマンドを実行します。

nikto -h http://127.0.0.1:8000 -Tuning 1

スキャンが完了すると、次のような出力が表示されます。Nikto が config.bak ファイルを見つけたことに注意してください。

- Nikto v2.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
+ /config.bak: A backup file was found.
+ 1 host(s) tested

これにより、完全で時間のかかるスキャンを実行することなく、潜在的に機密性の高いファイルを迅速に見つける方法が実証されます。

設定ミスを検出するために -Tuning 2 でスキャンを実行する

このステップでは、-Tuning 2 オプションを使用して、一般的なサーバーの設定ミスやデフォルトファイルのスキャンを行います。一般的な設定ミスの一つに、インデックスファイル(index.html など)が存在しない場合にディレクトリの内容を一覧表示する、ディレクトリインデックスの許可があります。私たちが使用しているシンプルな Python サーバーには、この動作があります。

設定ミスにのみ焦点を当てたスキャンを実行しましょう。

このコマンドを実行します。

nikto -h http://127.0.0.1:8000 -Tuning 2

出力には、設定ミスに関連する検出結果が表示されます。ディレクトリインデックスが有効になっていることを示すメッセージが表示されるはずです。

- Nikto v2.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
+ /: Directory indexing is enabled.
+ 1 host(s) tested

このスキャンでは、テストを「Misconfiguration」カテゴリに限定したため、config.bak ファイルは報告されなかったことに注意してください。

インバースチューニングスキャンを実行するために -Tuning x を使用する

このステップでは、インバースチューニングの使用方法を学びます。場合によっては、広範なスキャンを実行したいが、関連性がない、またはノイズが多すぎることがわかっている特定のテストカテゴリを除外したいことがあります。-Tuningx オプションを使用すると、これを実行できます。

たとえば、「Interesting File」チェックを除いたすべてのテストを実行したいとします。これは、x1 を組み合わせることで実現できます。

「Interesting File」テストを除外するインバーススキャンを実行するには、次のコマンドを実行します。

nikto -h http://127.0.0.1:8000 -Tuning x1

出力を観察してください。ディレクトリインデックスの設定ミスなどのさまざまな検出結果が表示されますが、config.bak ファイルは報告されません。

- Nikto v2.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
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.
+ /: Directory indexing is enabled.
...
+ 1 host(s) tested

インバースチューニングは、現在の評価に必要ない特定のチェックを削除することで、スキャンをカスタマイズするための強力な方法です。

異なるチューニングレベルからの出力を比較する

この最後のハンズオンステップでは、複数のチューニングオプションを組み合わせて、より包括的でありながらカスタマイズされたスキャンを作成します。-Tuning オプションは複数の値を受け入れ、指定されたすべてのカテゴリのテストを実行します。

「Interesting Files」(1)と「Misconfigurations」(2)の検索を組み合わせたスキャンを実行しましょう。

次のコマンドを実行します。

nikto -h http://127.0.0.1:8000 -Tuning 12

次に、出力を調べます。Nikto が両方のカテゴリからの検出結果を報告していることがわかります。config.bak ファイルとディレクトリインデックスの問題の両方が検出されます。

- Nikto v2.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
+ /: Directory indexing is enabled.
+ /config.bak: A backup file was found.
+ 1 host(s) tested

このスキャン結果を以前のスキャン結果と比較することで、-Tuning オプションがセキュリティ評価の範囲を正確に制御できることが明確にわかります。オプションを組み合わせて、必要なスキャンを正確に構築できます。

まとめ

この実験では、-Tuning オプションを使用して Nikto のスキャン動作を効果的に制御する方法を学びました。この強力な機能は、効率的で焦点を絞った Web セキュリティ評価を実施するために不可欠です。

以下の内容を実践しました。

  • Nikto で利用可能なさまざまなテストカテゴリの理解。
  • -Tuning 1 を使用した「Interesting Files」の焦点を絞ったスキャンの実行。
  • -Tuning 2 を使用した「Misconfigurations」のスキャン。
  • 特定のテストを除外するためのインバーススキャンの実行(-Tuning x)。
  • 複数のチューニングオプションを組み合わせてカスタムスキャンプロファイルを構築。

-Tuning オプションを習得することで、Nikto のワークフローを大幅に改善し、特定の種類の脆弱性に迅速に焦点を合わせ、スキャン結果の分析に費やす時間を短縮することができます。