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 [![Telegram](https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Telegram_logo.svg/240px-Telegram_logo.svg.png)](https://t.me/Trixsec)
标签:API安全测试, CISA项目, CORS漏洞, Google Dorking, GraphQL安全, LFI, Python安全工具, RCE检测, REST API, SQL注入检测, Web安全, WordPress扫描, WPScan, XSS扫描, 加密, 命令注入, 安全工具包, 对称加密, 开放重定向, 漏洞扫描器, 网络安全, 自动化审计, 蓝队分析, 逆向工具, 隐私保护