S-CClaw/openclaw-vulnerability-scanner
GitHub: S-CClaw/openclaw-vulnerability-scanner
基于 AI 代理的自动化漏洞扫描系统,实现从智能扫描、威胁情报映射到攻击场景生成与可视化报告的全流程闭环。
Stars: 4 | Forks: 0
# 🦞 OpenClaw 漏洞扫描器
**由自主 AI 代理 OpenClaw 驱动的自动化漏洞分析系统。**
OpenClaw 接收一个提示词,并自主处理整个流程 ——
**漏洞扫描 → 攻击场景生成 → 结果可视化**
**English** | [한국어](README_ko.md)












## 系统架构

## 演示
## 核心功能
| 功能 | 描述 |
|---------|-------------|
| **自主漏洞扫描** | AI 代理分析模板并自主确定最优执行顺序 |
| **上下文链接** | 自动将先前扫描的发现(token、ID 等)注入到后续的 payload 中 |
| **威胁情报映射** | 通过 CWE → CAPEC → MITRE ATT&CK 层级结构映射发现的漏洞 |
| **AI 攻击场景** | 根据映射的 TTP 生成攻击前提条件、逐步场景、影响评估和修复建议 |
| **交互式仪表板** | 将 CWE、CAPEC 和 ATT&CK 节点之间的攻击路径可视化为 SVG,并提供可点击导航 |
| **PDF 报告** | 将扫描结果和场景导出为格式化的 A4 安全报告 |
## 项目结构
```
openclaw-vulnerability-scanner/
├── Dashboard/
│ ├── app.py # Streamlit visualization dashboard
│ ├── results/ # Scan and scenario result storage
│ │ ├── findings.jsonl # Raw Nuclei scan results
│ │ ├── parsed_findings.json # Parsed vulnerability data
│ │ ├── mapped_findings.json # CWE→CAPEC→ATT&CK mapping results
│ │ └── scenarios.json # Final attack scenarios (dashboard input)
│ └── scripts/
│ └── generate_pdf.py # PDF report generator
│
├── Skills/
│ ├── vuln-scanner/ # Vulnerability scanning skill
│ │ ├── SKILL.md # Agent operational logic definition
│ │ └── scripts/
│ │ ├── install.sh # Nuclei · Katana · TruffleHog installer
│ │ └── scan.sh # Nuclei wrapper script
│ │
│ └── attack-scenario-gen/ # Attack scenario generation skill
│ ├── SKILL.md # Execution flow definition
│ ├── db/ # Threat intelligence DB (auto-generated)
│ │ ├── cwe_to_capec.json
│ │ └── capec_to_attack.json
│ └── scripts/
│ ├── build_mapping_db.py # Builds DB from MITRE CTI & CWE XML
│ ├── parse_jsonl.py # Parses findings.jsonl
│ └── map_cwe_to_attack.py # CWE → CAPEC → ATT&CK mapping
│
├── Vuln_Scripts/ # Standalone detection scripts
│ ├── OpenRedirect.py # Open Redirect detection
│ └── exposed_credentials.py # Exposed credentials detection
│
├── Vuln_Templates/ # Custom Nuclei templates (YAML)
│ ├── XSS/
│ ├── Injection/
│ ├── Broken_Access_Control/
│ ├── Broken_Authentication/
│ ├── Misconfiguration/
│ ├── Open_Redirect/
│ └── Vulnerable_Components/
│
└── TEMPLATE_EXAM.md # Nuclei template writing guide
```
## 工作流程
### 步骤 1 — 漏洞扫描
在 Discord 中发送以下提示词以触发 `vuln-scanner` 技能。
```
Vulnerability analysis: Use the vuln-scanner skill to analyze [{$TARGET_IP}] as the target.
Strictly follow the 'Operational Logic (Strategic Chaining & JIT Patching)' defined in SKILL.md.
```
**输出**: `results/findings.jsonl`
### 步骤 2 — 攻击场景生成
使用扫描结果运行 `attack-scenario-gen` 技能。
```
Scenario generation: Use the attack-scenario-gen skill with findings.jsonl as the base knowledge to create attack scenarios.
Perform parsing and mapping according to the 'Execution Flow' in SKILL.md,
then write the final 'Step 3: AI-Based Scenario Inference' using your own security knowledge.
```
**输出**: `results/scenarios.json`
### 步骤 3 — 启动仪表板
```
cd Dashboard
streamlit run app.py
```
## 技能详情
### vuln-scanner
**依赖项**: `nuclei`, `python3`, `pip3`, `requests`, `sed`, `curl`, `unzip`, `ca-certificates`, `katana`, `trufflehog`
代理并非按顺序执行模板,而是自主执行以下 5 阶段策略。
| 阶段 | 描述 |
|-------|-------------|
| **1. 情报收集** | 分析所有模板,按漏洞类型和所需输入进行分类 |
| **2. 执行计划** | 构建逻辑链:信息泄露 → BAC/IDOR |
| **3. JIT Payload 修补** | 通过 `-var`/`-header` 标志实时注入从先前结果中提取的 token 和 ID(原始模板绝不会被修改) |
| **3.5. 反馈循环** | 解析 `findings.jsonl` 并在发现新 endpoint 时扩展扫描目标 |
| **4. 自适应重排序** | 失败时,分析原因并在重试前重新收集凭据 |
| **5. 善后处理** | 保留所有日志并从 `findings.jsonl` 中移除不必要的字段 |
### attack-scenario-gen
**依赖项**: `python3`, `stix2`, `requests`
#### 执行流程
```
findings.jsonl
│
▼ parse_jsonl.py
parsed_findings.json
(template_id, name, severity, cwe_ids, cwe_names, matched_at, ...)
│
▼ map_cwe_to_attack.py (DB: cwe_to_capec.json + capec_to_attack.json)
mapped_findings.json
(+ capec_ids, capec_descriptions, attack_mapping)
│
▼ AI Agent Scenario Inference
scenarios.json
(+ scenario: title, preconditions, steps, impact, remediation)
```
#### 构建威胁情报数据库(仅首次运行)
```
python3 Skills/attack-scenario-gen/scripts/build_mapping_db.py
```
自动下载 MITRE CTI 仓库和 CWE XML,然后在 `db/` 下构建映射数据库。
#### 场景 JSON 结构
```
{
"scenario_id": "SCN-{template_id}",
"template_id": "",
"name": "",
"severity": "",
"cwe_ids": [],
"cwe_names": [],
"capec_ids": [],
"capec_descriptions": {},
"attack_mapping": [],
"attack_mapping_available": false,
"matched_at": "",
"status_code": null,
"extracted_results": [],
"scenario": {
"title": "Attack scenario title",
"preconditions": ["Condition 1", "Condition 2"],
"steps": [
{
"step": 1,
"tactic_id": "TA00XX",
"tactic_name": "tactic name",
"technique_id": "TXXXX",
"technique_name": "technique name",
"description": "What the attacker does"
}
],
"impact": "Scope and impact of exploitation",
"remediation": "Recommended fix"
}
}
```
## 仪表板
`Dashboard/app.py` 读取 `results/scenarios.json` 并提供以下界面。


