Skip to content

核心工具详解

基于 OWASP ZAP 官方文档(zaproxy.org/docs)+ PortSwigger Burp Suite 文档 + Nmap Network Scanning(nmap.org/book)+ Tenable Nessus 文档 + OWASP DevSecOps Guideline 编写,对照 ZAP 2.x / Burp 2024+ / Nessus 10.x / Nmap 7.x

速查

  • ZAP 主动 vs 被动本质区别:主动发新请求 + 攻击载荷(破坏性);被动只观察不发新请求(零影响)
  • ZAP 主动扫描官方警告:「You should NOT use it on web applications that you do not own」
  • ZAP Scan Policy:预定义含 API Policy / Default / Developer CI-CD / Full / Standard / Penetration Tester / QA;按场景选可控制范围与时长
  • ZAP 被动规则热门 Alert ID:X-Frame-Options=10020、X-Content-Type-Options=10021、HSTS=10035、CSP 缺失=10038、Cookie HttpOnly=10010、Cookie Secure=10011、Cookie SameSite=10054、混合内容=10040、CORS=10098
  • ZAP CSP frame-ancestors 优先级:当存在 CSP frame-ancestors 时,X-Frame-Options 缺失不报警(frame-ancestors 已覆盖)
  • ZAP CI/CD 三 Docker 模式:Baseline(spider + 被动,PR 门禁)/ Full(含主动)/ API Scan(OpenAPI/SOAP/GraphQL);Automation Framework(YAML 驱动)是现代推荐
  • ZAP AddZapHeader.js:给所有 ZAP 流量加 X-ZAP-Initiator 标头,便于 WAF 放行 / 识别扫描器
  • Burp Intruder 四类型:Sniper(1 集轮流,请求数=位数×payload数)/ Battering Ram(1 集同值,请求数=payload数)/ Pitchfork(≤20 集并行,请求数=最小集)/ Cluster Bomb(≤20 集全组合,请求数=乘积)
  • Burp Proxy Intercept:Intercept on 暂停、off 放行;Forward/Drop 控制单条;Match-and-Replace 自动篡改;需装 CA 证书解密 HTTPS
  • Burp 版本差异:Repeater 两版均可用;Intruder Community 限速 / Pro 全功能;主动扫描仅 Professional
  • Nmap -sS 为默认首选:半开扫描不完成三次握手,快且多数系统不记录;需 root;无 root 退到 -sT
  • Nmap -sT 暴露意图:全连接被 syslog 记录;隐蔽场景应选 -sS 或 -sI Idle 扫描
  • Nmap 五端口状态:open / closed / filtered(防火墙阻断)/ unfiltered(ACK 无法定开/关)/ open|filtered(UDP / 隐蔽扫描常见)
  • Nmap -A:等价于 -sV -O --script + traceroute,激进扫描
  • Nmap NSE 分类:default / safe / vuln / brute / exploit / auth / broadcast / version
  • Nessus 凭据 vs 无凭据:无凭据看 banner(可能不准),凭据看本地补丁 / 配置 / 合规基线(CIS / PCI / HIPAA)
  • Nessus 凭据通道:SSH(密码 / 密钥,读 rpm / dpkg / lslpp / swlist 包清单)/ Windows SMB(本地管理员访问注册表与管理共享)
  • Nessus plugin 21745:检测凭据失败;凭据扫描失败会静默退化为无凭据,必须主动核对
  • Nessus Windows 需本地管理员:才能做 direct file analysis 判断真实补丁级别
  • 核心反模式:对生产 / 非自有跑主动扫描、Cluster Bomb 当默认、无凭据声称覆盖完整、NULL/FIN/Xmas 扫 Windows、期望主动扫描发现业务逻辑漏洞、前端只配 SAST 不配 SCA

OWASP ZAP

主动扫描(Active Scan)

