动态评估:主动漏洞扫描
文档API参考本地扫描阶段动态评估,主动漏洞扫描复制页面核心扫描阶段,在每个插入点注入载荷以检测Web应用程序中的漏洞。复制页面动态评估阶段(原审计)是发送修改后请求以检测漏洞的扫描层。它接收来自所有输入源(爬取、爬虫、内容发现、手动导入)的流量,并在每个插入点系统性地注入载荷以识别安全问题。
阶段别名:dynamic-assessment 是规范名称。audit、dast 和 assessment 是 --only / --skip 标志接受的别名。vigolium-configs.yaml 中的配置块使用规范键 dynamic-assessment。
工作原理 HttpRequestResponse(来自任何来源) │ ▼ ┌────────────────────────────────────────────────────┐ │ 执行器(工作池) │ │ 1. 获取基线响应 │ │ 2. 扫描范围过滤 + 静态文件排除 │ │ 3. 从请求中提取插入点 │ │ 4. 分发到匹配的模块 │ └────────────────┬──────────────┬────────────────────┘ │ │ ┌────────┘ └────────┐ ▼ ▼ ┌───────────────────┐ ┌───────────────────────┐ │ 主动模块 │ │ 被动模块 │ │ 发送带有注入 │ │ 分析现有的请求/响应 │ │ 载荷的修改后请求 │ │ 不产生新流量 │ └────────┬──────────┘ └──────────┬────────────┘ │ │ └──────────┬─────────────────┘ ▼ ResultEvent 漏洞发现
插入点
主动模块在请求的特定位置注入载荷:
| 插入点 | 描述 |
|:-------|:-----|
| URL参数 | 查询字符串值 (?key=PAYLOAD) |
| 主体参数 | POST主体值 |
| Cookie | Cookie值 |
| 头部 | HTTP头部值 |
| JSON值 | JSON请求主体内的值 |
| XML值/属性 | XML主体中的值和属性 |
| URL路径组件 | 文件夹和文件名段 |
| 参数名称 | 参数键名(URL和主体) |
| 整个主体 | 完整请求主体替换 |
每个插入点提供 BuildRequest(payload) 来构造修改后的请求,以及 PayloadOffsets(payload) 来定位载荷在响应中出现的位置。
模块类型
主动模块
主动模块发送修改后的请求并分析响应以检测漏洞。三种扫描粒度:
| 方法 | 范围 | 用例 |
|:-----|:-----|:-----|
| ScanPerInsertionPoint | 每个参数 | 注入漏洞(XSS、SQLi、XXE) |
| ScanPerRequest | 每个唯一请求 | 逻辑缺陷、访问控制 |
| ScanPerHost | 每个主机 | 主机级检查,每个目标一次 |
每个模块声明它处理的 ScanScope 和 InsertionPointType。执行器仅分发匹配的工作。
被动模块
被动模块分析请求/响应对而不产生流量:
| 方法 | 范围 | 用例 |
|:-----|:-----|:-----|
| ScanPerRequest | 每个请求/响应 | 头部检查、秘密检测 |
| ScanPerHost | 每个主机 | 聚合分析、异常排名 |
实现 Flusher 接口的模块在扫描结束时运行终结逻辑(例如,异常基线排名)。
DiffScan 框架 大多数基于注入的模块使用共享的 DiffScan 框架进行差分响应分析:
- Probe - 为漏洞类别定义中断字符串和转义载荷
- Attack - 跨多次探测尝试跟踪状态(基线 vs. 当前)
- ResponseSnapshot - 捕获指纹响应属性以进行比较
- 反射检测 - 识别注入载荷如何在响应中体现
- 定量测量 - 统计响应变化(时间、大小、关键词频率)
当注入载荷导致与基线响应可测量且一致的偏差时,确认漏洞。
内置扫描检查 主动
- 反射型 XSS(上下文感知:HTML、JS、属性上下文)
- SQL 注入(基于错误、盲差分)
- XML 外部实体注入(XXE)
- 服务端请求伪造(SSRF)
- OS 命令注入
- 路径遍历
被动
- 缺失安全头部(CSP、HSTS、X-Frame-Options)
- Cookie 安全性(HttpOnly、Secure、SameSite 标志)
- CORS 配置错误
- 基于 DOM 的 XSS(JavaScript 源码分析)
- 秘密/API 密钥暴露
- 源映射检测
- Content-Type 不匹配
- 混合内容
- OAuth 配置错误
每个模块的漏洞发现上限 为防止嘈杂模块淹没结果,执行器限制每个模块发出的漏洞发现数量。一旦模块达到限制,该模块的额外漏洞发现在扫描剩余部分被抑制。
# 覆盖默认上限(默认:10)
vigolium scan -t https://example.com --max-findings-per-module 25
# 禁用上限(无限制漏洞发现)
vigolium scan -t https://example.com --max-findings-per-module 0
在 vigolium-configs.yaml 中的配置:
速率限制与去重
- 每主机速率限制 - 每个目标的可配置请求速率
- 请求去重 - 防止发送相同的修改后请求
- 基线缓存 - 缓存基线响应以避免冗余获取
- 响应缓冲池复用 - 回收 32KiB 缓冲区以减少 GC 压力
- 主体大小强制执行 - 对过大响应进行丢弃、截断或跳过扫描
上一个插件扫描针对目标运行自定义 JavaScript 或 YAML 插件模块,可与内置扫描器模块一起使用或替代它们。下一个⌘I网站推特GitHubDiscordX领英技术支持本文档基于 Mintlify 构建和托管,一个开发者文档平台本页内容工作原理插入点模块类型主动模块被动模块DiffScan 框架内置扫描检查主动被动每个模块的漏洞发现上限速率限制与去重