ウェブサイト検索

Nikto - Web アプリケーションの脆弱性と Web サーバー用 CGI スキャナー


Nikto Web Scanner も、Linux 管理者にとって便利なツールです。これは、GPL ライセンスの下でリリースされたオープンソースの Web スキャナであり、6500 を超える 潜在的に危険なファイル/CGI を含む複数のアイテムに対して Web サーバー上で包括的なテストを実行するために使用されます。 です。

推奨読書: WPSeku – WordPress のセキュリティ問題を見つけるための脆弱性スキャナー

これは脆弱性評価のためにクリス・ ソロデイビッド・ ロッジによって書かれており、1250のWebサーバー上で古いバージョンがないかチェックし、 270 以上のバージョン固有の問題。また、古い Web サーバー ソフトウェアやプラグインをスキャンしてレポートします。

Nikto Webスキャナーの特徴

  1. SSLをサポート
  2. 完全なHTTPプロキシをサポート
  3. テキスト、HTML、XML、CSV をサポートしてレポートを保存します。
  4. 複数のポートをスキャンする
  5. nmap 出力などのファイルから入力を取得することで、複数のサーバーでスキャンできます
  6. LibWhisker IDS のサポート
  7. インストールされているソフトウェアをヘッダー、ファイル、ファビコンで識別するのに十分な機能
  8. Metasploits のログ
  9. 「異常な」ヘッダーのレポート。
  10. Apache および cgiwrap ユーザーの列挙
  11. Basic および NTLM を使用してホストを認証する
  12. スキャンは指定した時間に自動一時停止できます。

ニクトの要件

基本的なPerlPerl モジュールOpenSSLがインストールされているシステムでは、Niktoを実行できるようになります。 WindowsMac OSX、およびRed などのさまざまなUnix/Linuxディストリビューションで徹底的にテストされています。ハットDebianUbuntuBackTrackなど。

Linux への Nikto Web スキャナーのインストール

現在の Linux システムのほとんどには、PerlPerl モジュール、およびOpenSSL パッケージがプリインストールされています。含まれていない場合は、yum または apt-get と呼ばれるデフォルトのシステム パッケージ マネージャー ユーティリティを使用してインストールできます。

Red Hat/CentOS/Fedora の場合
[root@tecmint ]# yum install perl perl-Net-SSLeay openssl
Debian/Ubuntu/Linux Mint の場合
[root@tecmint ]# apt-get install perl openssl libnet-ssleay-perl

次に、最新の安定した Nikto ソース ファイルを Github リポジトリからクローンし、Nikto/programs/ ディレクトリに移動して、perl を使用して実行します。

git clone https://github.com/sullo/nikto.git
cd nikto/programs
perl nikto.pl -h 
サンプル出力
Option host requires an argument

       -config+            Use this config file
       -Display+           Turn on/off display outputs
       -dbcheck            check database and other key files for syntax errors
       -Format+            save file (-o) format
       -Help               Extended help information
       -host+              target host
       -id+                Host authentication to use, format is id:pass or id:pass:realm
       -list-plugins       List all available plugins
       -output+            Write output to this file
       -nossl              Disables using SSL
       -no404              Disables 404 checks
       -Plugins+           List of plugins to run (default: ALL)
       -port+              Port to use (default 80)
       -root+              Prepend root value to all requests, format is /directory
       -ssl                Force ssl mode on port
       -Tuning+            Scan tuning
       -timeout+           Timeout for requests (default 10 seconds)
       -update             Update databases and plugins from CIRT.net
       -Version            Print plugin and database versions
       -vhost+             Virtual host (for Host header)
   		+ requires a value

	Note: This is the short help output. Use -H for full help text.

オプション ホストには引数が必要」は、テストの実行中に必要なパラメータが含まれていないことを明確に示しています。したがって、テスト実行を行うために基本的に必要なパラメータを追加する必要があります。

基本的なテスト

基本スキャンには対象となるホストが必要です。何も指定しない場合、デフォルトではポート 80 がスキャンされます。ホストは、 システムのホスト名またはIP アドレスのいずれかです。 「-h 」オプションを使用してホストを指定できます。

