# Nikto 漏洞扫描工具

# 简介

Nikto 是一款常用的 Web 漏洞扫描工具,它可以扫描 Web 服务器上的常见漏洞和安全问题,如 SQL 注入、XSS、文件包含、目录遍历等。本文将介绍 Nikto 的安装和使用方法。

# 功能介绍

  1. 使用 Rain Forest Puppy 的 LibWhisker 实现 HTTP 功能,并且可以检查 HTTP 和 HTTPS

  2. 支持基本的端口扫描以判定网页服务器是否运行在其他开放端口

  3. 可以使用 'update' 选项从主版本站点自动更新,以应对新的弱点

  4. 可以在启动时加载用户自定义的检测规则,当然前提是自定义检测规则已经放在了 user_scan_database.db 文件内 (这个文件在插件目录下),即使使用 - update 选项升级,自定义的检测规则也不会被覆盖

  5. 具有反入侵探测 (IDS) 功能

  6. Nikto 可用来检查网页服务器和其他多个范畴内的项目:错误的配置、默认文件和脚本、不安全的文件和脚本、过时软件等

# 安装

linux 安装

apt-get install nikto
或者
yum install nikto

windows 安装

  1. 下载压缩包,在 github 上下载链接
  2. nikto 在 windows 系统中使用需要依赖于 ActiveState Perl 环境,需要下载
  3. 安装完毕 ActivePerl 之后,添加 Perl 到 PATH 环境中并创建 Perl 文件关联,打开 CMD 窗口,检测当前 ActivePerl 环境是否安装完成
  4. 解压 nikto 后在 cmd(命令行模式)窗口中,进入 nikto.pl 路径直接执行就可以使用了

# 使用

  1. 基本用法

在命令行中输入以下命令,即可使用 Nikto 扫描目标网站:

nikto -h 目标网站的URL
#例如,扫描百度网站可以使用以下命令:
nikto -h https://www.baidu.com
#Nikto 会自动扫描目标网站的漏洞和安全问题,并输出扫描结果
[root@localhost nikto]# nikto -h https://www.baidu.com
- ***** RFIURL is not defined in nikto.conf--no RFI tests will run *****
- ***** SSL support not available (see docs for SSL install) *****
- Nikto v2.1.6
---------------------------------------------------------------------------
+ No web server found on www.baidu.com:443
---------------------------------------------------------------------------
+ 0 host(s) tested
  1. 扫描选项

Nikto 提供了多种扫描选项,可以根据需要进行配置。以下是常用的扫描选项:

  • -p:指定要扫描的端口号,多个端口号用逗号分隔。
  • -ssl:指定使用 SSL 协议进行扫描。
  • -id:指定要发送的 HTTP 头信息。
  • -Tuning:指定扫描的级别,包括 0-3 级。
  • -output:指定输出扫描结果的文件名。

例如,使用以下命令可以扫描目标网站的 80 和 443 端口,并输出扫描结果到文件中:

nikto -h https://www.baidu.com -p 80,443 -output baidu.txt
  1. 报告生成

Nikto 可以生成 HTML、CSV 和 XML 格式的扫描报告。使用以下命令生成报告:

nikto -h <目标主机> -p <端口号> -Format <格式> -output <文件名>

<格式> 可以是 htmlcsvxml

例如:

nikto -h localhost -p 80 -Format html -output report.html
  1. 高级用法

Nikto 还提供了一些高级用法,可以更加灵活地进行扫描。以下是一些常用的高级用法:

  • 使用代理服务器进行扫描:

    nikto -h https://www.baidu.com -useproxy http://proxy.example.com:8080
  • 使用认证信息进行扫描:

    nikto -h https://www.example.com -id admin:password
  • 扫描指定目录:

    nikto -h https://www.example.com -root /admin/
  • 扫描指定文件类型:

    nikto -h https://www.example.com -filetype php
  • 扫描指定漏洞:

    nikto -h https://www.example.com -plugins vulnerabilities

# 配置 Nikto

Nikto 的配置文件 nikto.conf 包含了多种配置选项。在 Linux 上,配置文件通常位于 /etc/nikto/config 在 Windows 上,位于 Nikto 的安装目录。

# 常用配置选项

  • host : 要扫描的目标主机名或 IP 地址。
  • port : 要扫描的端口号,默认为 80。
  • ssl : 是否使用 SSL 连接,默认为 false。
  • timeout : 连接超时时间,默认为 10 秒。
  • plugins : 要使用的插件列表,默认为所有插件。
  • dbcheck : 是否检查 Nikto 的漏洞数据库,默认为 true。
  • proxy : 代理服务器的地址和端口号。

配置文件内容

#########################################################################################################
# CONFIG STUFF
# $Id: config.txt 94 2009-01-21 22:47:25Z deity $
#########################################################################################################
# default command line options, can't be an option that requires a value.  used for ALL runs.
# CLIOPTS=-g -a
# ports never to scan
SKIPPORTS=21 111
# User-Agent variables:
 # @VERSION     - Nikto version
 # @TESTID      - Test identifier
 # @EVASIONS    - List of active evasions
USERAGENT=Mozilla/5.00 (Nikto/@VERSION) (Evasions:@EVASIONS) (Test:@TESTID)
# RFI URL. This remote file should return a phpinfo call, for example: <?php phpinfo(); ?>
# You may use the one below, if you like.
#RFIURL=http://cirt.net/rfiinc.txt?
# IDs never to alert on (Note: this only works for IDs loaded from db_tests)
#SKIPIDS=
# The DTD
NIKTODTD=docs/nikto.dtd
# the default HTTP version to try... can/will be changed as necessary
DEFAULTHTTPVER=1.0
# Nikto can submit updated version strings to CIRT.net. It won't do this w/o permission. You should
# send updates because it makes the data better for everyone ;)  *NO* server specific information
# such as IP or name is sent, just the relevant version information.
# UPDATES=yes   - ask before each submission if it should send
# UPDATES=no    - don't ask, don't send
# UPDATES=auto  - automatically attempt submission *without prompting*
UPDATES=yes