4. 漏洞扫描工具入门:Nessus、OpenVAS、AWVS、Nikto

说到漏洞扫描,很多人第一反应就是“装个工具跑一遍”。嗯,没那么简单。我见过太多人把扫描报告直接甩给开发,结果被怼回来——全是误报。工具是死的,人是活的。这一章,我带你把四款主流工具摸透,知道它们各自能干什么、不能干什么。

核心观点:没有万能扫描器。Nessus 适合合规基线检查,OpenVAS 适合预算有限的团队,AWVS 专攻 Web 应用逻辑漏洞,Nikto 则是快速侦察的轻骑兵。

四款扫描工具定位对比 Nessus 主机漏洞 + 合规基线 企业级,付费 OpenVAS 主机漏洞扫描 开源,免费 AWVS Web 应用深度扫描 商业,Web专用 Nikto Web 服务器快速侦察 命令行,轻量 使用建议 • 内网合规检查 → Nessus(配合专业版合规模板) • 预算有限/临时任务 → OpenVAS(绿骨头的核心引擎) • Web 应用深度测试 → AWVS + Nikto 快速侦察

4.1 Nessus:安装与配置

Nessus 是我用得最多的商业扫描器。说实话,它的插件库更新速度确实快,0day 出来没几天就能看到检测脚本。我个人习惯在渗透测试的第一轮用 Nessus 做全端口扫描+常见漏洞检测,先把“低垂的果实”摘了。

4.1.1 安装步骤(Debian/Ubuntu)

# 下载 Nessus 安装包(以 10.x 为例)
wget https://www.tenable.com/downloads/api/v1/public/pages/nessus/downloads/13524/download?i_agree_to_tenable_license_agreement=true

# 安装
dpkg -i Nessus-10.7.3-ubuntu1404_amd64.deb

# 启动服务
systemctl start nessusd
systemctl enable nessusd

# 访问 Web 界面
# https://your-ip:8834

小技巧:第一次访问会初始化插件库,这个过程很慢。我建议你晚上跑,第二天早上就好了。如果网络不好,可以手动下载离线插件包。

4.1.2 配置策略模板

Nessus 的策略模板很丰富。我个人常用的几个:

模板名称 适用场景 扫描深度
Basic Network Scan 快速发现开放端口和服务 低
Web Application Tests Web 漏洞专项扫描 中
PCI DSS Compliance 合规基线检查 高
Advanced Scan 自定义深度扫描 自定义

注意:Nessus 的“高级扫描”默认会启用大量插件,扫描时间可能长达数小时。我曾经在客户内网跑了一次全插件扫描,结果把一台老旧的 Windows Server 2003 直接扫蓝屏了。建议先做小范围测试,再扩大范围。

4.2 OpenVAS:基础使用

OpenVAS 是 Greenbone 的开源扫描引擎。说白了,它就是 Nessus 的“平替”——功能类似,但免费。我记得刚入行时,公司没预算买 Nessus,全靠 OpenVAS 撑了两年。它的检测能力其实不差,就是配置起来稍微麻烦点。

4.2.1 安装与启动

# 使用 Greenbone 社区版安装脚本(推荐)
apt update && apt install -y gvm

# 初始化
gvm-setup

# 启动服务
gvm-start

# 访问 Web 界面
# https://your-ip:9392

避坑指南:我曾经在 CentOS 7 上手动编译安装 OpenVAS,折腾了两天。后来发现直接用 gvm 脚本安装,半小时搞定。别重复造轮子。

4.2.2 创建扫描任务

OpenVAS 的扫描流程分三步:配置目标 → 选择扫描配置 → 启动任务。我个人习惯用“Full and fast”配置做第一轮扫描,再用“Full and deep”做第二轮——前者快,后者准。

# 命令行创建扫描任务(示例)
gvm-cli --gmp-username admin --gmp-password pass \
  --xml "<create_task>
    <name>My First Scan</name>
    <config id="daba56c8-73ec-11df-a475-002264764cea"/>
    <target id="..."/>
  </create_task>"

4.3 AWVS:扫描 Web 应用

AWVS(Acunetix Web Vulnerability Scanner)是 Web 应用扫描的“重武器”。它跟 Nessus 不一样——Nessus 是“广”,AWVS 是“深”。AWVS 能爬取 JavaScript 渲染的页面,检测逻辑漏洞、DOM XSS 这些传统扫描器搞不定的东西。

4.3.1 安装与激活

# 下载 AWVS(以 14.x 为例)
wget https://www.acunetix.com/download/.../acunetix_14.5.210713095_x64.sh

# 执行安装
chmod +x acunetix_14.5.210713095_x64.sh
./acunetix_14.5.210713095_x64.sh

# 访问 Web 界面
# https://your-ip:3443

注意:AWVS 的爬虫很“暴力”。我曾经用它扫描一个电商网站,结果爬虫把购物车里的商品全加了一遍,还触发了下单流程。测试前一定要设置好爬取深度和排除路径,别把生产环境搞崩了。

4.3.2 扫描配置要点

AWVS 的扫描配置里,有几个关键参数我每次都会调:

  • Target URL:填写完整的 URL,包括协议和端口
  • Scan Speed:默认是“Fast”,我建议用“Slow”做深度扫描
  • Login Sequence:录制登录流程,让扫描器能爬取登录后的页面
  • Excluded Paths:排除 /logout、/admin 等敏感路径

4.4 Nikto:快速侦察 Web 服务器

Nikto 是我最喜欢的“轻骑兵”。它不装界面,不装数据库,一条命令就能跑。说白了,它就是用来快速摸底的——看看目标服务器上有什么文件、什么版本、有没有已知漏洞。

4.4.1 基础用法

# 基本扫描
nikto -h http://example.com

# 指定端口和 SSL
nikto -h https://example.com -ssl -port 443

# 使用代理(绕过 WAF)
nikto -h http://example.com -useproxy http://127.0.0.1:8080

# 输出结果到文件
nikto -h http://example.com -o report.html -Format html

小技巧:Nikto 的默认扫描会发送大量请求,容易被 WAF 拦截。我习惯加上 -Tuning 123 参数,只扫描文件、配置错误和已知漏洞,减少噪音。

4.4.2 常用参数速查

参数 作用 示例
-h 指定目标主机 -h http://target.com
-ssl 启用 SSL -ssl -port 443
-Tuning 控制扫描模块 -Tuning 123
-output 输出报告 -o report.html
-evasion 绕过 IDS/IPS -evasion 1

实战经验:我通常把 Nikto 放在扫描流程的第一步。先跑一遍 Nikto,看看目标服务器是什么版本、有没有敏感文件。如果发现 /phpinfo.php 或者 /server-status,那基本就找到突破口了。然后再用 AWVS 做深度扫描,效率高很多。

4.5 工具选择建议

说了这么多,你可能会问:到底该用哪个?我的建议是:

  • 预算充足:Nessus(主机)+ AWVS(Web),覆盖最全
  • 预算有限:OpenVAS(主机)+ Nikto(Web),免费但够用
  • 快速侦察:Nikto 打头阵,AWVS 跟进
  • 合规检查:Nessus 的合规模板最成熟