arrester/EndAbyss

GitHub: arrester/EndAbyss

一款用于端点发现与参数提取的快速爬取工具,兼顾静态与动态扫描并支持灵活管道集成。

Stars: 2 | Forks: 0

# 🌊 EndAbyss ![Python Version](https://img.shields.io/badge/python-3.13%2B-blue) ![License](https://img.shields.io/badge/license-MIT-green) ![Version](https://img.shields.io/badge/version-1.2-orange) EndAbyss 是一个用于端点发现的快速工具,可爬取网站以收集端点和参数,适用于漏洞赏金和红队操作。 ![alt text](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1646390b75064508.png) ## 🌟 功能特性 - **红队/漏洞赏金支持**:适用于红队操作和 Web 漏洞赏金项目 - **静态/动态扫描**:支持快速静态扫描或基于 Playwright 的动态扫描 - **端点发现**:自动从 HTML、JavaScript 和 API 响应中收集端点 - **参数提取**:自动从表单和 URL 中提取 GET/POST 参数 - **目录扫描**:支持基于单词列表的目录暴力破解 - **管道集成**:支持使用 `-pipeurl`、`-pipeendpoint`、`-pipeparam`、`-pipejson` 选项与其他工具集成 - **WAF 绕过选项**:支持延迟、随机延迟、速率限制和代理 - **模块化设计**:可作为 Python 模块导入和使用 ## 🚀 安装 **bash** ``` git clone https://github.com/arrester/endabyss.git cd endabyss pip install -r requirements.txt pip install -e . ``` 或 **Python** ``` pip install endabyss ``` 若要使用动态扫描模式,请安装 Playwright 浏览器: ``` playwright install chromium ``` ## 📖 使用方法 ### CLI 模式 **基础扫描** `endabyss -t http://example.com` **动态扫描模式** `endabyss -t http://example.com -m dynamic` **目录扫描** `endabyss -t http://example.com -ds -w wordlist.txt` **管道输出** `endabyss -t http://example.com -pipeurl` # 仅输出 URL `endabyss -t http://example.com -pipeendpoint` # 仅输出端点 `endabyss -t http://example.com -pipeparam` # 仅输出参数 `endabyss -t http://example.com -pipejson` # 输出 JSON 格式 **管道集成示例** `endabyss -t http://example.com -pipeurl | sqlmap --batch` ### 与 SubSurfer 集成 使用 EndAbyss 从 SubSurfer 收集的 Web 子域名中扫描端点的管道配置: **1. 基础集成(Web 子域名 → 端点收集)** `subsurfer -t example.com -pipeweb | xargs -I {} endabyss -t {} -pipeurl` **2. 保存结果到文件** `subsurfer -t example.com -pipeweb | xargs -I {} endabyss -t {} -o results.txt` **3. 集成动态扫描模式** `subsurfer -t example.com -pipeweb | xargs -I {} endabyss -t {} -m dynamic -pipeurl` **4. 收集 JSON 格式的详细信息** `subsurfer -t example.com -pipeweb | xargs -I {} endabyss -t {} -pipejson` **5. 包含目录扫描** `subsurfer -t example.com -pipeweb | xargs -I {} endabyss -t {} -ds -w wordlist.txt -pipeurl` ### 作为 Python 模块使用 **基础端点扫描** ``` from endabyss.core.controller.controller import EndAbyssController import asyncio async def main(): controller = EndAbyssController( target="http://example.com", mode="static", verbose=1, depth=5 ) results = await controller.scan() print(f"Found {len(results['endpoints'])} endpoints") print(f"Found {len(results['forms'])} forms") print(f"Found {len(results['parameters'])} parameter sets") for param_data in results['parameters']: url = param_data['url'] params = param_data.get('parameters', {}) param_str = '&'.join([f"{k}={v}" for k, v in params.items()]) print(f"{url}?{param_str} [{param_data['method']}]") if __name__ == "__main__": asyncio.run(main()) ``` **动态扫描** ``` from endabyss.core.controller.controller import EndAbyssController import asyncio async def main(): controller = EndAbyssController( target="http://example.com", mode="dynamic", headless=True, wait_time=3.0 ) results = await controller.scan() for endpoint in results['endpoints']: print(endpoint['url']) if __name__ == "__main__": asyncio.run(main()) ``` **结果保存** ``` from endabyss.core.controller.controller import EndAbyssController import asyncio async def main(): controller = EndAbyssController("http://example.com") results = await controller.scan() output_path = controller.get_output_path("results.json") controller.save_results(results, output_path) print(f"Results saved to: {output_path}") if __name__ == "__main__": asyncio.run(main()) ``` ## 🔧 引用工具的关键特性 EndAbyss 集成了多种参考工具的关键特性: - **Katana**:深度爬取和端点发现方法论 - **LinkFinder**:使用正则表达式模式提取 JavaScript 端点 - **ParamSpider**:参数提取和 URL 清理技术 - **SubSurfer**:CLI 设计、管道集成和模块化架构 ## 📋 可用选项 | 选项 | 描述 | | --- | --- | | `-t, --target` | 目标 URL 或域名 | | `-tf, --targetfile` | 包含目标列表的文件 | | `-m, --mode` | 扫描模式:静态(默认)或动态 | | `-d, --depth` | 爬取深度(默认:5) | | `-c, --concurrency` | 并发请求数(默认:10) | | `-ds, --dirscan` | 启用目录扫描 | | `-w, --wordlist` | 用于目录扫描的单词列表文件 | | `--delay` | 请求之间的延迟(秒) | | `--random-delay` | 随机延迟范围(例如 1-3) | | `--proxy` | 代理 URL(HTTP/HTTPS/SOCKS5) | | `--rate-limit` | 速率限制(每秒请求数) | | `-pipeurl` | 仅输出 URL 用于管道 | | `-pipeendpoint` | 仅输出端点用于管道 | | `-pipeparam` | 仅输出参数用于管道 | | `-pipejson` | 输出 JSON 格式用于管道 | ## 📋 要求 - 推荐:Python 3.13.0 或更高版本 - aiohttp - beautifulsoup4 - playwright(用于动态扫描) - rich - requests ## 📝 许可证 MIT 许可证 ## 🤝 贡献 漏洞报告、功能建议、问题反馈
标签:Playwright, Python模块, Python爬虫, SEO端点, URL参数, WAF绕过, Web爬虫, 代理支持, 代码生成, 动态扫描, 参数提取, 告警, 大数据, 延时随机化, 模块化工具, 渗透测试工具, 特征检测, 病毒分析, 目录扫描, 管道集成, 红队操作, 表单参数, 逆向工具, 静态扫描