Docker部署OWASP OFFAT实战:快速搭建可扩展的API漏洞扫描服务

Docker部署OWASP OFFAT实战:快速搭建可扩展的API漏洞扫描服务

【免费下载链接】OFFAT The OWASP OFFAT tool autonomously assesses your API for prevalent vulnerabilities, though full compatibility with OAS v3 is pending. The project remains a work in progress, continuously evolving towards completion. 【免费下载链接】OFFAT 项目地址: https://gitcode.com/gh_mirrors/of/OFFAT

OWASP OFFAT(OFFensive Api Tester)是OWASP旗下一款开源的API漏洞扫描工具,它能根据OpenAPI/Swagger规范文件自动生成测试用例,对受限HTTP方法、SQL注入、BOLA越权、数据泄露、批量赋值等OWASP API Top 10常见漏洞进行自动化检测。本文是一份完整的Docker部署OWASP OFFAT实战指南,带你用docker compose一键搭建由Redis、API服务与异步Worker组成的可扩展API漏洞扫描服务,并附上接口调用与CLI扫描的实战示例。

OWASP OFFAT API漏洞扫描结果示例表格

OWASP OFFAT是什么:为什么选择它做API漏洞扫描

OFFAT全称 OFFensive Api Tester,核心工作流程很简单:读取你的 OpenAPI/Swagger 规范文件 → 自动生成针对每个端点的安全测试用例 → 运行扫描并输出结构化结果。它内置了多项来自 OWASP API Security Top 10 的检测项:

  • ✅ 受限HTTP方法检测(Restricted HTTP Methods)
  • ✅ SQL注入(SQLi)
  • ✅ BOLA/IDOR越权访问
  • ✅ 数据泄露检测(Data Exposure)
  • ✅ BOPLA / 批量赋值(Mass Assignment)
  • ✅ 越权访问控制(Broken Access Control)
  • ✅ 基础命令注入与XSS/HTML注入测试
  • ✅ 基础SSTI模板注入测试

相比商业扫描器,它最大的优势是:开源免费(MIT协议)、支持CLI与API两种使用方式、官方提供Docker镜像,非常适合集成进CI/CD流水线。

Docker部署OFFAT的准备工作

开始之前,请确认环境满足以下条件:

  1. 已安装 Docker 与 Docker Compose(docker compose version 可查看版本);
  2. 准备一份 API 的 OpenAPI/Swagger 规范文件(JSON 或 YAML 均可),可以放在本地,也可以是一个可访问的 URL;
  3. 如需从源码自行构建镜像,可先克隆仓库:
git clone https://gitcode.com/gh_mirrors/of/OFFAT.git

一键安装步骤:docker compose快速搭建扫描服务

项目已经在 docker-compose.yml 中定义好了一整套可扩展的扫描服务拓扑,包含三个组件:

服务名作用端口
offat-redis任务队列存储(Redis)6379
offat-apiFastAPI 扫描调度接口8000
offat-api-workerRQ 异步扫描执行 Worker

进入项目源码目录后,一条命令即可启动全部服务:

cd src
docker compose up -d

启动完成后用 docker compose ps 查看状态,三个容器都应处于运行状态。此时访问 http://localhost:8000/ 会返回 OFFAT API 的基础信息,而 http://localhost:8000/docs 则是 FastAPI 自动生成的接口文档页面,非常方便调试。

最快配置方法:让API扫描服务真正跑起来

OFFAT 的 API 采用"提交任务 + 异步轮询结果"的模式,扫描在 Worker 中执行,不会阻塞接口调用。整个流程涉及两个接口,定义在 app.py 中:

第一步:提交扫描任务

curl -X POST http://localhost:8000/api/v1/scan \
  -H "Content-Type: application/json" \
  -H "SECRET-KEY: your-secret-key" \
  -d '{"openapi": "https://example.com/swagger.json"}'

返回的 job_id 就是后续查询结果的凭证。注意两个关键点:

  • 请求头必须携带 SECRET-KEY,其值来自环境变量 AUTH_SECRET_KEY(参见 config.py),否则会返回 401;
  • openapi 字段既可以传规范文件 URL,也可以直接传 JSON/YAML 字符串内容(字段定义见 schema.py)。

第二步:查询扫描结果

curl http://localhost:8000/api/v1/scan/{job_id}/result \
  -H "SECRET-KEY: your-secret-key"

