参考
基于 OWASP ZAP 官方文档 + PortSwigger Burp Suite 文档 + Nmap Network Scanning + Tenable Nessus 文档 + OWASP DevSecOps Guideline 编写,对照 ZAP 2.x / Burp 2024+ / Nessus 10.x / Nmap 7.x
速查
- 四大工具分工:ZAP / Burp 看 Web 应用层;Nessus / Nmap 看主机与网络层
- ZAP 主动 vs 被动:主动发新请求 + 攻击载荷(破坏性);被动只观察不发新请求(零影响)
- ZAP CI/CD 三 Docker 模式:Baseline(spider + 被动)/ Full(含主动)/ API Scan(OpenAPI/SOAP/GraphQL);Automation Framework(YAML)是现代推荐
- Burp Intruder 四类型请求数公式:Sniper=位×payload / Battering Ram=payload / Pitchfork=最小集 / Cluster Bomb=乘积
- Burp 版本差异:Repeater 两版均可用;Intruder Community 限速 / Pro 全功能;主动扫描仅 Professional
- Nmap 默认 -sS:半开扫描需 root 快且隐蔽;无 root 退到 -sT
- Nmap 五端口状态:open / closed / filtered / unfiltered / open|filtered
- Nessus 凭据 vs 无凭据:无凭据看 banner 不准,凭据看本地补丁 / 配置 / 合规
- Nessus plugin 21745:检测凭据失败;凭据失败会静默退化为无凭据
- SAST/DAST/SCA 分工:SAST 白盒看源码 / DAST 黑盒测运行时 / SCA 扫依赖
- 核心反模式:对生产跑主动扫描、Cluster Bomb 当默认、无凭据声称完整、NULL/FIN/Xmas 扫 Windows、前端只配 SAST 不配 SCA
- 完整说明见 入门 / 核心工具详解
四大工具对比表
| 维度 | OWASP ZAP | Burp Suite | Nessus | Nmap |
|---|---|---|---|---|
| 定位 | Web 应用扫描 | Web 渗透代理 | 主机漏洞扫描 | 端口与服务侦察 |
| 目标层 | Web 应用层 | Web 应用层 | 主机与网络层 | 主机与网络层 |
| 协议 | HTTP / WebSocket | HTTP / WebSocket | TCP / SSH / SMB | TCP / UDP / ICMP |
| 典型漏洞 | OWASP Top 10 类 | OWASP Top 10 类(手工验证) | 补丁 / 配置 / 合规 | 端口暴露 / 服务指纹 |
| 价格 | 完全开源免费 | Community 免费 / Pro 付费 | Essentials 免费 5 IP / Pro 付费 | 开源免费 |
| 维护方 | Checkmarx(OWASP 主导) | PortSwigger | Tenable | nmap.org 项目 |
| 是否发攻击流量 | 主动扫描发 / 被动不发 | Intruder / Scanner 发 | 默认发探测(凭据只读不发攻击) | 发探测包 |
| 前端工程师重点 | 被动扫描(HTTP 安全头 / Cookie) | Proxy / Repeater 手工验证 | 由运维主导 | 由运维主导 |
前端工程师重点掌握:ZAP 被动扫描(HTTP 安全头 / Cookie)+ SCA(依赖 CVE)+ Burp Proxy / Repeater 手工验证;Nmap / Nessus 多由运维 / 安全团队主导。
OWASP ZAP 被动扫描规则 Alert ID 表
| Alert ID | 检查项 | 类别 |
|---|---|---|
| 10010 | Cookie HttpOnly 缺失 | Cookie 安全 |
| 10011 | Cookie Secure 缺失 | Cookie 安全 |
| 10054 | Cookie SameSite 缺失 | Cookie 安全 |
| 90033 | Cookie 松散作用域 | Cookie 安全 |
| 10020 | X-Frame-Options 缺失(防 clickjacking) | HTTP 安全头 |
| 10021 | X-Content-Type-Options 缺失(防 MIME 嗅探) | HTTP 安全头 |
| 10035 | HSTS 缺失(防 SSL Strip) | HTTP 安全头 |
| 10038 | CSP 缺失 | HTTP 安全头 |
| 10055 | CSP 分析(规则缺陷) | HTTP 安全头 |
| 10036 | Server 头版本泄露 | 信息泄露 |
| 10037 | X-Powered-By 泄露 | 信息泄露 |
| 10062 | PII(敏感信息) | 信息泄露 |
| 10097 | Hash 泄露 | 信息泄露 |
| 90003 | SRI(子资源完整性)缺失 | 资源完整性 |
| 10108 | 反向标签劫持 | 客户端 |
| 10202 | CSRF 防护缺失 | 会话 |
| 10040 | 混合内容 | HTTPS |
| 10098 | CORS 配置错误 | 跨域 |
CSP frame-ancestors 优先级:当响应存在 CSP
frame-ancestors时,X-Frame-Options 缺失不报警(已被 frame-ancestors 覆盖)。
Burp Intruder 攻击类型公式表
| 类型 | payload 集数 | 分配方式 | 请求数公式 | 典型场景 |
|---|---|---|---|---|
| Sniper | 1 | 逐位置轮流插入同一集 | 位置数 × payload 数 | 单参数模糊测试(如测 SQLi) |
| Battering Ram | 1 | 所有位置同值 | payload 数 | 多位置同值(如多字段同密码) |
| Pitchfork | ≤20 | 多集同步并行迭代 | 最小集大小 | 多位置相关不同值(如用户名 + 角色) |
| Cluster Bomb | ≤20 | 多集全组合 | 所有集乘积 | 用户名 + 密码独立爆破 |
Cluster Bomb 请求数爆炸示例:用户名集 1000 × 密码集 1000 = 100 万请求,既拖垮目标(构成 DoS)又淹没有效结果。只有独立未知值才用 Cluster Bomb。
Burp Proxy Intercept 操作表
| 操作 | 行为 |
|---|---|
Intercept on | 暂停每条消息,等待手动处理 |
Intercept off | 自动放行(仍记录历史) |
Forward | 放行当前消息 |
Forward all | 放行全部队列 |
Drop | 丢弃当前消息 |
Drop all | 丢弃全部队列 |
| 编辑 | 可修改请求 / 响应与目标地址 |
Match and Replace | 自动篡改请求 / 响应(含脚本创建) |
| WebSocket 拦截 | 支持拦截 WebSocket 消息 |
| HTTP/2 | 支持编辑 |
HTTPS 解密需安装 Burp CA 证书到浏览器 / 系统信任根。
Burp Suite Community vs Professional
| 功能 | Community | Professional |
|---|---|---|
| Proxy Intercept | ✅ | ✅ |
| Repeater | ✅ | ✅ |
| Intruder | 限速 | 全功能 |
| 主动扫描(Burp Scanner) | ❌ | ✅ |
| Match-and-Replace | ✅ | ✅ |
| 价格 | 免费 | 付费 |
2024+ 版本 Community 与 Professional 合并安装器、共用代码库。
Nmap 端口扫描标志对照表
| 标志 | 名称 | 原理 | 权限 | 隐蔽性 | 备注 |
|---|---|---|---|---|---|
| -sS | SYN 半开 | 发 SYN 不完成三次握手 | 需 root | 默认首选,多数系统不记录 | 无 root 时退到 -sT |
| -sT | TCP 全连接 | 完成三次握手 | 普通 | 被 syslog 记录 | 暴露意图 |
| -sU | UDP | 发 UDP 等 ICMP | 普通 | 慢(ICMP 限速) | 可与 -sS 组合 |
| -sN / -sF / -sX | NULL / FIN / Xmas | 利用 RFC 793 | 需 root | 主要 Unix 有效 | Windows / Cisco 误判 |
| -sA | ACK | 映射防火墙规则 | 需 root | 结果 unfiltered / filtered | 不报开/关 |
| -sW | Window | 利用 TCP 窗口大小 | 需 root | 部分系统可识别 | - |
| -sM | Maimon | FIN/ACK | 需 root | 类似 NULL/FIN/Xmas | BSD 派生 |
| -sI | Idle | 借僵尸主机 | 需 root | 真盲扫 | 隐藏真实 IP |
| -sO | IP 协议 | 发不同 IP 协议号 | 需 root | 识别支持协议 | - |
| -b | FTP bounce | 借 FTP 代理 | 普通 | 老旧 | 多数 FTP 已关闭 |
Nmap 五端口状态
| 状态 | 含义 | 产生扫描 |
|---|---|---|
| open | 应用接受 TCP 连接 / UDP 包 | -sS / -sT / -sU |
| closed | 可达但无监听 | -sS / -sT |
| filtered | 防火墙 / 路由器阻断 | 多种 |
| unfiltered | 可达但 ACK 无法定开/关 | -sA |
| open|filtered | 无法区分开放还是过滤 | -sU / 隐蔽扫描 |
Nmap 服务 / OS / NSE 标志
| 标志 | 作用 |
|---|---|
| -sV | 服务版本探测(nginx 1.25.4 / OpenSSH 9.6) |
| -O | OS 指纹(TCP/IP 协议栈指纹) |
| -A | 激进扫描(等价 -sV -O --script + traceroute) |
| --script | NSE 脚本(--script vuln 或 --script ssl-heartbleed) |
| --script-args | 给脚本传参 |
| --scanflags | 自定义 TCP 标志(必须配合基础扫描类型,否则用 SYN 逻辑解释响应) |
NSE 脚本分类
| 分类 | 用途 |
|---|---|
| default | 默认安全基础扫描 |
| safe | 不会崩溃目标的安全脚本 |
| vuln | 漏洞检测(heartbleed / shellshock) |
| brute | 口令爆破(FTP / SSH / HTTP) |
| exploit | 主动利用漏洞 |
| auth | 绕过鉴权或枚举用户 |
| broadcast | 局域网广播发现 |
| version | 服务版本扩展探测 |
Nessus 扫描模板与凭据通道
扫描模板
| 模板 | 用途 |
|---|---|
| Basic Network Scan | 基础网络漏洞扫描 |
| Host Discovery | 主机发现(仅探活) |
| Web Application | Web 应用扫描 |
| Malware | 恶意软件检测 |
| Advanced Scan | 自定义高级扫描 |
| Credentialed Patch Audit | 凭据补丁审计 |
凭据通道
| 凭据通道 | 验证方式 | 能拿到 |
|---|---|---|
| SSH(密码 / 密钥) | rpm / dpkg / lslpp / swlist 包清单 | Linux 补丁、配置、合规基线 |
| Windows SMB(本地管理员) | 注册表 + 管理共享 | Windows 补丁、配置、direct file analysis |
铁律:①优先使用凭据扫描(无凭据依赖 banner 不准);②plugin 21745 检测凭据失败(必须主动核对);③Windows 需本地管理员才能做 direct file analysis。
产品线
| 产品 | 定位 |
|---|---|
| Nessus Essentials | 免费 5 IP(个人 / 学习) |
| Nessus Expert | 中小企业 |
| Nessus Professional | 专业版(含全部插件) |
| Nessus Manager | 集中管理多扫描器 |
ZAP Docker 扫描模式对比
| 模式 | 内容 | 适用场景 | 是否发攻击 |
|---|---|---|---|
| Baseline Scan | spider(默认 1 分钟)+ 被动扫描 | CI/CD PR 门禁 | ❌ 无攻击载荷 |
| Full Scan | spider + 被动 + 主动攻击 | 预发布 / 夜间构建 | ✅ 发攻击载荷 |
| API Scan | 按 OpenAPI / SOAP / GraphQL 定义扫描 | API 项目 | 可选 |
| Automation Framework | YAML 驱动编排 spider / activeScan / passiveScan | 现代推荐,取代旧 Docker 脚本 | 按配置 |
Baseline 扫描结果不等于完整漏洞评估——被动扫描只看经代理流量,覆盖度取决于爬虫深度。
SAST / DAST / SCA 对比表
| 维度 | SAST(白盒) | DAST(黑盒) | SCA(依赖扫描) |
|---|---|---|---|
| 测试对象 | 源码 / 字节码 / 二进制 | 运行中的应用 | 第三方 / 开源依赖 |
| 访问需求 | 白盒(需源码) | 黑盒(只需 URL) | 锁文件(package-lock.json) |
| SDLC 阶段 | 编码期(IDE / pre-commit) | 测试 / 预发布期 | 提交期(CI) |
| 能发现 | 自写代码缺陷(SQL 拼接 / 硬编码密钥 / 危险 API) | 运行时漏洞(认证 / 注入 / 配置) | 已知 CVE / 许可证冲突 |
| 看不到 | 运行时配置、依赖 CVE | 源码级缺陷、依赖 CVE | 业务逻辑漏洞 |
| 代表工具 | ESLint security / SonarQube / Semgrep / CodeQL | OWASP ZAP / Burp Scanner / Nessus | npm audit / Snyk / Dependabot / Renovate |
| 误报率 | 较高(无法验证执行路径) | 较低(实际触发) | 极低(CVE 已确认) |
核心理念:三者互补不可互替。SAST 守自写代码、DAST 验运行时、SCA 管依赖;只用一种会有系统性盲区。业务逻辑漏洞(越权)三类工具都发现不了。
分层扫描策略表
| 层 | 工具 | 频率 | 理由 |
|---|---|---|---|
| 被动扫描 | ZAP Baseline | CI 每次提交 / PR | 零影响可高频跑 |
| 主动扫描 | ZAP Full Scan | 预发布 / 夜间 | 会发攻击流量,必须隔离低频 |
| 凭据扫描 | Nessus Credentialed | 每周 | 拿本地补丁 / 配置清单 |
| 端口扫描 | Nmap | 周期性资产清点 | 识别新开放端口、服务变化 |
| 依赖扫描 | SCA(npm audit / Snyk) | package-lock 提交触发 | 性价比最高的前端安全投入 |
| 代码扫描 | SAST(ESLint security) | IDE / pre-commit | 编码期消灭自写代码缺陷 |
官方资源
- OWASP ZAP:https://www.zaproxy.org/docs/(主动 / 被动 / Scan Policy / Automation Framework / API Reference)
- OWASP ZAP GitHub:https://github.com/zaproxy/zaproxy
- OWASP ZAP Docker:https://www.zaproxy.org/docs/docker/(Baseline / Full / API Scan)
- Burp Suite 官方文档:https://portswigger.net/burp/documentation/desktop(Proxy / Repeater / Intruder)
- Burp Suite Release Notes:https://portswigger.net/burp/releases
- Burp Intruder 攻击类型:https://portswigger.net/burp/documentation/desktop/tools/intruder/attack-types
- Nmap Network Scanning:https://nmap.org/book/(端口扫描技术 / NSE / 服务与 OS 识别)
- Nmap NSE 脚本目录:https://nmap.org/nsedoc/
- Tenable Nessus 文档:https://docs.tenable.com/Nessus.htm(扫描模板 / Credentialed Checks)
- Nessus Credentialed Checks:https://docs.tenable.com/nessus/Content/NessusCredentialedChecks.htm
- OWASP DevSecOps Guideline - DAST:https://owasp.org/www-project-devsecops-guideline/latest/02b-Dynamic-Application-Security-Testing
- OWASP Top 10:https://owasp.org/Top10/(现行 2025 版)