はじめに
Nikto は、人気のあるオープンソースのウェブサーバー スキャナーであり、6,700 を超える潜在的に危険なファイル/プログラム、1,250 を超えるサーバーの古いバージョン、および 270 を超えるサーバーのバージョン固有の問題を含む、複数の項目に対してウェブサーバーに対して包括的なテストを実行します。
スキャンを実行することも有用ですが、結果を明確で読みやすく、共有可能な形式で保存できることは、セキュリティ専門家にとって非常に重要です。Nikto はスキャン結果をさまざまな形式でエクスポートできますが、HTML は分析に最も便利な形式の 1 つです。
この実験では、ターゲットのウェブサーバーに対して Nikto スキャンを実行し、構造化された HTML レポートを生成する方法を学びます。
HTML 形式を指定する (-Format html)
このステップでは、Nikto スキャンの出力形式を指定する方法を学びます。Nikto はさまざまな形式でレポートを生成できますが、この実験では、非常に読みやすくナビゲートしやすい HTML に焦点を当てます。
-Format オプションは、Nikto に使用するレポート形式を伝えるために使用されます。HTML レポートを生成するには、このオプションの引数として html を指定する必要があります。
まず、Nikto のヘルプメニューを調べて、形式オプションを確認しましょう。
nikto -Help | grep Format
利用可能な形式(html を含む)をリストした出力が表示されるはずです。
-Format Scan report format (csv, htm, msf+, nbe, sql, txt, xml)
HTML 形式を指定する構文は、単純に -Format html です。次のステップで他のフラグと組み合わせて、完全なコマンドを作成します。
出力 HTML ファイルに -o フラグを使用する
このステップでは、Nikto がレポートを保存するファイルを指定する方法を学びます。単に形式を HTML に設定すると、生の HTML コードがターミナルに出力されますが、これはあまり役に立ちません。この出力をファイルにリダイレクトする必要があります。
-o (または --output) フラグがこの目的で使用されます。このフラグの引数として、目的のファイル名を指定します。
前のステップの形式フラグと組み合わせてみましょう。レポートファイルの名前を nikto_report.html とし、現在のディレクトリ (~/project) に保存します。また、-h (または --host) フラグを使用してスキャン対象を指定する必要があります。この実験では、ターゲットは http://127.0.0.1:8000 で実行されているローカルウェブサーバーです。
完全なコマンド構造は次のようになります。
nikto -h http://127.0.0.1:8000 -Format html -o nikto_report.html
次のステップでこの完全なコマンドを実行します。今のところ、構造と各フラグの目的に慣れてください。
スキャンを実行してレポートを作成する
いよいよ、すべてをまとめてスキャンを実行します。前のステップで構築したコマンドを使用して、ローカルウェブサーバーをスキャンし、結果を HTML ファイルに保存します。
ターミナルで次のコマンドを実行してください。スキャンが完了するまでに数分かかる場合があります。
nikto -h http://127.0.0.1:8000 -Format html -o nikto_report.html
スキャン中、Nikto はターミナルに進捗状況を表示します。出力は次のようになります。
- Nikto v2.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
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ "robots.txt" not found.
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ 7528 requests: 0 error(s) and 5 item(s) reported on remote host
+ End Time: 2023-10-27 10:30:15
+ (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
スキャンが完了したら、現在のディレクトリのファイルを一覧表示して、レポートファイルが作成されたことを確認できます。
ls -l nikto_report.html
出力に nikto_report.html ファイルが表示されるはずです。
-rw-r--r-- 1 labex labex 21435 Oct 27 10:30 nikto_report.html
生成された HTML ファイルをウェブブラウザで開く
このステップでは、生成された nikto_report.html ファイルを開いてその内容を表示します。HTML ファイルなので、表示するのに最適な方法はウェブブラウザを使用することです。
LabEx 環境には Firefox ウェブブラウザが含まれています。firefox コマンドに続けてファイル名を実行することで、ターミナルから直接レポートを開くことができます。
次のコマンドを実行してください。これにより Firefox が起動し、レポートが開かれます。
firefox nikto_report.html
新しい Firefox ウィンドウが画面に表示され、Nikto スキャンレポートが表示されるはずです。ウィンドウがターミナルの背後に表示される場合は、ターミナルウィンドウを移動して表示する必要があるかもしれません。
HTML レポートの各セクションをナビゲートする
この最終ステップでは、Firefox で開いたばかりのレポートを探索します。Nikto によって生成された HTML レポートは、明確で情報が豊富になるように構造化されています。
レポートの各部分に目を通してみてください。
- スキャン詳細 (Scan Details): 上部には、ターゲット IP、ホスト名、ポート、スキャンが実行された時間など、スキャンの概要が表示されます。
- 脆弱性テーブル (Vulnerabilities Table): レポートの主要部分は、すべての検出結果をリストしたテーブルです。各行は潜在的な問題を表します。
- 主要な列 (Key Columns): 影響を受けたパスを示す
URI列と、検出内容を説明するDescription列に注目してください。多くの検出結果には、その特定の脆弱性に関する詳細情報を提供するためにクリックできるリンク(多くは OSVDB ID)が含まれています。
レポート内のいくつかのリンクをクリックして、追加のコンテキストがどのように提供されるかを確認してください。このレポート構造に慣れることは、セキュリティスキャン結果を分析するための重要なスキルです。このステップは観察用であり、実行するコマンドはありません。
まとめ
この実験では、Nikto を使用して包括的なウェブサーバーの脆弱性レポートを HTML 形式で生成する方法を学びました。
レポートの種類を指定するために -Format html オプションを使用し、出力を nikto_report.html という名前のファイルに保存するために -o フラグを使用する練習をしました。最後に、生成されたレポートをウェブブラウザで開き、ナビゲートすることで、スキャン概要と詳細な検出結果の解釈方法を学びました。
このスキルは、セキュリティ評価を効果的に文書化し、伝達するために不可欠です。