任务执行中返回 202 状态与 "Job In Progress",完成后返回 200 和完整的扫描结果明细。

用CLI镜像快速扫描单个API

如果只想临时扫描一个 API,不需要起整套服务,直接用 CLI 镜像更轻量。官方提供了独立的 CLI 镜像(见 cli-Dockerfile):

# 使用URL方式扫描
docker run --rm dmdhrumilmistry/offat -f https://example.com/swagger.json

# 使用本地文件方式扫描(需要挂载目录)
docker run --rm -v $(pwd):/data dmdhrumilmistry/offat -f /data/swagger.json

CLI 还支持丰富的实用参数,适合做针对性测试:

# 输出HTML报告
offat -f swagger.json -o report.html -of html

# 限制每秒请求数,避免压垮被测服务
offat -f swagger.json -rl 60

# 携带认证头与限速扫描
offat -f swagger.json -H 'Authorization: Bearer token' -rl 100

# 只扫描匹配路径的端点
offat -f swagger.json -pr '/user'

提示:json 是默认输出格式,也支持 yamlhtml

如何扩展扫描能力:架构解读与性能优化

OFFAT 的可扩展性体现在"异步队列"设计上。从 docker-compose.yml 可以看到,API 服务把扫描任务投递到 Redis 队列,由 Worker 消费执行。这意味着你可以:

  • 横向扩展 Worker:扫描任务多时,直接增加 Worker 副本数即可并行处理,例如 docker compose up -d --scale offat-api-worker=4
  • 不影响接口响应:扫描是异步任务,即使大批量提交也不会阻塞 API 调用(任务超时上限为 1 小时,见 config.py);
  • 控制扫描强度:通过 rate_limit 参数(默认 60 次/秒)限制请求频率,避免对被测服务造成压力。

此外,官方基础镜像基于 Chainguard 的 Wolfi 加固基础镜像构建(见 wolfi-base-Dockerfile),采用多阶段构建并以 nonroot 非特权用户运行,安全性更有保障。

扫描结果怎么看

OFFAT 的输出以表格形式清晰呈现每个端点的检测结论。以 v0.5.0 版本的扫描结果为例,它主要包含三类检测:

OWASP OFFAT检测未文档化HTTP方法的结果

  • HTTP方法检测:如果端点执行了规范中未记录的 HTTP 方法,会标记为 False 并提示 "Endpoint performs HTTP method which is not documented";
  • SQL注入检测:针对查询参数注入 OR 1=1;-- 等恶意载荷,判断参数是否对 SQL 注入免疫;
  • BOLA路径检测:对 /pet/{id} 这类含路径参数的端点做模糊注入,识别潜在的越权访问风险。

表中的 data_leak(数据泄露)与 result(结果)是相互独立的维度,即使端点存在数据泄露,结果列也可能显示成功,解读报告时要注意区分。

常见问题与排查建议

  • 提交任务返回 401:检查 SECRET-KEY 请求头是否与 AUTH_SECRET_KEY 环境变量一致,生产环境务必显式设置该变量,避免使用随机默认值;
  • 任务一直显示 In Progress:确认 offat-api-worker 容器在运行,Worker 没启动时任务会一直积压在 Redis 队列中;
  • 连接 Redis 失败:确认 REDIS_HOST / REDIS_PORT 环境变量与 config.py 中的默认值匹配;
  • 扫描结果异常:项目对 OAS v3 规范的支持仍在完善中,遇到解析报错时可先检查规范文件是否符合 OAS v2 格式,或查看返回结果中的 error 字段定位问题。

结语

通过 Docker 部署 OWASP OFFAT,几分钟内就能拥有一套免费、可扩展的 API 漏洞扫描服务。无论是 CI/CD 流水线集成,还是日常的接口安全巡检,它都能帮你自动发现 API 中的常见高危漏洞。建议先在测试环境用 Petstore 这类示例规范跑通全流程,再逐步应用到生产接口的安全检测中。

【免费下载链接】OFFAT The OWASP OFFAT tool autonomously assesses your API for prevalent vulnerabilities, though full compatibility with OAS v3 is pending. The project remains a work in progress, continuously evolving towards completion. 【免费下载链接】OFFAT 项目地址: https://gitcode.com/gh_mirrors/of/OFFAT

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值