はじめに
Nikto は、人気のあるオープンソースのウェブサーバー スキャナーであり、6700 を超える潜在的に危険なファイル/プログラム、1250 を超えるサーバーの古いバージョン、および 270 を超えるサーバーのバージョン固有の問題を含む、複数の項目に対してウェブサーバーに対して包括的なテストを実行します。
Nikto はコマンドラインオプションを使用して設定できますが、そのデフォルトの動作は中央の設定ファイル nikto.conf によって制御されます。このファイルを変更する方法を理解することで、デフォルトの設定を永続的に変更したり、特定の環境に合わせてスキャンを調整したり、ワークフローを合理化したりできます。
この実験では、nikto.conf ファイルの場所を特定し、読み取り、変更する方法を学びます。デフォルトの USERAGENT 文字列を変更し、スキャンを実行して新しい動作を観察し、その後元の設定を復元します。
主な nikto.conf 設定ファイルの場所を特定する
このステップでは、Nikto のメイン設定ファイルである nikto.conf を特定します。このファイルには、Nikto が実行時に使用するすべてのデフォルト設定が含まれています。現在使用している Ubuntu 環境のような Debian ベースのシステムでは、このファイルは通常 /etc/ ディレクトリに配置されています。
find コマンドを使用して、ファイルシステム全体を検索できます。これは、設定ファイルの正確な場所が不明な場合に役立つテクニックです。
ターミナルで次のコマンドを実行して、nikto.conf を検索します。標準エラー出力 (2) を /dev/null にリダイレクトして、「Permission denied」メッセージを非表示にし、出力をよりクリーンにします。
sudo find / -name nikto.conf 2> /dev/null
出力として設定ファイルへのパスが表示されるはずです。
/etc/nikto.conf
これで場所がわかったので、その内容を確認に進むことができます。
ファイルを開き、RFIURL のようなデフォルト設定を確認する
このステップでは、テキストエディタを使用して nikto.conf ファイルを開き、そのデフォルト設定の一部を確認します。ここでは、シンプルなコマンドラインテキストエディタである nano を使用します。ファイルは /etc/ ディレクトリにあり、root ユーザーが所有しているため、開くには sudo を使用する必要があります。
nano でファイルを開きます。
sudo nano /etc/nikto.conf
nano 内に入ったら、矢印キーで移動できます。ファイルは、各変数が何をするかを説明するコメント(# で始まる行)が多く含まれています。
特定の変数 RFIURL を検索してみましょう。この変数は、Nikto がリモートファイルインクルージョン (RFI) テストに使用する外部ファイルを定義します。Ctrl + W を押して検索プロンプトを開き、RFIURL と入力して Enter を押します。次のような行が表示されるはずです。
## The URL to a remote file to use for RFI tests.
RFIURL=http://cirt.net/rfi.txt
次に、次のステップで変更する USERAGENT 変数を見つけましょう。もう一度 Ctrl + W を押し、USERAGENT と入力して Enter を押します。Nikto がウェブサーバーに自身を識別するために使用するデフォルトの User-Agent 文字列が見つかります。
## The User-Agent to send to the web server
USERAGENT=Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0 (Nikto/2.5.0)
これらの設定を確認した後、Ctrl + X を押して何も変更を保存せずに nano を終了できます。
デフォルトの USERAGENT のような静的変数を変更する
次に、設定ファイル内の静的変数を変更します。デフォルトの USERAGENT をカスタム値に変更します。User-Agent を変更することは、特定のブラウザを模倣したり、単純な検出を回避したり、ログ記録目的でスキャン トラフィックにラベルを付けたりするのに役立ちます。
まず、nano でファイルを再度開きます。
sudo nano /etc/nikto.conf
再度 Ctrl + W を使用して USERAGENT を検索します。行を見つけたら、参照用に元の値を保持しておくのが良い習慣です。元の USERAGENT 行の先頭に # を追加してコメントアウトします。次に、そのすぐ下の新しい行に、カスタム User-Agent を追加します。
変更は次のようになります。
## The User-Agent to send to the web server
#USERAGENT=Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0 (Nikto/2.5.0)
USERAGENT=MyCustomScanner/1.0
これで、変更を保存してエディタを終了します。Ctrl + O を押して変更を書き込み、Enter を押してファイル名を確認し、次に Ctrl + X を押して nano を終了します。これで設定が更新されました。
新しいデフォルトの動作を観察するためにスキャンを実行する
このステップでは、Nikto スキャンをローカルウェブサーバーに対して実行し、新しい USERAGENT が実際に機能していることを確認します。この実験用のセットアップスクリプトは、すでに Apache ウェブサーバーをインストールして起動しており、127.0.0.1 (localhost) で実行されています。
Nikto がスキャンを開始すると、使用している設定の概要が表示されます。これにより、ウェブサーバーのログを検査することなく、変更を確認できます。
-h (host) オプションを使用して、ローカルサーバーに対して基本的なスキャンを実行します。
nikto -h http://127.0.0.1
Nikto からの最初の出力を観察します。ターゲット情報と、スキャンに使用されているオプションの一部がリストされます。出力にカスタム User-Agent が反映されているはずです。
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 80
+ Start Time: 2023-10-27 10:30:00 (GMT0)
---------------------------------------------------------------------------
- Server: Apache/2.4.52 (Ubuntu)
+ User-Agent: MyCustomScanner/1.0
- The anti-clickjacking X-Frame-Options header is not present.
... (scan results will continue) ...
+ User-Agent: MyCustomScanner/1.0 の行で見られるように、Nikto は現在 nikto.conf で設定したデフォルト値を使用しています。スキャンはいつでも Ctrl + C を押して停止できます。
元の設定に変更を戻す
最後に、特に共有環境では、設定を元の状態に戻すことが良い習慣です。このステップでは、nikto.conf に行った変更を元に戻します。
実験のセットアップ中、元の設定ファイルのバックアップが /etc/nikto.conf.bak に自動的に作成されました。このバックアップは、mv (move) コマンドを使用して、編集したファイルを元のファイルで上書きすることで復元できます。
バックアップを復元するには、次のコマンドを実行します。
sudo mv /etc/nikto.conf.bak /etc/nikto.conf
このコマンドは、/etc/nikto.conf.bak を /etc/nikto.conf に移動し、編集したファイルを効果的に置き換えます。
ファイルが元に戻されたことを確認するには、grep コマンドを使用して USERAGENT の行を再度確認できます。
grep USERAGENT /etc/nikto.conf
出力には、元のコメントアウトされていない User-Agent の行が表示され、変更が正常に元に戻されたことを確認できます。
USERAGENT=Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0 (Nikto/2.5.0)
まとめ
この実験では、Nikto のコア設定ファイルである nikto.conf を編集することで、Nikto の動作をカスタマイズすることに成功しました。これは、ペネトレーションテストやセキュリティ監査の特定の要件を満たすためにセキュリティツールを調整する上で、基本的なスキルです。
以下のことを学びました。
- Linux システムで
nikto.confファイルを見つける方法。 - 設定変数の目的を読み取り、理解する方法。
- 静的変数、特に
USERAGENTを変更する方法。 - スキャンを実行し、出力を観察することで設定の変更を確認する方法。
- バックアップファイルから元の設定を復元する方法。
設定ファイルの変更をマスターすることで、ツールに永続的でカスタムなデフォルトを設定でき、セキュリティテストをより効率的かつ効果的に行うことができます。


