TrixSec/waymap
GitHub: TrixSec/waymap
Waymap 是一款基于 Python 的多功能 Web 漏洞扫描与安全测试工具包,集成了资产发现、常规漏洞检测、API 安全测试及 WordPress 专项扫描功能,旨在为渗透测试人员提供自动化的安全评估支持。
Stars: 117 | Forks: 21
# Waymap v7.2.0 - Web 漏洞扫描器 & Web 应用程序安全工具包
**当前版本**: 7.2.0
**Waymap** 是一款快速、实用的 **Web 漏洞扫描器** 和 **Web 应用程序安全测试** 工具包,适用于:
- **SQL 注入** 测试(基于布尔、基于报错、基于时间)
- **XSS** 扫描(反射型 payload 测试)
- **命令注入 / RCE** 扫描(基于安全标记的检查)
- **LFI**、**CRLF 注入**、**CORS 错误配置**、**开放重定向**
- 针对 **REST** 和 **GraphQL** 的 **API 安全测试**(身份验证检查、内省、基本滥用检查)
- **WordPress 漏洞扫描**(WPScan API 批量查询,涵盖核心/插件/主题)
Waymap 专注于自动化友好的扫描,提供一致的输出、基于会话的结果保存以及 secrets 管理。
## v7.2.0 版本更新内容
### 发现与目标获取
- 通过 `--dork` 实现 **SearchAPI 驱动的 Google dork 发现**
- **分页支持**(`page` 参数)以获取所有可用的结果页面
- 使用 `config/waymap/domain_blacklist.txt` 支持 **域名黑名单**
- 仅保存 **带参数的 URL**(必须包含 `?` 和 `=`)作为准备扫描的目标
### Secrets 管理
Waymap 支持在代码之外存储 secrets:
- `config/waymap/secrets.json`
- `searchapi_api_key`
- `wpscan_api_token`
Key 可以通过以下方式提供:
- CLI(例如:`--dork-api-key`、`--wpscan-token`)
- 环境变量(例如:`SEARCHAPI_API_KEY`、`WPSCAN_API_TOKEN`)
- secrets 文件(推荐)
### WordPress 漏洞配置文件
- 单一配置文件:`--profile wordpress`
- 在调用 WPScan 之前进行轻量级 WordPress 检测
- 使用 **WPScan API v3 batch**(`POST /batch`)处理多个查询项
- 将输出(包括失败信息)保存到 `sessions//waymap_full_results.json`
### RCE / 命令注入扫描器
- 新扫描类型:`--scan rce`
- 基于安全标记的 payload(无破坏性命令)
- 适用于带参数的 URL
- 将结果保存到 `sessions//waymap_full_results.json`
## 安装
```
pip install -r requirements.txt
```
## 快速开始
### 1) 扫描目标(标准 Web 漏洞扫描)
```
python waymap.py --target https://example.com --scan xss --crawl 2
```
### 2) RCE / 命令注入扫描
```
python waymap.py --target "https://example.com/page.php?id=1" --scan rce
```
### 3) WordPress 漏洞扫描(WPScan 配置文件)
```
python waymap.py --target https://example.com --profile wordpress
```
### 4) 使用 Google dorks 发现目标
```
python waymap.py --dork "inurl:.php?id="
```
默认情况下,结果会保存到 `dork_targets.txt`(如果同时提供了 `--target`,则保存到域会话中)。
## 完整 CLI 用法
请参阅 [usage.md](usage.md) 了解所有 CLI 选项和示例命令。
## 配置
### Secrets 文件
创建/编辑:
`config/waymap/secrets.json`
```
{
"searchapi_api_key": "",
"wpscan_api_token": ""
}
```
### 用于发现功能的域名黑名单
编辑:
`config/waymap/domain_blacklist.txt`
每行一个域名(子域名也会被匹配)。
## 支持的扫描类型
结合 `--scan` 使用以下选项之一:
- `sqli`
- `xss`
- `cmdi`
- `rce`
- `ssti`
- `lfi`
- `open-redirect`
- `crlf`
- `cors`
- `api`
- `all`
- `recon`
- `misconfig`
- `redirect`
- `injection-advanced`
- `graphql-suite`
- `auth-logic`
- `cache-smuggling`
- `wordpress-extras`
- `optional`
## 漏洞覆盖范围(Waymap 实际检查的内容)
Waymap 被设计为一款实用的 HTTP 扫描器。许多检查是 **尽力而为** 的,并取决于:
- 目标行为
- 响应内容
- 可用的端点
- URL 是否具有所需的参数(`?a=b`)
所有发现结果将针对每个目标域保存到:
- `sessions//waymap_full_results.json`
### `--scan recon`(基础侦察)
Recon 侧重于识别技术、攻击面和低成本的暴露信号。
- **技术指纹识别**
- 从头部获取服务器和框架提示(例如:`Server`、`X-Powered-By`、generator 标签)
- **CMS 指纹识别**
- 对常见 CMS 资产进行模式匹配(例如:WordPress/Joomla/Drupal/Magento)
- **Robots + Sitemap 枚举**
- 获取 `robots.txt` 和常见的 sitemap 端点,并提取列出的路径/URL
- **Sitemap 端点枚举**
- 尝试常见的 sitemap 位置以发现隐藏的端点
- **参数挖掘**
- 从抓取的 URL 中提取并去重查询参数名称
- **内容发现(轻量级字典)**
- 探测常见路径以查找暴露的资源
- **虚拟主机模糊测试(尽力而为)**
- 发送带有精心构造的 `Host` 头的请求,并比较响应相似度
- **子域名接管信号(尽力而为)**
- 匹配 HTML 中常见的接管错误指纹
- **开放存储桶检测(尽力而为)**
- 查找存储桶列表响应和目录索引模式
- **DNS 区域传送检查(尽力而为)**
- 运行有限的 `nslookup` 检查以检测类似传送的响应
### `--scan misconfig`(错误配置与暴露)
Misconfig 扫描旨在发现常见的、高影响的 Web 加固问题。
- **安全头审计**
- 检测缺失的头部,如 CSP/HSTS/XFO/XCTO/Referrer-Policy/Permissions-Policy
- **CSP 分析**
- 记录 CSP 的存在/值以供审查
- **HSTS 审计**
- 记录 HSTS 的存在/值
- **点击劫持信号**
- 标记缺失的 `X-Frame-Options` 和 CSP 中缺失的 `frame-ancestors`
- **Cookie 安全标志**
- 提取 `Set-Cookie` 并报告每个 Cookie 的 Secure/HttpOnly/SameSite 存在情况
- **版本泄露**
- 标记头部中类似版本的模式,例如 `Server`、`X-Powered-By`、`X-AspNet-Version`
- **管理面板发现**
- 探测常见的管理/登录路径
- **调试端点发现**
- 探测常见的 debug/status/profiler/phpinfo 端点
- **敏感文件暴露**
- 探测常见的 secrets/config 路径(例如:`/.git/config`、`/.env`、`wp-config.php`、`composer.lock`)
- **Secrets 暴露(汇总)**
- 在共享的 secrets 键下记录来自敏感文件和环境暴露的命中
- **备份文件暴露**
- 探测常见的备份/归档文件名
- **目录列表检查**
- 检测目录索引模式(例如:“Index of /”)
- **Swagger/OpenAPI 暴露**
- 探测常见的 `swagger.json`、`openapi.json`、`swagger-ui/` 位置
- **SOAP/WSDL 暴露**
- 探测常见的 `?wsdl` / `/wsdl` 端点
- **CSRF 令牌存在性(启发式)**
- 如果页面包含表单但没有明显的 CSRF 令牌字段名称
- **CORS(高级快速检查)**
- 发送带有攻击者 Origin 的 `OPTIONS` 请求,并标记宽松的 allow-origin + credentials
- **TLS/SSL 审计(尽力而为)**
- 捕获 HTTPS 目标的 TLS 版本和密码套件
- **TRACE 方法暴露(尽力而为)**
- 尝试 TRACE 请求并记录 200 响应
- **文件上传表单发现(启发式)**
- 检测 HTML `` 字段(用于优先安排上传测试)
### `--scan redirect`(重定向 / 头部注入)
- **Host 头注入(尽力而为)**
- 发送精心构造的 `Host` 并通过 `Location` 或响应正文检查反射
- **开放重定向(高级快速检查)**
- 对于带参数的 URL,替换常见参数并检查 `Location` 反射
- **CRLF 注入 / HTTP 响应拆分(尽力而为)**
- 注入 CRLF payload 并检查注入的头部反射
- **请求拆分(尽力而为)**
- 当检测到 CRLF/头部注入信号时记录
### `--scan injection-advanced`(高级注入扩展)
- **SSRF**
- 测试常见的内部目标(localhost/127.0.0.1/cloud metadata)并查找响应关键词
- **Cloud metadata SSRF**
- 特殊处理 metadata 端点,并在检测到时单独存储
- **XXE(尽力而为)**
- 在看起来与 XML 相关的 URL 上尝试基本的 XML payload,并匹配文件内容关键词
- **HTTP 参数污染(HPP)(启发式)**
- 比较基线响应长度与污染值的长度,以检测巨大差异
- **HTTP 方法篡改(尽力而为)**
- 从 OPTIONS 读取 `Allow` 头并标记有风险的方法
- **HTTP PUT 上传 / WebDAV 提示(尽力而为)**
- 如果方法暗示上传能力则标记;记录 DAV 头
- **路径遍历**
- 测试常见的遍历 payload 并匹配 OS 文件标记
- **远程文件包含(RFI)(启发式)**
- 尝试安全的外部包含标记并检查预期内容
- **SSTI(高级启发式)**
- 注入简单的表达式并检查求值信号
- **RCE(高级基于标记)**
- 注入安全的回显标记并检查反射
- **LFI -> RCE 链(尽力而为)**
- 尝试带有 UA 标记的 `/proc/self/environ` 风格包含
- **NoSQL 注入(启发式)**
- 注入简单的 `$ne` payload 并标记巨大的响应差异
- **原型污染(启发式)**
- 尝试 `__proto__` payload 并查找简单的反射信号
- **邮件头注入 / SMTP 注入(尽力而为)**
- 使用 CRLF payload 针对类似电子邮件的参数并检查反射
- **反射型文件下载(尽力而为)**
- 查找在 `Content-Disposition` 中反射的攻击者控制的文件名
### `--scan graphql-suite`(GraphQL 安全套件)
- **端点发现**
- 探测常见的 GraphQL 路径
- **内省暴露**
- 尝试内省查询并标记成功的 schema 响应
- **未认证访问信号**
- 如果 GraphQL 在没有 auth 的情况下成功响应则记录
- **批处理检查(尽力而为)**
- 尝试基本的批处理行为探测
- **深度/复杂性信号(尽力而为)**
- 尝试更深的查询并记录错误/成功信号
- **Schema 转储(尽力而为)**
- 在可用时存储返回的 schema payload
- **Subscriptions 检查(尽力而为)**
- 探测 subscription 能力信号
### `--scan auth-logic`(Auth & API 逻辑)
逻辑检查侧重于指示缺少授权或访问控制破坏的模式。
- **IDOR(启发式)**
- 标记看起来像对象标识符的端点/参数以进行优先级排序
- **访问控制破坏信号(启发式)**
- 记录响应和端点行为中的可疑模式
- **批量分配信号(启发式)**
- 记录可能接受 JSON 主体进行模型绑定的端点
- **NoSQL 注入信号(启发式)**
- 针对常见 NoSQL 模式的轻量级 payload 测试
- **OAuth 错误配置信号(尽力而为)**
- 尝试检测明显的 OAuth 端点模式
- **JWT 检查(尽力而为)**
- 检测明显的 JWT 使用模式并记录配置提示
- **基本认证暴力破解安全性(非破坏性)**
- 仅报告存在/信号;不执行激进的暴力破解
### `--scan cache-smuggling`(缓存 & 请求走私)
- **缓存投毒信号(尽力而为)**
- 发送头部变体并检查与缓存相关的响应差异
- **缓存欺骗信号(尽力而为)**
- 探测看起来可缓存的路径并记录缓存行为提示
- **Web 缓存路由信号(尽力而为)**
- 探测路由头部和缓存指示器
- **HTTP desync/走私指示器(尽力而为)**
- 执行轻量级探测并记录可疑响应
### `--scan wordpress-extras`(WordPress 附加组件)
- **用户枚举(尽力而为)**
- 检查常见的枚举模式(例如:作者归档)
- **XML-RPC 暴露**
- 检测 `rpc.php` 是否可达并提供能力提示
- **Readme 暴露**
- 检查常见的 WP readme 端点
- **备份/配置暴露**
- 探测 WP 特定的 config/backup 文件名
- **插件/主题枚举(尽力而为)**
- 尝试识别常见的插件/主题路径
- **加固审计(尽力而为)**
- 记录 WP 目标常见安全控制的存在/缺失
### `--scan optional`(可选检查)
- **WebSocket 安全检查(尽力而为)**
- 检测 websocket 端点/信号
- **WAF 检测(扩展)**
- 记录 WAF 指纹和拦截行为
- **重定向链检查**
- 记录可能隐藏端点转换的重定向序列
## API 安全测试
```
python waymap.py --target https://api.example.com --scan api --api-type rest
python waymap.py --target https://api.example.com/graphql --scan api --api-type graphql
```
可选:
- `--api-endpoints /users,/login` (REST)
## 身份验证支持
支持的 `--auth-type` 值:
- `form`
- `basic`
- `digest`
- `bearer`
- `api_key`
示例:
```
python waymap.py --target https://example.com --auth-type bearer --token "YOUR_TOKEN" --scan all
```
## 报告
```
python waymap.py --target https://example.com --scan all --report-format html,csv,markdown --output-dir reports
```
## 结果 / 输出文件
Waymap 按目标域存储扫描输出:
- `sessions//waymap_full_results.json`
这包括来自以下内容的发现:
- 标准漏洞扫描
- WordPress 配置文件扫描
- RCE 扫描
## 帮助
```
python waymap.py --help
```
## 法律 / 免责声明
Waymap 仅用于 **授权的安全测试** 和教育用途。
## 支持
问题反馈: https://github.com/TrixSec/waymap/issues
## 加入我们的 TELEGRAM
[](https://t.me/Trixsec)
标签:API安全测试, CISA项目, CORS漏洞, Google Dorking, GraphQL安全, LFI, Python安全工具, RCE检测, REST API, SQL注入检测, Web安全, WordPress扫描, WPScan, XSS扫描, 加密, 命令注入, 安全工具包, 对称加密, 开放重定向, 漏洞扫描器, 网络安全, 自动化审计, 蓝队分析, 逆向工具, 隐私保护