在 Ubuntu 20.04 上安装和使用 Nikto Web Scanner

大家好,今天我们将学习如何在 Ubuntu 20.04 服务器上安装和使用 Nikto 网络扫描仪。

Nikto 是一个 Perl 基于开源 Web 漏洞扫描程序,可以发现 Web 服务器上的所有其他潜在威胁,包括但不限于;

  • 不安全的文件和程序
  • 过时的服务器和程序
  • 服务器和软件配置错误
  • 默认文件和程序

Nikto 几乎可以在任何安装了 Perl 解释器的操作系统上运行。 它支持 SSL、代理、主机认证、攻击编码、IDS 验证等。

在 Ubuntu 20.04 上安装和使用 Nikto Web Scanner

在 Ubuntu 20.04 上安装 Nikto

在 Ubuntu 20.04 上安装 nikto 非常简单,因为该软件包在默认存储库中可用。 因此,运行以下命令来安装 nikto。

更新您的软件包存储库并升级您的服务器;

apt update

在 Ubuntu 20.04 上安装 Nikto

Perl 已经安装在 Ubuntu 20.04 上:

apt list perl -a
Listing... Done
perl/focal-updates,focal-security,now 5.30.0-9ubuntu0.2 amd64 [installed,automatic]
perl/focal 5.30.0-9build1 amd64

因此,下面的命令将安装 Nikto 和所有必需的依赖项。

apt install nikto -y

Nikto的基本用法

基本的 nikto 命令行语法是:

nikto [options...]

在没有任何命令行选项的情况下运行时,它会显示各种命令选项的基本描述;

nikto
- Nikto v2.1.5
---------------------------------------------------------------------------
+ ERROR: No host specified

       -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.

如果您想查看有关上述选项的更多详细信息,请运行以下命令;

nikto -H

使用 Nikto 执行 Web 扫描

在本节中,我们将看到 Nikto 如何与上面显示的各种命令行选项一起使用来执行 Web 扫描。

在其基本功能中,Nikto 只需要一个主机即可进行扫描。 目标主机可以用 -H 或者 -主持人 选项。 例如,要扫描 IP 地址为 192.168.60.19, 运行 Nikto 如下;