主动扫描会发实际攻击载荷——XSS / SQLi / 路径遍历等测试向量,因此对目标会产生真实影响。OWASP 官方明确警告:「You should NOT use it on web applications that you do not own」

  • 触发方式:Active Scan 标签 / Sites 右键 Attack / History 右键 / API(GET/POST /JSON/ascan/action/scan
  • Scan Policy:决定运行哪些规则;预定义含 API Policy / Default / Developer CI-CD Standard / Full / Standard / Penetration Tester / QA
  • Modern Automation:Automation Framework 的 activeScan Job,YAML 驱动

主动扫描本质是攻击行为——会产生破坏性载荷(如注入测试可能写入 / 删除数据),对生产或他人系统运行属违法且可能造成数据损坏。只在自有 / 受控环境执行。

被动扫描(Passive Scan)

被动扫描只观察经代理流量,不发任何新请求——因此零影响可高频跑,是 DAST 进入 CI/CD 的低成本入口。

  • Passive Scanner add-on:监听经 ZAP 代理的 HTTP / WebSocket 流量
  • 规则按 Alert ID 编号
Alert ID检查项
10020X-Frame-Options 缺失
10021X-Content-Type-Options 缺失
10035HSTS 缺失
10038CSP 缺失
10055CSP 分析(规则缺陷)
10010Cookie HttpOnly 缺失
10011Cookie Secure 缺失
10054Cookie SameSite 缺失
90033Cookie 松散作用域
10036Server 头版本泄露
10037X-Powered-By 泄露
10062PII(敏感信息)
90003SRI(子资源完整性)缺失
10108反向标签劫持
10202CSRF 防护缺失
10040混合内容
10098CORS 配置错误
10097Hash 泄露
  • CSP frame-ancestors 优先级:当响应存在 CSP frame-ancestors 时,X-Frame-Options 缺失不报警(已被 frame-ancestors 覆盖)

代理与脚本

  • 本地代理:浏览器流量 → ZAP 代理(默认 localhost:8080)→ 目标站点
  • AddZapHeader.js:给所有 ZAP 流量加 X-ZAP-Initiator 标头,便于 WAF / IDS 放行 + 白名单
  • Trusted Domainsrules.domains.trusted 配置可信域名正则
  • Script Console:支持 Script Scan Rules 自定义主动规则

Docker 扫描与 Automation Framework

模式内容适用场景
Baseline Scanspider(默认 1 分钟)+ 被动扫描,无攻击载荷CI/CD PR 门禁(被动零影响)
Full Scanspider + 被动 + 主动攻击预发布 / 夜间构建(隔离环境)
API Scan按 OpenAPI / SOAP / GraphQL 定义扫描API 项目
Automation FrameworkYAML 驱动编排 spider / activeScan / passiveScan现代推荐方案,取代旧 Docker 脚本

被动扫描只看经代理的流量——未浏览的页面 / 参数不会被覆盖,覆盖度取决于爬虫深度。Baseline 结果不等于完整漏洞评估。

Burp Suite

Proxy Intercept(拦截代理)

工作流:浏览器 → Burp Proxy(拦截 / 编辑)→ 服务器。

操作行为
Intercept on暂停每条消息,等待手动处理
Intercept off自动放行(仍记录历史)
Forward / Forward all放行单条 / 全部
Drop / Drop all丢弃单条 / 全部
编辑可修改请求 / 响应与目标地址
Match and Replace自动篡改请求 / 响应(含脚本创建)
WebSocket支持拦截 WebSocket 消息
HTTP/2支持编辑

HTTPS 解密需安装 Burp CA 证书到浏览器 / 系统信任根。

Repeater(重放)

手动重放与修改单条 HTTP 请求的利器:

  • 多标签并行,每个标签独立编辑请求
  • 完整保留修改轨迹与历史
  • Community 与 Professional 两版均可用
  • 渗透测试人员验证漏洞存在性的主力

Intruder(四种攻击类型)

四种攻击类型的 payload 集数量与请求数公式:

类型payload 集数分配方式请求数公式典型场景
Sniper1逐位置轮流插入同一集位置数 × payload 数单参数模糊测试
Battering Ram1所有位置同值payload 数多位置同值(如多字段同密码)
Pitchfork≤20多集同步并行迭代最小集大小多位置相关不同值
Cluster Bomb≤20多集全组合所有集乘积用户名 + 密码独立爆破

Cluster Bomb 请求数爆炸:1000×1000=百万请求,既拖垮目标(构成 DoS)又淹没有效结果。只有独立未知值才用 Cluster Bomb,多位置相关不同值用 Pitchfork。

Community vs Professional

功能CommunityProfessional
Proxy Intercept
Repeater
Intruder限速全功能
主动扫描(Burp Scanner)
价格免费付费

2024+ 版本 Community 与 Professional 合并安装器、共用代码库。

Nessus

扫描模板

模板用途
Basic Network Scan基础网络漏洞扫描
Host Discovery主机发现(仅探活)
Web ApplicationWeb 应用扫描
Malware恶意软件检测
Advanced Scan自定义高级扫描
Credentialed Patch Audit凭据补丁审计

凭据扫描(Credentialed Checks)

凭据扫描通过登录目标读取本地视角,覆盖率与准确率远超无凭据。

凭据通道验证方式能拿到
SSH(密码 / 密钥)rpm / dpkg / lslpp / swlist 包清单输出Linux 补丁清单、配置、合规基线
Windows SMB(本地管理员)注册表 + 管理共享访问Windows 补丁、配置、direct file analysis

铁律

  • 优先使用凭据扫描:无凭据扫描只能从外部视角看,依赖服务 banner(Tenable 官方明确「may be inconclusive or incorrect」)
  • plugin 21745 检测凭据失败:SSH / SMB 登录失败会让凭据扫描静默退化为无凭据扫描,必须主动核对 21745 与补丁清单是否成功
  • Windows 需本地管理员:才能做 direct file analysis 判断真实补丁级别;普通用户读取的注册表信息可能不准

插件与版本

  • 插件用 NASL(Nessus Attack Scripting Language) 编写
  • family 分组(如 Windows / Web Servers / Databases)
  • 映射 CVE(如 CVE-2024-XXXX)
  • 产品线:Nessus Essentials(免费 5 IP)/ Expert / Professional / Manager
  • 与 Tenable Vulnerability Management / Security Center 集成

Nmap

端口扫描标志(一次只能用一种)

标志名称原理权限要求隐蔽性
-sSSYN 半开扫描发 SYN,收到 SYN/ACK 后发 RST 不完成三次握手需 root默认首选,多数系统不记录
-sTTCP 全连接完成三次握手普通被 syslog 记录,暴露意图
-sUUDP 扫描发 UDP 包等 ICMP普通慢(ICMP 限速),可与 -sS 组合
-sN / -sF / -sXNULL / FIN / Xmas利用 RFC 793(关闭端口回 RST,开放端口无响应)需 root主要对 Unix 有效Windows / Cisco 误判(全端口回 RST)
-sAACK 扫描发 ACK,映射防火墙规则需 root结果为 unfiltered / filtered
-sWWindow 扫描利用 TCP 窗口大小需 root部分操作系统可识别开放端口
-sMMaimon 扫描FIN/ACK需 root类似 NULL/FIN/Xmas
-sIIdle 空闲扫描借僵尸主机需 root真盲扫(隐藏真实 IP)
-sOIP 协议扫描发不同 IP 协议号需 root识别支持的协议
-bFTP bounce借 FTP 代理普通老旧扫描,多数 FTP 已关闭

-sS 为默认首选的原因:不完成三次握手,速度快且多数系统不记录;-sT 会留下完整连接日志易暴露。

五种端口状态

状态含义产生扫描
open应用接受 TCP 连接 / UDP 包-sS / -sT / -sU
closed可达但无监听-sS / -sT
filtered防火墙 / 路由器阻断,无法判定多种
unfiltered可达但 ACK 扫描无法定开/关-sA
open|filtered无法区分开放还是过滤-sU / 隐蔽扫描(-sN/-sF/-sX)

服务版本与 OS 指纹

标志作用
-sV服务版本探测(探明 nginx 1.25.4 / OpenSSH 9.6 等)
-OOS 指纹(TCP/IP 协议栈指纹识别)
-A激进扫描(等价于 -sV -O --script + traceroute
--scriptNSE 脚本(如 --script vuln
--script-args给脚本传参

NSE(Nmap Scripting Engine)

NSE 脚本按分类组织:

分类用途
default默认安全基础扫描
safe不会崩溃目标的安全脚本
vuln漏洞检测(如 heartbleed、shellshock)
brute口令爆破(FTP / SSH / HTTP)
exploit主动利用漏洞
auth绕过鉴权或枚举用户
broadcast局域网广播发现
version服务版本扩展探测

--script 后可接分类名(如 --script vuln)或具体脚本名(如 --script ssl-heartbleed)。

前端 SAST / DAST / SCA

SAST(Static Application Security Testing)

白盒分析源码 / 字节码 / 二进制,在编码期发现自写代码缺陷。

  • 代表工具:ESLint security 插件 / SonarQube / Semgrep / CodeQL
  • 能发现:SQL 拼接、eval() / innerHTML 危险 API、硬编码密钥、原型污染 sink
  • 看不到:运行时配置错误、依赖 CVE、业务逻辑漏洞
  • 集成位置:IDE 实时检查 / pre-commit hook / CI 流水线

DAST(Dynamic Application Security Testing)

黑盒测试运行中的应用,注入载荷发现运行时漏洞。

  • 代表工具:OWASP ZAP / Burp Scanner / Nessus Web Application
  • 能发现:认证绕过、注入、配置错误、HTTP 安全头缺失
  • 看不到:源码级缺陷、依赖 CVE
  • 集成位置:预发布环境 / 夜间构建

SCA(Software Composition Analysis)

扫描第三方 / 开源依赖,识别已知 CVE 与许可证问题。

  • 代表工具:npm audit / Snyk / Dependabot / Renovate
  • 能发现:依赖中的已知 CVE、许可证冲突(GPL / AGPL 商业风险)
  • 看不到:自写代码缺陷、业务逻辑漏洞
  • 集成位置package-lock.json 提交后 CI 自动跑

前端项目核心反模式:只配 SAST 不配 SCA。前端自写代码漏洞占比低,真正高危多在 node_modules 依赖里——漏配 SCA 等于放任供应链风险。

三类工具为何必须互补

OWASP DevSecOps Guideline 明确三类工具的盲区:

text
SAST 看不到 → 运行时配置错误 + 依赖 CVE
DAST 看不到 → 源码级缺陷 + 依赖 CVE
SCA 看不到 → 业务逻辑漏洞 + 自写代码缺陷

只用一种会有系统性盲区,必须 SAST + DAST + SCA + 人工渗透组合

业务逻辑漏洞(如越权 broken access control)三类工具都发现不了——OWASP ZAP 官方文档明确自动化扫描只能发现特定类型漏洞,逻辑漏洞必须人工渗透测试。

分层扫描策略

最佳实践:按影响大小与频率分层调度。

工具频率理由
被动扫描ZAP BaselineCI 每次提交 / PR零影响可高频跑
主动扫描ZAP Full Scan预发布 / 夜间会发攻击流量,必须隔离环境低频
凭据扫描Nessus Credentialed每周拿本地补丁 / 配置清单
端口扫描Nmap周期性资产清点识别新开放端口、服务变化
依赖扫描SCA(npm audit / Snyk)package-lock 提交触发性价比最高的前端安全投入
代码扫描SAST(ESLint security)IDE / pre-commit编码期消灭自写代码缺陷

扫描结果按 Risk × Confidence 分级处理,高置信度高风险优先修复。扫描器存在误报,盲目全修成本高。

反模式(避坑)

  • 对生产环境或非自有系统跑 ZAP 主动 / Nessus / Nmap -A:这是攻击行为,可能违法且造成服务中断或数据破坏
  • 用 Nmap -sT 做隐蔽侦察且期望不被发现:全连接被 syslog 记录,暴露意图;隐蔽场景应选 -sS 或 -sI Idle 扫描
  • 把 Intruder Cluster Bomb 当默认选择:1000×1000=百万请求爆炸,拖垮目标构成 DoS;只有独立未知值(用户名 + 密码同时爆破)才用
  • 只跑 Nessus 无凭据扫描就声称覆盖完整:无凭据漏掉补丁 / 配置 / 合规类本地漏洞,且依赖可能不准的 banner
  • 期望主动扫描能发现业务逻辑漏洞(如越权):OWASP ZAP 文档明确指出自动化只能发现特定类型漏洞,逻辑漏洞必须人工渗透
  • 用 NULL / FIN / Xmas(-sN/-sF/-sX)扫 Windows / Cisco 并采信结果:这些系统不遵循 RFC 793,会对所有端口回 RST,全部误判为 closed
  • 只信任单一工具结果:ZAP / Burp / Nessus / Nmap 各有盲区,不做交叉验证会漏报;正确做法是 SAST + DAST + SCA + 人工组合
  • 把 ZAP Baseline(被动)结果当作完整漏洞评估:被动扫描只看经代理流量,未浏览的页面 / 参数不被覆盖,覆盖度取决于爬虫深度
  • 扫描后忽略凭据失败信号:Nessus plugin 21745 无结果 ≠ 扫描成功——SSH/SMB 登录失败会让凭据扫描静默退化为无凭据扫描
  • 前端项目只配 SAST 不配 SCA:前端自写代码漏洞占比低,真正高危多在 node_modules 依赖里,漏配 SCA 等于放任供应链风险
  • 用 --scanflags 自定义标志却不指定基础扫描类型:Nmap 会默认用 SYN 逻辑解释响应,可能导致状态判断错误
  • 扫描前没在 WAF 配 X-ZAP-Initiator 标头放行:扫描流量会被 WAF 拦截导致漏报,或触发安全告警 / 封 IP

下一步

  • 参考:四大工具对比表、ZAP 被动规则 Alert ID 表、Burp Intruder 攻击类型公式表、Nmap 端口状态与扫描标志对照表、官方资源链接