### 屏幕布局
**侧边栏**
- 基于 CWE 的漏洞选择器
- 用于选择同一 CWE 下多个场景的单选按钮
- PDF 报告生成与下载
**主面板**
| 部分 | 描述 |
|---------|-------------|
| **攻击路径** | 将 CWE → CAPEC → ATT&CK 节点渲染为 SVG。鼠标悬停查看详情;点击可自动滚动并高亮 TTP 部分 |
| **提取结果** | 列出由 Nuclei 从实际响应中提取的原始值(token、endpoint、headers 等) |
| **修复建议** | 显示带有 CWE、CAPEC 和 ATT&CK 标签的修复步骤 |
| **攻击步骤** | 以卡片形式显示每个带有战术和技术 ID 的攻击步骤 |
| **影响** | 对利用漏洞可能造成的破坏的摘要 |
| **已映射的 TTP** | 带有 ATT&CK 映射的 CAPEC 模式的详细信息(手风琴组件) |
| **未映射的 TTP** | 没有 ATT&CK 映射的 CAPEC 模式列表 |
### PDF 报告结构

| 部分 | 内容 |
|---------|---------|
| 封面 | CWE ID、漏洞名称、严重程度、目标 URL、生成时间戳 |
| 1. 漏洞摘要 | 核心元数据表、ATT&CK 技术映射表 |
| 2. 攻击场景步骤 | 逐步攻击流程卡片 |
| 3. 影响与修复 | 影响范围及修复指南 |
## 漏洞模板
Nuclei YAML 模板按类别组织在 `Vuln_Templates/` 目录下。
| 类别 | 模板 | 检测内容 |
|----------|----------|-----------|
| **XSS** | `reflected-xss.yaml` | 通过路径/查询参数触发的反射型 XSS |
| | `client-side-xss-bypass.yaml` | 客户端 XSS 过滤器绕过 |
| | `json-api-html-injection.yaml` | JSON API 响应中的 HTML 注入 |
| | `api-only-xss.yaml` | 纯 API 触发的 XSS |
| **注入** | `sqli-union-auth-bypass.yaml` | 基于 SQL 注入的身份验证绕过 |
| | `sqli-union-schema-fuzz.yaml` | 基于 UNION 的 schema 模糊测试 |
| | `nosql-operator-injection.yaml` | NoSQL 运算符注入 |
| **越权访问** | `get-idor-read.yaml` | 基于 GET 的 IDOR |
| | `unauthorized-resource-modification.yaml` | 未经授权的资源修改 |
| **身份验证缺陷** | `broken-authentication.yaml` | 身份验证逻辑缺陷检测 |
| **错误配置** | `error-handling.yaml` | 通过错误消息导致的信息泄露 |
| | `jsonp-information-leak.yaml` | JSONP 信息泄露 |
| **开放重定向** | `Openredirect1.yaml` | 检测重定向参数是否存在(注入探测 URL 后出现 3xx 响应) |
| | `Openredirect2.yaml` | 白名单绕过检测(3 种绕过模式:`url.includes`、`startsWith`、正则过滤) |
| **易受攻击的组件** | `file-upload-validation-bypass.yaml` | 文件上传验证绕过 |
| | `vulnerable-library.yaml` | 易受攻击库的检测 |
### 模板编写指南
请参阅 `TEMPLATE_EXAM.md`。关键规则:
- 每个模板必须在顶部包含 `USAGE` · `OPTIONS` · `EXAMPLE` 注释块。
- 必须指定 `info.classification.cwe-id` 和 `info.metadata.cwe-name` 以便与场景生成连接。
- 运行时变量定义为 `{TARGET_URL}` 格式;严禁修改原始文件。
- 首先列出常见的电子商务路径;将针对特定解决方案的路径添加在底部。
## 团队
## 许可证
本项目基于 MIT 许可证授权。
标签:CAPEC, CISA项目, Cloudflare, Docker, Google, GPT, HTTP工具, Kubernetes, MITRE ATT&CK, Nuclei, Python, ReportLab, STIX2, Streamlit, TruffleHog, 上下文链接, 人工智能安全, 加密, 反取证, 合规性, 威胁情报映射, 学术论文, 安全可视化, 安全评估, 安全防御评估, 密码管理, 插件系统, 攻击场景生成, 无后门, 智能体工作流, 漏洞扫描器, 漏洞管理, 红队自动化, 网络安全, 网络安全审计, 自主AI代理, 自动化安全分析, 自动化渗透测试, 访问控制, 请求拦截, 逆向工具, 防御矩阵, 隐私保护