ynori7/draque
GitHub: ynori7/draque
一款基于日志与规范重建 API 端点并生成测试输入的智能安全工具。
Stars: 0 | Forks: 0
# Draque
以著名私掠者和探险家弗朗西斯·德雷克爵士(又名 El Draque)命名,此安全探索工具允许您为安全测试目的探索 API 生态系统。
功能:
- 通过 Wayback Machine 的 API 查找历史端点
- 通过日志文件查找端点
- 查找并理解 Swagger 文档中的端点
- 从所有来源获取所有已知端点,按路由分组,收集相关 ID,并自动推断相似端点的有效输入数据。
## 用法
### CLI 工具
Draque 工具是一个交互式 UI,允许您从各种来源扫描数据、合并它们并分析结果。
用法:
```
go build -o draque cmd/draque/main.go
./draque
```
该工具支持以下命令:
- wayback:添加 Wayback Machine 源(域名 + 可选路径前缀)
- logs:添加访问日志源(文件路径 + 格式模式)
- swagger:添加 Swagger/OpenAPI 规范源(文件路径)
- status:显示已配置的源和扫描摘要
- scan:获取并合并所有已配置的源(带进度)
- analyze:显示扫描结果的统计信息(仅扫描后可用)
- search:在输入时实时搜索端点并查看详情(仅扫描后可用)
- export:将每个端点模板的一个代表性 URL 导出到文件(每行一个)(仅扫描后可用)
- reset:清除所有源和扫描数据以重新开始(仅扫描后可用)
### 库
Draque 可以作为一个 Go 库来以编程方式扫描来源并检索合并的端点模板。
**示例用法:**
```
package main
import (
"fmt"
"log"
"github.com/ynori7/draque"
)
func main() {
d := draque.New(
// Fetch historical URLs from the Wayback Machine for example.com under /api
draque.WithWayback("example.com", "/api"),
// Parse all access log files in a directory; adjust the format pattern to match your log format
draque.WithLogDirectory("/var/log/myapp", "{host} {method} {path} {status}"),
// Parse all Swagger/OpenAPI specs (.json, .yaml, .yml) in a directory
draque.WithSwaggerDirectory("/path/to/swagger/specs"),
)
templates, err := d.Scan()
if err != nil {
log.Fatal(err)
}
for _, t := range templates {
fmt.Println(t)
}
}
```
`Scan` 获取所有已配置的来源,归一化 URL,并返回一个去重后的 `domain.EndpointTemplate` 值切片——每个唯一路由模式一个,并将推断的路径参数代回。
**其他选项:**
| 选项 | 描述 |
|---|---|
| `WithWayback(domain, prefix)` | 为给定域名和可选路径前缀从 Wayback Machine 获取 URL。 |
| `WithLogFile(path, format)` | 使用给定格式模式解析单个访问日志文件。 |
| `WithLogDirectory(path, format)` | 解析目录中的所有常规文件作为访问日志。 |
| `WithSwagger(path)` | 解析单个 Swagger/OpenAPI 规范文件(JSON 或 YAML)。 |
| `WithSwaggerDirectory(path)` | 解析目录中的所有 `.json`、`.yaml` 和 `.yml` 文件作为 Swagger 规范。 |
| `WithErrorOnFailure(true)` | 在第一个来源失败时立即返回,而不是跳过它。 |
标签:API安全, API安全分析, API测试, DevSecOps, EVTX分析, Go语言, JSON输出, OpenAPI, Swagger解析, Wayback Machine, Web安全, XML 请求, 上游代理, 交互式UI, 历史端点, 反汇编, 安全开发, 安全扫描, 安全探索工具, 安全测试, 开源安全工具, 接口重构, 攻击性安全, 日志审计, 时序注入, 测试输入生成, 程序破解, 端点情报, 端点模板, 蓝队分析, 访问日志, 输入数据推断, 逆向工程平台