sujo030902/owasp-top10-scanner
GitHub: sujo030902/owasp-top10-scanner
一个基于 Python 的 OWASP Top 10 (2025) 自动化 Web 应用漏洞扫描器,覆盖十大安全类别并生成 HTML 和 JSON 格式的检测报告。
Stars: 0 | Forks: 0
# owasp-top10-scanner
使用 **Python** 编写的自动化 **OWASP Top 10 (2025)** Web 应用程序漏洞扫描工具。
它会爬取目标,针对每个 OWASP 类别执行检查,并生成 HTML + JSON 报告。
## 功能
| OWASP ID | 类别 | 检查项 |
|----------|----------|--------|
| A01 | 访问控制失效 | `.git`、`.env`、备份文件、管理路径、敏感资源 |
| A02 | 安全配置错误 | 缺失的安全 header、目录列出、技术栈信息泄露 |
| A03 | 软件供应链失效 | 暴露的依赖清单 / SBOM、registry 凭证、已知漏洞的 jQuery/Bootstrap/AngularJS |
| A04 | 加密失败 | 明文 HTTP、缺失 HSTS、明文表单提交 |
| A05 | 注入 | 反射型 XSS、基于错误的 SQLi、SSTI |
| A06 | 不安全设计 | 可预测的对象 ID、硬编码默认值、客户端认证 |
| A07 | 身份验证失效 | cookie 标志(Secure/HttpOnly/SameSite)、登录表单检测 |
| A08 | 软件或数据完整性失效 | 没有 SRI 的第三方脚本、不安全的 JSONP |
| A09 | 安全日志与告警失效 | 暴露的日志/遥测 endpoint、非标准的 404 |
| A10 | 异常情况处理不当 | 冗长的错误信息、未捕获的异常、缺失的自定义错误页面、暴露的调试 endpoint |
基于 [OWASP Top 10:2025](https://owasp.org/Top10/2025/) 发布版本映射。
这取代了 2021 版的映射:SSRF(2021 A10)已被移除,**A10 异常情况处理不当** 是新增类别,安全配置错误从 A05 移至 A02,且易受攻击和过时的组件扩展为 **软件供应链失效**(A03)。
## 安装
```
cd owasp-top10-scanner
python -m venv .venv && source .venv/bin/activate
pip install -e .
```
或者包含开发/测试依赖:
```
pip install -e ".[dev]"
```
## 使用方法
```
owasp-top10 https://example.com -o report
```
选项:
```
-o, --output report base name (writes .html and .json)
-p, --max-pages max URLs to crawl (default 50)
-d, --max-depth crawl depth (default 3)
-t, --timeout request timeout (seconds) (default 10)
--proxy proxy URL, e.g. http://127.0.0.1:8080
--header extra request header (repeatable)
-k, --insecure skip TLS verification
--checks run only selected ids, e.g. A01,A03
--list-checks list available checks
--json-only skip the HTML report
```
示例:
```
# 通过 Burp Suite 进行全面扫描
owasp-top10 https://example.com --proxy http://127.0.0.1:8080 -k
# 仅 injection + access control,机器可读输出
owasp-top10 https://example.com --checks A01,A03 --json-only -o findings
```
## 测试
```
pip install -e ".[dev]"
pytest -v
```
测试套件会启动一个本地的故意包含漏洞的 HTTP 服务器
(`tests/conftest.py`),并断言每个检查项都能被触发。
## 项目布局
```
owasp_top10/
core/ # HttpClient, Crawler, Scanner, Finding
checks/ # one module per OWASP category
report/ # HTML + JSON report writers
cli.py # entry point
tests/ # pytest suite with a local vulnerable target
```
## 扩展
每个检查项都继承自 `BaseCheck`,通过 `OWASP_IDS` 声明其覆盖的 OWASP 2025 ID,
并实现 `run(urls) -> list[Finding]`。将其注册到
`owasp_top10/checks/__init__.py` 中,它就会被自动识别并加载。
## 2021 → 2025 映射
| 2025 | 类别 | 原类别 (2021) |
|------|----------|---------------|
| A01 | 访问控制失效 | A01(不变) |
| A02 | 安全配置错误 | A05 |
| A03 | 软件供应链失效 | A06(范围扩大) |
| A04 | 加密失败 | A02 |
| A05 | 注入 | A03 |
| A06 | 不安全设计 | A04 |
| A07 | 身份验证失效 | A07(不变) |
| A08 | 软件或数据完整性失效 | A08(重命名) |
| A09 | 安全日志与告警失效 | A09(重命名) |
| A10 | 异常情况处理不当 | **新增** — 取代了 SSRF |
## License
MIT
标签:CISA项目, OWASP Top 10, Python, Web安全, 加密, 安全规则引擎, 密码管理, 文档结构分析, 无后门, 漏洞扫描器, 蓝队分析, 逆向工具