nikto -host 192.168.60.19
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          192.168.60.19
+ Target Hostname:    dvwa.kifarunix-demo.com
+ Target Port:        80
+ Start Time:         2021-07-12 19:24:17 (GMT0)
---------------------------------------------------------------------------
+ Server: Apache/2.4.37 (rocky)
+ Retrieved x-powered-by header: PHP/7.4.6
+ The anti-clickjacking X-Frame-Options header is not present.
+ Cookie PHPSESSID created without the httponly flag
+ Cookie security created without the httponly flag
+ Root page / redirects to: login.php
+ Server leaks inodes via ETags, header found with file /robots.txt, fields: 0x1a 0x5c6f1b510366c 
+ File/dir '/' in robots.txt returned a non-forbidden or redirect HTTP code (302)
+ "robots.txt" contains 1 entry which should be manually viewed.
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3268: /config/: Directory indexing found.
+ /config/: Configuration information may be available remotely.
+ OSVDB-3268: /tests/: Directory indexing found.
+ OSVDB-3092: /tests/: This might be interesting...
+ OSVDB-3268: /icons/: Directory indexing found.
+ OSVDB-3268: /docs/: Directory indexing found.
+ OSVDB-3233: /icons/README: Apache default file found.
+ /login.php: Admin login page/section found.
+ OSVDB-3092: /.git/index: Git Index file may contain directory listing information.
+ 6544 items checked: 0 error(s) and 17 item(s) reported on remote host
+ End Time:           2021-07-12 19:24:26 (GMT0) (9 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

从输出中可以看出,当指定的目标主机没有端口时,nikto 会扫描端口 80 默认情况下。

但是,如果您的 Web 服务器运行在不同的端口上,则必须使用 -p 或者 -港口 选项。

见下面的例子;

nikto -h 192.168.60.15 -p 8080

如果在同一个主机服务器上有多个虚拟主机监听不同的端口,你可以通过逗号分隔来指定多个端口。

nikto -h 192.168.60.19 -p 8080,8888

您还可以在格式中指定一系列端口 端口1-端口N 例如,

nikto -h 192.168.60.19 -p 8080-8888

例如,也可以使用 URL 代替使用 IP 地址指定目标主机;

nikto -h mydvwa.example.com
nikto -h https://mydvwa.example.com

也可以在使用 URL 时指定端口;

nikto -h mydvwa.example.com -p 8080
nikto -h https://mydvwa.example.com -p 8443

或者

nikto -h mydvwa.example.com:8080
nikto -h https://mydvwa.example.com:8443/

可以使用 -p 选项,也可以指定一个包含目标主机列表的文件,每行一个。 例如,您的文件应该包含格式的目标;

cat scan-targets
https://mydvwa.example.com:443/
192.168.60.19:8888
192.168.43.101

要同时扫描这些主机,请运行以下命令;

nikto -h scan-targets

还可以使用 Nmap 扫描侦听 Web 服务器端口的网络中的主机,并将输出传递给 nikto。 例如要扫描网络中的开放端口 80,192.168.43.0/24,

nmap -p80 192.168.43.0/24 -oG - | nikto -h -

如果您正在通过代理服务器,您可以使用以下命令要求 nikto 使用代理 -使用代理服务器 选项。 您可以在 nikto 配置文件上设置代理详细信息, /etc/nikto/config.txt 或者您可以在命令行上进行操作,如下所示;

要在 /etc/nikto/config.txt 文件中定义代理服务器详细信息,请使用以下格式;

PROXYHOST=192.168.20.45
PROXYPORT=3128
PROXYUSER=username
PROXYPASS=password

当您如上所示定义了代理详细信息后,请按如下方式运行 nikto;

nikto -h 192.168.20.128 -useproxy

在命令行上指定代理连接的详细信息;

nikto -h 192.168.20.128 -useproxy https://id:[email protected]:3128/
nikto -h 192.168.20.128 -useproxy https://@192.168.20.23:3128/

Nikto 可以导出不同格式的扫描结果; CSV、HTML、XML、NBE、文本。 要将结果保存为特定的输出格式,您需要指定 -o/-输出 选项以及 -格式 选项来定义输出格式。 请参阅以下示例以 html 格式保存扫描结果。

nikto -h 192.168.60.19 -o test.html -F html

因此,您可以通过网络浏览器访问该报告。 见下面的截图;

Nikto 还可以进行微调以执行特定的扫描。 下面是可用于实现此功能的调整选项的说明。

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
0 - File Upload
a - Authentication Bypass
b - Software Identification
c - Remote Source Inclusion
x - Reverse Tuning Options (i.e., include all except specified)

例如,要测试 SQL 注入和远程文件检索 – 服务器范围,您可以使用 nikto 之类的;

nikto -h 192.168.60.19 -Tuning 79 -o test.html -F html

示例命令输出;

- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          192.168.60.19
+ Target Hostname:    dvwa.kifarunix-demo.com
+ Target Port:        80
+ Start Time:         2021-07-12 19:35:10 (GMT0)
---------------------------------------------------------------------------
+ Server: Apache/2.4.37 (rocky)
+ Retrieved x-powered-by header: PHP/7.4.6
+ The anti-clickjacking X-Frame-Options header is not present.
+ Cookie PHPSESSID created without the httponly flag
+ Cookie security created without the httponly flag
+ Root page / redirects to: login.php
+ Server leaks inodes via ETags, header found with file /robots.txt, fields: 0x1a 0x5c6f1b510366c 
+ File/dir '/' in robots.txt returned a non-forbidden or redirect HTTP code (302)
+ "robots.txt" contains 1 entry which should be manually viewed.
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ 21 items checked: 0 error(s) and 8 item(s) reported on remote host
+ End Time:           2021-07-12 19:35:10 (GMT0) (0 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

至此,您已经学习了在 Ubuntu 20.04 上安装和使用 Nikto Web Scanner。

随意从 Nikto 文档页面探索其他命令行选项的基本用法。

使用 Wazuh 和 VirusTotal 检测恶意文件

使用 ModSecurity 和 ClamAV 拦截恶意文件上传

在 Ubuntu 20.04 上安装和使用 ClamAV