一个全能的自动化漏洞检测与分析平台
支持手动代码分析和自动网站扫描,内置 20+ 漏洞类型检测引擎,自动生成测试 PoC。
✅ 两种工作模式
- 手动分析:粘贴代码/HTTP请求,实时检测漏洞
- 自动扫描:输入URL,自动爬取网站并检测全部漏洞
✅ 自动化流程
- 网站自动爬取(识别表单、参数、链接)
- 智能参数提取
- 自动漏洞检测
- 一键生成报告
✅ 智能分析
- 20+ 种漏洞类型检测
- 启发式匹配 + 代码模式识别
- 自动 PoC 生成
- 风险等级分类
✅ 完整报告
- JSON 导出
- CWE/OWASP 引用
- 验证步骤指导
- 修复建议
- 行号定位 — 精确到源代码行:列
- 代码行预览 — 直接展示匹配代码
- Python 3.8+
- pip 包管理器
# 1. 克隆仓库
git clone https://github.com/kabuqin/VulnAnalyzer.git
cd VulnAnalyzer
# 2. 安装依赖
pip install flask requests
# 3. 启动服务
python app.py
# 4. 打开浏览器
# http://127.0.0.1:5000- 打开网页,在 "Manual" 标签
- 粘贴代码/HTTP请求
- 点击 "Analyze"
- 查看检测结果
支持的输入类型:
- HTTP 请求(GET/POST/PUT/DELETE 等)
- HTML 源代码
- Java/Python/PHP/JavaScript 代码片段
示例输入:
POST /admin/upload?id=1&redirect=http://evil.com HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
username=admin&password=password- 点击 "Scan" 标签
- 输入目标 URL(如
https://example.com) - 设置最大页数(默认 30)
- 点击 "Scan Target"
- 等待扫描完成
| 漏洞类型 | 风险级别 | 检测方式 |
|---|---|---|
| XSS(含污染链追踪) | HIGH | DOM source→sink、参数反射、模板表达式 |
| SQL 注入 | HIGH | 字符串拼接、错误信息、参数特征 |
| SSTI(模板注入) | HIGH | Jinja2/Twig/Freemarker/Velocity/Thymeleaf 模板引擎 |
| 命令注入 | HIGH | Runtime/ProcessBuilder/child_process |
| 路径遍历 | HIGH | ../ 序列检测 |
| SSRF(含链式SSRF) | HIGH | URL 构造、私网检测、dataUrl 链 |
| 开放重定向 | Medium | redirect 参数分析 |
| 文件上传 | HIGH | 表单检测、验证标志 |
| XXE | Critical | DOCTYPE 检测 |
| 反序列化 | Critical | ObjectInputStream |
| CORS 错误 | Medium | 通配符检测 |
| 敏感信息泄露 | HIGH | API Key、密钥识别 |
| 授权绕过 | HIGH | 参数直控、敏感路由 |
| 加密弱点 | HIGH | ECB、MD5、弱 TLS |
| Log 注入 | Medium | 日志拼接检测 |
| SpEL 注入 | Critical | 表达式解析 |
| 不安全反射 | Critical | Class.forName |
| 安全头缺失 | Low | 响应头检查 |
| 错误处理缺失 | Medium | async 无 try/catch、fetch 无 .catch() |
- 位置信息 — 精确指出 第X行 第Y列
- 代码预览 — 直接展示匹配到的源代码行
- 证据 — 为什么认为存在此漏洞
- 验证步骤 — 如何进一步验证
- PoC — 自动生成的测试代码
- CWE/OWASP — 标准分类引用
检测完整的 source→sink 数据流:
URLSearchParams → params.get('userId') → fetch('/api/profile/') → ... → innerHTML
当检测到 DOM 数据源(URL参数、location等)流向 DOM 写入点(innerHTML、eval等)时,标记为 HIGH 级别。
检测一个 fetch 响应的字段被直接用于下一个 fetch 的安全风险:
const meta = await fetch('/api/doc/1').then(r => r.json());
const data = await fetch(meta.dataUrl).then(r => r.json()); // ← 链式SSRF| 模板引擎 | 检测模式 |
|---|---|
| Jinja2 / Twig | {{...}}, {%...%} + 用户变量 |
| Freemarker / Velocity | ${...} 表达式 |
| Thymeleaf | th:text, th:utext 属性 |
| Flask | render_template_string() + 请求数据 |
| Nunjucks / EJS | compile(), render() API |
| Smarty / Blade | PHP 模板渲染函数 |
- 检测 async 函数缺少
try/catch - 检测 fetch 调用缺少
.catch()错误处理
所有发现不再使用晦涩的字符偏移量,而是展示 第X行 第Y列,并在详情中直接显示匹配到的源代码行。
手动代码分析
curl -X POST http://127.0.0.1:5000/analyze \
-H "Content-Type: application/json" \
-d '{
"text": "GET /admin?id=1 HTTP/1.1",
"min_risk": "info",
"types": ["XSS", "SQL Injection"]
}'参数:
text(string) — 要分析的代码/请求min_risk(string) — 最低风险:info/low/medium/high/criticaltypes(array) — 只检测指定类型,不填则全检
网站爬取与参数提取
curl -X POST http://127.0.0.1:5000/crawl \
-H "Content-Type: application/json" \
-d '{
"target": "https://example.com",
"max_pages": 30
}'完整自动扫描
curl -X POST http://127.0.0.1:5000/scan-target \
-H "Content-Type: application/json" \
-d '{
"target": "https://example.com",
"min_risk": "info"
}'SSE 实时流式扫描(带进度推送)
curl -X POST http://127.0.0.1:5000/scan-stream \
-H "Content-Type: application/json" \
-d '{"target": "https://example.com"}'vulnanalyzer/
├── app.py # Flask 服务器(路由 + SSE)
├── vuln_analyzer.py # 检测引擎(2300+ 行)
├── crawler.py # 网站爬虫
├── static/
│ └── index.html # 前端 UI(深色主题)
├── README.md # 文档
└── .gitignore
输入: <script>const x = params.get('name');
document.getElementById('bio').innerHTML = x;</script>
输出: [HIGH] XSS · 第1行 → 第2行
污染链: URLSearchParams → innerHTML
PoC: <img src=x onerror=alert(1)>
输入: return render_template_string('Hello ' + name)
输出: [HIGH] SSTI · 第3行
Flask render_template_string() with request data
PoC: {{config.__class__.__init__.__globals__['os'].popen('id').read()}}
输入: fetch(profileMeta.dataUrl)
输出: [HIGH] SSRF · 第5行
Chained SSRF: fetch response field used as URL in subsequent fetch
A: VulnAnalyzer 使用启发式检测,会有误报。建议按风险等级过滤,并使用 PoC 进行手动验证。
A: 支持,默认跳过 SSL 验证。可修改 crawler.py 中的 verify_ssl=True。
A: 不支持。爬虫仅解析静态 HTML。
A: 当前版本不支持,可在未来版本添加。
A: 编辑 vuln_analyzer.py,添加新的 analyze_xxx() 函数,并在 analyze() 中注册。
仅用于授权安全测试
- ✅ 自己的项目
- ✅ 获得明确授权的目标
- ❌ 未授权网站扫描(违法)
| 任务 | 耗时 |
|---|---|
| 单个代码片段分析 | 1-10ms |
| 爬取单个页面 | 1-3s |
| 30页网站完整扫描 | 2-5分钟 |
| 内存占用 | 50-100MB |
感谢 OWASP、CWE、Flask 社区的支持。
VulnAnalyzer v2.2 | Educational Use Only
最后更新:2026-06-23
一个全能的自动化漏洞检测与分析平台
支持手动代码分析和自动网站扫描,内置 17+ 漏洞类型检测引擎,自动生成测试 PoC。
✅ 两种工作模式
- 手动分析:粘贴代码/HTTP请求,实时检测漏洞
- 自动扫描:输入URL,自动爬取网站并检测全部漏洞
✅ 自动化流程
- 网站自动爬取(识别表单、参数、链接)
- 智能参数提取
- 自动漏洞检测
- 一键生成报告
✅ 智能分析
- 17+ 种漏洞类型检测
- 启发式匹配 + 代码模式识别
- 自动 PoC 生成
- 风险等级分类
✅ 完整报告
- JSON/Markdown 导出
- CWE/OWASP 参考
- 验证步骤指导
- 修复建议
- Python 3.8+
- pip 包管理器
# 1. 创建目录并下载文件
mkdir vulnanalyzer
cd vulnanalyzer
# 下载以下文件:
# app.py
# vuln_analyzer.py
# crawler.py
# static_index.html (重命名为 index.html)
# 2. 创建静态文件夹
mkdir static
mv index.html static/
# 3. 安装依赖
pip install flask requests
# 4. 启动服务
python app.py
# 5. 打开浏览器
# http://127.0.0.1:5000- 打开网页,在 "Manual" 标签
- 粘贴代码/HTTP请求
- 点击 "Analyze"
- 查看检测结果
支持的输入类型:
- HTTP 请求(GET/POST/PUT/DELETE 等)
- HTML 源代码
- Java/Python/PHP/JavaScript 代码片段
示例输入:
POST /admin/upload?id=1&redirect=http://evil.com HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
username=admin&password=password- 点击 "Scan" 标签
- 输入目标 URL(如
https://example.com) - 设置最大页数(默认 30)
- 点击 "Scan Target"
- 等待扫描完成
| 漏洞类型 | 风险级别 | 检测方式 |
|---|---|---|
| XSS | High | DOM sink、参数反射 |
| SQL 注入 | High | 字符串拼接、错误信息 |
| 命令注入 | High | Runtime/ProcessBuilder |
| 路径遍历 | High | ../ 序列检测 |
| SSRF | High | URL 构造、私网检测 |
| 开放重定向 | Medium | redirect 参数分析 |
| 文件上传 | High | 表单检测、验证标志 |
| XXE | Critical | DOCTYPE 检测 |
| 反序列化 | Critical | ObjectInputStream |
| CORS 错误 | Medium | 通配符检测 |
| 敏感信息泄露 | High | API Key、密钥识别 |
| 授权绕过 | High | 参数直控、敏感路由 |
| 加密弱点 | High | ECB、MD5、弱 TLS |
| Log 注入 | Medium | 日志拼接检测 |
| SpEL 注入 | Critical | 表达式解析 |
| 不安全反射 | Critical | Class.forName |
| 安全头缺失 | Low | 响应头检查 |
- 位置信息 - 准确指出漏洞位置
- 证据 - 为什么认为存在此漏洞
- 验证步骤 - 如何进一步验证
- PoC - 自动生成的测试代码
- CWE/OWASP - 标准参考
手动代码分析
curl -X POST http://127.0.0.1:5000/analyze \
-H "Content-Type: application/json" \
-d '{
"text": "GET /admin?id=1 HTTP/1.1",
"min_risk": "info",
"types": ["XSS", "SQL Injection"]
}'参数:
text(string) - 要分析的代码/请求min_risk(string) - 最低风险:info/low/medium/high/criticaltypes(array) - 只检测指定类型,不填则全检
网站爬取与参数提取
curl -X POST http://127.0.0.1:5000/crawl \
-H "Content-Type: application/json" \
-d '{
"target": "https://example.com",
"max_pages": 30
}'完整自动扫描
curl -X POST http://127.0.0.1:5000/scan-target \
-H "Content-Type: application/json" \
-d '{
"target": "https://example.com",
"min_risk": "info"
}'<img src=x onerror=alert(1)>
" onmouseover="alert(1)" x="
<script>alert(1)</script>' OR '1'='1
' UNION SELECT 1,2,3,4-- -
' AND SLEEP(5)-- -; id;
| cat /etc/passwd
&& sleep 5../../../etc/passwd
..\..\..\..\windows\win.ini
..%2F..%2F..%2Fetc%2Fpasswd
vulnanalyzer/
├── app.py # Flask 服务器
├── vuln_analyzer.py # 检测引擎(2000+ 行)
├── crawler.py # 网站爬虫
├── static/
│ └── index.html # 前端 UI
├── README.md # 文档
└── QUICKSTART.md # 快速开始
A: VulnAnalyzer 使用启发式检测,会有误报。建议按风险等级过滤,并使用 PoC 进行手动验证。
A: 支持,默认跳过 SSL 验证。可修改 crawler.py 中的 verify_ssl=True。
A: 不支持。爬虫仅解析静态 HTML。
A: 当前版本不支持,可在未来版本添加。
A: 编辑 vuln_analyzer.py,添加新的 analyze_xxx() 函数。
仅用于授权安全测试
- ✅ 自己的项目
- ✅ 获得明确授权的目标
- ❌ 未授权网站扫描(违法)
| 任务 | 耗时 |
|---|---|
| 单个代码片段分析 | 50-150ms |
| 爬取单个页面 | 1-3s |
| 30页网站完整扫描 | 2-5分钟 |
| 内存占用 | 50-100MB |
感谢 OWASP、CWE、Flask 社区的支持。
VulnAnalyzer v2.1 | Educational Use Only
最后更新:2026-06-14