たとえば、IP 172.16.27.56 の TCP ポート 80 でスキャンを実行したいとします。

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56
サンプル出力
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          172.16.27.56
+ Target Hostname:    example.com
+ Target Port:        80
+ Start Time:         2014-01-10 00:48:12 (GMT5.5)
---------------------------------------------------------------------------
+ Server: Apache/2.2.15 (CentOS)
+ Retrieved x-powered-by header: PHP/5.3.3
+ The anti-clickjacking X-Frame-Options header is not present.
+ Server leaks inodes via ETags, header found with file /robots.txt, inode: 5956160, size: 24, mtime: 0x4d4865a054e32
+ File/dir '/' in robots.txt returned a non-forbidden or redirect HTTP code (200)
+ "robots.txt" contains 1 entry which should be manually viewed.
+ Apache/2.2.15 appears to be outdated (current is at least Apache/2.2.22). Apache 1.3.42 (final release) and 2.0.64 are also current.
+ Multiple index files found: index.php, index.htm, index.html
+ DEBUG HTTP verb may show server debugging information. See http://msdn.microsoft.com/en-us/library/e8z01xdh%28VS.80%29.aspx for details.
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3233: /phpinfo.php: Contains PHP configuration information
+ OSVDB-12184: /index.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY strings.
+ OSVDB-3092: /test.html: This might be interesting...
+ OSVDB-3268: /icons/: Directory indexing found.
+ OSVDB-3233: /icons/README: Apache default file found.
+ /connect.php?path=http://cirt.net/rfiinc.txt?: Potential PHP MySQL database connection string found.
+ OSVDB-3092: /test.php: This might be interesting...
+ 6544 items checked: 0 error(s) and 16 item(s) reported on remote host
+ End Time:           2014-01-10 00:48:23 (GMT5.5) (11 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

別のポート番号でスキャンする場合は、「-p 」 [-port] オプションを追加します。たとえば、IP 172.16.27.56 の TCP ポート 443 でスキャンを実行したいとします。

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56 -p 443
サンプル出力
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          172.16.27.56
+ Target Hostname:    example.com
+ Target Port:        443
---------------------------------------------------------------------------
+ SSL Info:        Subject: /O=*.mid-day.com/OU=Domain Control Validated/CN=*.mid-day.com
                   Ciphers: DHE-RSA-AES256-GCM-SHA384
                   Issuer:  /C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield Secure Certification Authority/serialNumber=10688435
+ Start Time:         2014-01-10 01:08:26 (GMT5.5)
---------------------------------------------------------------------------
+ Server: Apache/2.2.15 (CentOS)
+ Server leaks inodes via ETags, header found with file /, inode: 2817021, size: 5, mtime: 0x4d5123482b2e9
+ The anti-clickjacking X-Frame-Options header is not present.
+ Apache/2.2.15 appears to be outdated (current is at least Apache/2.2.22). Apache 1.3.42 (final release) and 2.0.64 are also current.
+ Server is using a wildcard certificate: '*.mid-day.com'
+ Allowed HTTP Methods: GET, HEAD, POST, OPTIONS, TRACE
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3268: /icons/: Directory indexing found.
+ OSVDB-3233: /icons/README: Apache default file found.
+ 6544 items checked: 0 error(s) and 8 item(s) reported on remote host
+ End Time:           2014-01-10 01:11:20 (GMT5.5) (174 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

完全なURL構文を使用してホストポート、およびプロトコルを指定することもでき、スキャンされます。

[root@tecmint nikto-2.1.5]# perl nikto.pl -h http://172.16.27.56:80

あらゆる Web サイトをスキャンすることもできます。たとえば、ここではgoogle.com でスキャンを実行しました。

[root@tecmint nikto-2.1.5]# perl nikto.pl -h http://www.google.com
サンプル出力
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          173.194.38.177
+ Target Hostname:    www.google.com
+ Target Port:        80
+ Start Time:         2014-01-10 01:13:36 (GMT5.5)
---------------------------------------------------------------------------
+ Server: gws
+ Cookie PREF created without the httponly flag
+ Cookie NID created without the httponly flag
+ Uncommon header 'x-frame-options' found, with contents: SAMEORIGIN
+ Uncommon header 'x-xss-protection' found, with contents: 1; mode=block
+ Uncommon header 'alternate-protocol' found, with contents: 80:quic
+ Root page / redirects to: http://www.google.co.in/?gws_rd=cr&ei=xIrOUomsCoXBrAee34DwCQ
+ Server banner has changed from 'gws' to 'sffe' which may suggest a WAF, load balancer or proxy is in place
+ Uncommon header 'x-content-type-options' found, with contents: nosniff
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ File/dir '/groups/' in robots.txt returned a non-forbidden or redirect HTTP code (302)
….

上記のコマンドは、Web サーバー上で多数の http リクエスト (つまり、2000 を超える テスト) を実行します。

複数ポートのテスト

同じセッションで複数のポート スキャンを実行することもできます。同じホスト上の複数のポートをスキャンするには、「-p」 [-port] オプションを追加し、ポートのリストを指定します。ポートは範囲 (例: 80-443) またはカンマ区切り (例: 80,443) として定義できます。たとえば、ホスト 172.16.27.56 上のポート 80443 をスキャンしたいとします。

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56 -p 80,443
サンプル出力
- Nikto v2.1.5
---------------------------------------------------------------------------
+ No web server found on cmsstage.mid-day.com:88
---------------------------------------------------------------------------
+ Target IP:          172.16.27.56
+ Target Hostname:    example.com
+ Target Port:        80
+ Start Time:         2014-01-10 20:38:26 (GMT5.5)
---------------------------------------------------------------------------
+ Server: Apache/2.2.15 (CentOS)
+ Retrieved x-powered-by header: PHP/5.3.3
+ The anti-clickjacking X-Frame-Options header is not present.

---------------------------------------------------------------------------
+ Target IP:          172.16.27.56
+ Target Hostname:    example.com
+ Target Port:        443
---------------------------------------------------------------------------
+ SSL Info:        Subject: /O=*.mid-day.com/OU=Domain Control Validated/CN=*.mid-day.com
                   Ciphers: DHE-RSA-AES256-GCM-SHA384
                   Issuer:  /C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield Secure Certification Authority/serialNumber=10688435
+ Start Time:         2014-01-10 20:38:36 (GMT5.5)
---------------------------------------------------------------------------
+ Server: Apache/2.2.15 (CentOS)
+ All CGI directories 'found', use '-C none' to test none
+ Apache/2.2.15 appears to be outdated (current is at least Apache/2.2.22). Apache 1.3.42 (final release) and 2.0.64 are also current.
.....

プロキシの使用

Nikto が実行されているシステムがHTTP プロキシ経由でのみターゲット ホストにアクセスできるとします。テストは 2 つの異なる方法を使用して実行できます。 1 つはnikto.conf ファイルを使用する方法、もう 1 つはコマンド ライン から直接実行する方法です。

Nikto.conf ファイルの使用

任意のコマンドラインエディタを使用してnikto.confファイルを開きます。

[root@localhost nikto-2.1.5]# vi nikto.conf

変数「PROXY」を検索し、次のように行頭の「#」のコメントを解除します。次にプロキシ ホストポートプロキシ ユーザー、およびパスワードを追加します。ファイルを保存して閉じます。

Proxy settings -- still must be enabled by -useproxy
PROXYHOST=172.16.16.37
PROXYPORT=8080
PROXYUSER=pg
PROXYPASS=pg

ここで、「-useproxy」 オプションを使用してNiktoを実行します。すべての接続は HTTP プロキシ経由で中継されることに注意してください。

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -p 80 -useproxy
サンプル出力
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         2014-01-10 21:28:29 (GMT5.5)
---------------------------------------------------------------------------
+ Server: squid/2.6.STABLE6
+ Retrieved via header: 1.0 netserv:8080 (squid/2.6.STABLE6)
+ The anti-clickjacking X-Frame-Options header is not present.
+ Uncommon header 'x-squid-error' found, with contents: ERR_CACHE_ACCESS_DENIED 0
+ Uncommon header 'x-cache-lookup' found, with contents: NONE from netserv:8080
コマンドラインの使用

コマンドラインからNiktoを直接実行するには、「-useproxy」オプションを使用し、引数としてプロキシを設定します。

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -useproxy http://172.16.16.37:8080/
サンプル出力
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         2014-01-10 21:34:51 (GMT5.5)
---------------------------------------------------------------------------
+ Server: squid/2.6.STABLE6
+ Retrieved via header: 1.0 netserv:8080 (squid/2.6.STABLE6)
+ The anti-clickjacking X-Frame-Options header is not present.
+ Uncommon header 'x-squid-error' found, with contents: ERR_CACHE_ACCESS_DENIED 0
+ Uncommon header 'x-cache-lookup' found, with contents: NONE from netserv:8080

ニクトを更新中

-update」 コマンドを実行するだけで、Nikto を最新のプラグインデータベースに自動的に更新できます。

[root@localhost nikto-2.1.5]# perl nikto.pl -update

新しいアップデートが利用可能な場合は、ダウンロードされた新しいアップデートのリストが表示されます。

+ Retrieving 'nikto_report_csv.plugin'
+ Retrieving 'nikto_headers.plugin'
+ Retrieving 'nikto_cookies.plugin'
+ Retrieving 'db_tests'
+ Retrieving 'db_parked_strings'
+ Retrieving 'CHANGES.txt'
+ CIRT.net message: Please submit Nikto bugs to http://trac2.assembla.com/Nikto_2/report/2

http://cirt.net/nikto/UPDATES/ から Nikto プラグインとデータベースを手動でダウンロードして更新することもできます。

参考リンク

ニクトホームページ