nikto 扫描报 0 host(s) tested 与 Web 服务器漏洞扫描用法

nikto 扫描报 0 host(s) tested 与 Web 服务器漏洞扫描用法

Nikto 是一个开源的 Web 服务器扫描器,用于检查服务器上的危险文件、过时组件、默认配置与常见响应头缺失。它把请求发往目标 Web 端口,用内置特征库逐条比对,最后给出条目清单。

仅供已获得书面授权的安全测试使用。

安装与版本

Kali 自带 Nikto。先确认版本:

bash 复制代码
nikto -Version

实测环境为 Kali GNU/Linux Rolling 2025.4(内核 6.16.8+kali-amd64),返回:

复制代码
Nikto 2.5.0 (LW 2.5)

Debian/Ubuntu 系也可以直接安装:

bash 复制代码
sudo apt update && sudo apt install -y nikto

基本用法

最小可用命令是指定主机与端口:

bash 复制代码
nikto -h 127.0.0.1 -p 8080

下面是一次针对本地 8080 端口的真实扫描回显,已截取:

复制代码
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Port:        8080
+ Server: SimpleHTTP/0.6 Python/3.13.9
+ /: The anti-clickjacking X-Frame-Options header is not present.
+ /: The X-Content-Type-Options header is not set.
+ SimpleHTTP/0.6 appears to be outdated (current is at least 1.2).
+ 8078 requests: 4 error(s) and 11 item(s) reported on remote host
+ End Time:           2026-10-14 16:32:29 (GMT8) (22 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

每个 + 行是一条发现。最后一行 + N host(s) tested 表示实际完成扫描的目标数,这个数字是后续排查的入口。

报错 0 host(s) tested

把端口换成一个没有监听的端口:

bash 复制代码
nikto -h 127.0.0.1 -p 8099

返回只剩头尾,没有条目:

复制代码
- Nikto v2.5.0
---------------------------------------------------------------------------
---------------------------------------------------------------------------
+ 0 host(s) tested

0 host(s) tested 的含义不是「没有漏洞」,而是根本没连上目标。常见三种原因:

  • 端口没监听或写错,先用 nmap -p 8099 127.0.0.1 确认端口是否 open;
  • 目标在防火墙后,SYN 被丢弃,表现与端口关闭一致;
  • 目标其实是 HTTPS 却按明文 HTTP 扫,需要显式加 -ssl。

换成确认开放的端口再扫,就会出现与上面一致的 1 host(s) tested。

报错:扫描结束后卡在提交提示

第一次扫陌生服务器时,Nikto 常在结尾停住不动:

复制代码
Portions of the server's headers (Python/3.13.9) are not in
the Nikto 2.5.0 database or are newer than the known string. Would you like
to submit this information (*no server specific data*) to CIRT.net
for a Nikto update (or you may email to sullo@cirt.net) (y/n)?

这是服务器 banner 不在本地特征库里,Nikto 询问是否把该信息提交回官方数据库。它不是报错。自动化脚本里应预先关掉这个交互:

bash 复制代码
nikto -h 127.0.0.1 -p 8080 -ask no

-ask 有三个取值:yes 每次询问(默认)、no 不询问也不发送、auto 不询问直接发送。

扫描前的连通性确认

Nikto 不负责判断端口是否开放,扫描前先用 nmap 把面探清楚:

bash 复制代码
nmap -sV -p 80,443,8080,8443 192.168.1.10

输出里 open 的端口才是 Nikto 的有效目标。对同一个主机同时存在 80 与 443 时,要分别扫两次,HTTP 与 HTTPS 的特征库判断不同:

bash 复制代码
nikto -h 192.168.1.10 -p 443 -ssl

分场景用法

把结果落成 JSON,便于批量收集后统一处理:

bash 复制代码
nikto -h 127.0.0.1 -p 8080 -o nikto.json -Format json

只关心指定类型的检查项时用 -Tuning,例如只跑配置类(2)与注入类(4):

bash 复制代码
nikto -h 127.0.0.1 -p 8080 -Tuning 24

给长时间扫描加一个上限,避免跑不完就中断:

bash 复制代码
nikto -h 127.0.0.1 -p 8080 -maxtime 30s

需要看到全部 200 响应与 HTTP 错误时,打开显示开关:

bash 复制代码
nikto -h 127.0.0.1 -p 8080 -Display 3E

规避 WAF 的编码技巧

-evasion 用编码变形绕过简单规则拦截。例如把请求里的字符做随机 URI 编码:

bash 复制代码
nikto -h 127.0.0.1 -p 8080 -evasion 1

用 /./ 做目录自引用绕过路径规范化:

bash 复制代码
nikto -h 127.0.0.1 -p 8080 -evasion 2

取值从 1 到 8 以及 A、B,含义在 nikto -Help 里有完整列表。开启后请求数会上升,且可能触发 WAF 告警,只在授权测试里用。

结果怎么读

Nikto 的 + 行大致分三类,处理优先级不同:

  • 响应头类,如 The anti-clickjacking X-Frame-Options header is not present,属于加固建议,可以批量修复;
  • 组件与版本类,如 appears to be outdated,要先落到实际组件版本再定;
  • 路径与文件类,如 #wp-config.php# file found,优先级最高,需立即人工确认该文件是否真能读到。

特征库里有一批通用猜测条目,例如对 /%2e/、// 的判断来自规则匹配,命中不代表该服务器真有对应问题。判定方式是手工访问一次该路径,看返回内容是否真的暴露信息。

结尾的 4 error(s) and 11 item(s) reported 中,item(s) 是发现的条目数,error(s) 是请求失败数,两者都要看,错误率高说明这次扫描本身不稳定。

一次完整评估的流程

先确认端口与协议,再按对象分流:

bash 复制代码
nmap -sV -p- 192.168.1.10 -oN ports.txt

对每个开放的 Web 端口分别扫描,HTTP 与 HTTPS 分开跑:

bash 复制代码
nikto -h 192.168.1.10 -p 80 -ask no -o http-80.json -Format json
nikto -h 192.168.1.10 -p 443 -ssl -ask no -o https-443.json -Format json

最后把 JSON 归档,逐条复核头缺失与文件类条目。整个流程里 Nikto 只负责列出可能的问题,不负责判定可利用性。

适用边界

Nikto 面向 HTTP/HTTPS 服务端,不覆盖前端 JavaScript 逻辑,也不会登录后再扫描。它的特征库偏向常见 Web 服务器与应用的历史问题,对自研框架的误报与漏报都偏多。真正判定某个条目是否可利用,仍需回到请求与响应本身。它适合做第一轮的资产面清点,不适合作为漏洞结论的唯一来源。

注意事项

  • + 0 host(s) tested 一律先按连通性问题处理,不要当成「资产干净」。
  • Nikto 是特征匹配扫描器,报出的条目里有相当一部分是 banner 误报,需要人工二次确认。
  • -Tuning 能大幅减少请求数,但也会漏检,正式评估不要为图快裁检查项。
  • 默认会尝试把 banner 信息提交到 CIRT.net,内网或客户环境建议用 -ask no 明确关闭。
  • 请求量很大,上面一次小站点就是 8078 个请求,对生产站点务必限速或安排在窗口期执行。
相关推荐
CALL158119098455 小时前
SVHC 247项与附录XVII限制物质,REACH测试项目有哪些?
运维·安全·安全性测试
言钰解珏5 小时前
记一次自研ai扫描器漏洞能力检测到rce全过程
安全
小羊没烦恼!5 小时前
如何在IIS6,7中部署ASP.NET网站?
数据库·后端·python·web安全·asp.net
看着博客敲代码6 小时前
gobuster 报 the server returns a status code that matches 与 目录爆破用法
安全·网络安全·系统安全
小枣信安7 小时前
MCP安全系列之缺乏日志审计
安全·网络安全·ai安全·大模型安全·智能体安全·mcp安全
SGS官方7 小时前
SGS为紫光国芯颁发ISO 26262:2018汽车功能安全ASIL D流程证书
安全·汽车·检测认证机构·sgs
Xudde.7 小时前
PwnLab: init 靶机渗透测试(Vulnhub Writeup)
笔记·学习·安全·web安全
学逆向的7 小时前
C 数据溢出与精度丢失
c语言·开发语言·网络安全
是真的小外套8 小时前
第14章:恶意代码防范技术原理与应用
网络·网络安全