文章总结: VulnAnalyzer是一个基于Python+Flask构建的轻量级Web安全分析平台,支持静态代码分析和自动化网站扫描。该工具采用纯静态分析策略,覆盖XSS、SQL注入等12类通用漏洞和13类Java专项漏洞,提供风险等级评估和CWE/OWASP标准引用。设计哲学强调零副作用检测和防御性输出,适合快速安全审查和漏洞学习。 综合评分: 85 文章分类: WEB安全,安全工具,漏洞分析,安全开发,渗透测试
前端:纯原生 HTML + CSS + JS
没有 React,没有 Vue,没有构建步骤。一个 index.html 搞定全部 UI:
- CSS Grid 布局,暗色主题
- SSE(Server-Sent Events)实现实时扫描进度
- 发现卡片支持按风险等级、漏洞类型过滤
- CWE 编号可点击跳转到官方页面
Ctrl+Enter快捷键触发分析
能检测什么?
通用漏洞(12 类)
| 类型 | 典型检测信号 | 参考标准 |
| — | — | — |
| XSS | DOM sink(innerHTML、eval)、模板表达式、缺少 CSP | CWE-79 |
| SQL 注入 | 字符串拼接 SQL、数据库错误信息泄露 | CWE-89 |
| 命令注入 | os.system、subprocess、shell 元字符 | CWE-78 |
| 路径遍历 | ../ 序列、文件路径参数名 | CWE-22 |
| SSRF | URL 构造 API、私有 IP 引用 | CWE-918 |
| XXE | XML DOCTYPE、外部实体声明 | CWE-611 |
| 文件上传 | 缺少 accept 过滤的 file input | CWE-434 |
| 开放重定向 | redirect/next/return 参数 | CWE-601 |
| CORS 错误配置 | 通配符 Origin、Credentials + Wildcard | CWE-942 |
| 敏感信息泄露 | API Key、密钥、信用卡号、堆栈跟踪 | CWE-200 |
| 授权绕过 | 敏感路由无鉴权、角色参数直控 | CWE-285 |
| 安全头缺失 | 缺少 CSP、HSTS、X-Frame-Options 等 | CWE-693 |
Java 专项(13 类)
当输入被识别为 Java 源码时,自动启用额外的检测规则,覆盖:
- JDBC/JPA/MyBatis SQL 注入
- Runtime.exec / ProcessBuilder 命令注入
- ObjectInputStream / XStream 反序列化
- 弱加密算法(DES、ECB、MD5)
- 硬编码密钥和 IV
- Spring Security 错误配置
- SpEL 表达式注入
- 不安全的类反射加载
实战演示
场景 1:分析一个登录表单
粘贴以下 HTML:
<formaction="/login"method="post">
<inputname="user">
<inputtype="password"name="pass">
</form>
VulnAnalyzer 秒级返回:
[LOW] Sensitive Exposure — Password field without autocomplete restriction
CWE-522 | OWASP A02:2021
✓ 设置 autocomplete='current-password' 或 'new-password'
场景 2:分析一个 HTTP 请求
POST/api/search?q=test&sort=nameHTTP/1.1
Host: shop.example.com
Content-Type: application/x-www-form-urlencoded
category=electronics&limit=20
检测结果可能包含:
- SQL Injection(Medium)—
sort参数名暗示 ORDER BY 拼接风险
场景 3:扫描整个网站
输入目标 URL → 自动爬取 → 逐页分析 → SSE 实时推送进度到前端:
› Initializing scan of https://example.com...
› Starting crawl of https://example.com
› Crawling page 1: https://example.com/
› Crawling page 2: https://example.com/about
› Crawl complete: 12 pages, 3 forms, 8 params
› Analyzing page 1/12: https://example.com/
› ...
› Scan complete! Found 23 issues.
每条发现都包含什么?
VulnAnalyzer 不只是告诉你”这里有漏洞”,它给出一套完整的上下文:
{
"type": "SQL Injection",
"risk": "high",
"confidence": "medium",
"location": "query parameter 'id'",
"evidence": "Parameter name suggests database-backed filtering",
"verification": "确认服务端使用了参数化查询...",
"cwe": "CWE-89",
"owasp": "A03:2021",
"tags": ["input-validation", "database"]
}
- Location — 漏洞在哪里
- Evidence — 为什么认为有问题
- Verification — 怎么进一步验证(防御性指导,不含攻击代码)
- CWE / OWASP — 标准化分类引用
- Tags — 便于过滤和分组
5 分钟上手
# 克隆或下载项目
cd VulnAnalyzer
# 安装依赖(只需要两个)
pip install flask requests
# 启动
python app.py
# 打开浏览器访问
# http://127.0.0.1:5000
也支持命令行模式:
# 分析单个文件
python vuln_analyzer.py request.txt --pretty
# 输出 Markdown 报告
python vuln_analyzer.py response.http --format markdown -o report.md
# 只关注高危以上
cat page.html | python vuln_analyzer.py --min-risk high
# SARIF 格式(可导入 GitHub / VS Code)
python vuln_analyzer.py src.java --format sarif -o results.sarif
设计哲学
1. 静态优先,零副作用
VulnAnalyzer 永远不会向目标发送攻击载荷。它只做信号分析——”这里有一个模式,看起来像是漏洞信号,请你手动验证”。这使得它对生产环境完全安全。
2. 宁可误报,不可漏报
启发式检测必然带来误报,但通过 confidence(置信度)和 risk(风险等级)两个维度来帮你判断优先级。一个 critical + high confidence 的发现,值得你立刻关注;一个 info + low confidence 的信号,可以留到以后看。
3. 防御性输出
每个发现都附带 verification 字段,告诉你如何从防御角度验证和修复。它不会生成可用的 exploit,因为这是一个帮助防御者的工具。
性能参考
| 场景 | 耗时 | | — | — | | 单段代码分析 | 50 ~ 150 ms | | 单页面爬取 + 分析 | 1 ~ 3 s | | 30 页完整网站扫描 | 2 ~ 5 min | | 内存占用 | 50 ~ 100 MB |
未来可以做什么?
当前版本已经覆盖了常见的 Web 漏洞类别,但仍有很大的扩展空间:
- JavaScript 渲染支持 — 集成 Playwright/Selenium 处理 SPA 应用
- 认证扫描 — 支持 Cookie / JWT 注入后扫描需要登录的页面
- WebSocket 分析 — 检测和 fuzz WebSocket 消息
- CI/CD 集成 — 作为 GitHub Action 或 Git Hook 自动运行
- 协作功能 — 团队共享扫描结果,跟踪漏洞修复状态
- 自定义规则 — 支持 YAML/JSON 格式的自定义检测规则
写在最后
VulnAnalyzer 不是要替代 Burp Suite 或 Nuclei,而是填补”手工复制粘贴代码到在线工具”和”启动完整扫描器”之间的空白。它的价值在于:
- 安全工程师:快速审查代码片段,在 code review 阶段就发现问题
- 开发者:提交代码前自查,减少安全债
- 学生/研究者:理解漏洞检测的原理,学习安全分析器的实现方式
工具只是辅助,最终的安全判断永远在人。但如果一个工具能让你在 5 分钟内发现一个本该存在 5 个月的漏洞,那它就值得存在。
VulnAnalyzer v2.2 | 仅用于授权安全测试 | Educational Use Only
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:卡布奇诺的派对 斯诺克视野 斯诺克视野《VulnAnalyzer:从零打造一个自动化漏洞检测平台》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论