Read this article more comfortably on Escape Blog _
在API的快速发展域中,GraphQL已成为一种功能强大的,面向数据的语言。随着其采用飙升,需要强大的工具发现和指纹这些API的需求也是如此。输入Goctopus,这是我们在Escape开发的基于Golang的解决方案,可为GraphQL API提供全面,快速和可互操作的端点发现和指纹。 Goctopus设计为克服现有工具的局限性,将其手臂扩展到子域枚举,路线蛮力,身份验证检测,架构内省等等的领域,同时保持最佳速度和资源管理。在本文中,我们深入研究了为什么我们创建了goctopus,它的作用以及它如何突破API安全的界限。
tl; dr:我们构建了一个开放源 graphql端点发现和指纹工具:check out Goctopus on Github。
揭露API:API发现和指纹的重要性
在广泛的API领域中,两种实践脱颖而出,可以阐明您的在线形象的复杂性:API Discovery和指纹。
API发现是找到组织在其生态系统中拥有的所有API的过程。这里的目的是揭示可以与之相互作用的数字表面的整体。在微服务和分布式系统的时代,发现所有API端点对于维持服务互操作性和确保安全性至关重要。
另一方面,api指纹更进一步。一旦发现端点,它们就会扫描以查找有关它们的特定信息:使用的技术,配置,身份验证详细信息...
端点发现和指纹是进攻和防御安全的关键工具:
- 检测攻击表面:通过了解存在什么终点以及它们的操作方式,您可以准确地了解潜在的攻击表面。这为您提供了保护系统的优势,因为您可以先发定位和解决漏洞。
- 在互联网范围内的研究:如果您是安全研究人员或热衷于了解Internet上暴露内容的景观的组织,则指纹可以为您提供宏观的视野。它有助于收集有关在各个领域使用的技术,配置和安全实践的数据。
- 分类端点:能够确定API上使用哪些技术和配置,通常是任何安全过程(进攻或防御性)的第一步。
对于REST API,有无数的工具可以执行这些任务。但是,对于GraphQl,这不是相同的故事,正如您将在下一段中看到的那样。
识别空白:为什么我们需要goctopus
关于GraphQl API,我们前一段时间建造了Grafinder,它已经为我们服务了几年。但是,当我们决定实施API Catalog时,我们需要一个更健壮,更快,一对一和更可互操作的解决方案。
grafinder有一些难以忽视的缺点。它很慢,很难以编程方式使用,通常缺少输入,缺乏选项,并且其python的基础并不是我们在此特定任务中的首选选择。此外,我们发现自己需要一种可以提供更全面,更有效的发现和指纹功能的工具:
- 广泛而有效的发现功能:(子域中枚举,蛮力,脚本分析)。
- GraphQl API的精确,快速,完整的指纹:(技术,身份验证,模式,现场建议攻击)。
- 易于使用和愉快的CLI。
- 用于编程用法的完整软件包。
- 服务互操作性:通过Webhooks与外部服务通信。
- 可移植性:在任何规模的任何地方都可以轻松运行。
- 多功能输入:采用各种输入,域,URL和IP地址。
- 速度:几分钟内扫描数千个域。
- 比例:在较大的机器上或水平刻度上运行。
- 网络资源:发送最少的必要请求并最大化吞吐量。
因此,考虑到这些约束,我们意识到我们需要一个解决方案,该解决方案可能超出了已经存在的问题。一个更整体的工具。更快的工具。一个...好,更好的工具。我们需要goctopus。
释放野兽:见goctopus
Goctopus源于我们刚刚讨论的需求,是我们对我们需要的全面,快速和互操作工具的答案。该章鱼以Golang的速度和网络效率为卓越的速度和效率而创建,其手臂无处不在。让我们深入研究其各个方面:
发现:
- 子域枚举:Goctopus使用subfinder使用DNS记录API来枚举子域。
- bruteforce :我们构建了一个自定义的流行GraphQl路由列表,因此Goctopus在测试的每个域中找到端点的最佳可能性。
- 脚本分析(启动工作):在管道中,Goctopus很快就可以从Web上的JavaScript&HTML文件嗅出隐藏的GraphQl端点。
指纹:
- 身份验证:它迅速识别哪些端点需要身份验证并公开暴露。
- GraphQl模式/内省:Goctopus检查模式是否可用。
- bruteforcing的现场建议:如果无法使用模式,这种聪明的头足类动物甚至可以弄清楚是否可以使用现场建议攻击来实现架构。
- 引擎指纹识别(进行工作):一旦添加了此功能,Goctopus将能够理解端点后面的技术堆栈。
dx&用法:
- cli :goctopus很容易用作手动操作的CLI。
- GO Package :它可以用作编程中的Golang软件包以集成到其他工具中。
- webhook :使用此功能,Goctopus可以通过Webhook转发其结果,以便其他服务可以检索它们。
- 各种输入:该工具接受多种输入:域,URL和IP地址。
性能:
- 速度:专为速度而设计,goctopus可以在几分钟内扫描数千个域。
- scale :此工具不怕深处;它的构建是为了在较大的机器上扩展或水平扩散在集群上。
- 网络资源:goctopus注意其请求,只发送必要的内容。
- 利率限制:它还确保不会同时向单个端点发送太多请求以避免限制速率。
简而言之,当我们意识到现有工具的局限性时,Goctopus就是我们所设想的。它是全面,快速,灵活且可扩展的。
快速动手:见goctopus
有兴趣尝试goctopus吗?这是入门的方法。
安装:您在这里有两个选择。如果将GO安装在计算机上,只需在终端中运行go install -v github.com/Escape-Technologies/goctopus/cmd/goctopus@latest
即可。喜欢码头机吗?没问题,请使用docker run --rm -it escapetech/goctopus:latest <options>
在Docker容器中运行最新版本的Goctopus。
用法示例:安装后,使用此简单命令goctopus -a example.com
旋转goctopus。这将在指定域上启动发现过程,并启用了所有功能(-a\
标志代表“ All”)。
例如,在rickandmortyapi.com
上运行goctopus将导致以下内容:
goctopus -a rickandmortyapi.com
_
__ _ ___ ___| |_ ___ _ __ _ _ ___
/ _` |/ _ \ / __| __/ _ \| '_ \| | | / __|
| (_| | (_) | (__| || (_) | |_) | |_| \__ \
\__, |\___/ \___|\__\___/| .__/ \__,_|___/ v0.0.14
|___/ |_|
[INF] Enumerating subdomains for 'rickandmortyapi.com'
[INF] Found 5 subdomains for 'rickandmortyapi.com' in 15 seconds 276 milliseconds
INFO[0016] Done fingerprinting rickandmortyapi.com
INFO[0016] Found: {"authenticated":false,"domain":"rickandmortyapi.com","schema_status":"OPEN","source":"rickandmortyapi.com","url":"https://rickandmortyapi.com/graphql"}
INFO[0016] Done. Found 1 graphql endpoints
请访问我们的GitHub repo获取详细文档和最新版本说明。
Goctopus的未来:贡献和路线图
我们正在积极寻找增强goctopus的方法,我们欢迎贡献。随时在我们的GitHub repo上提出问题或PR。我们很高兴看到社区可以在哪里参加这个项目。
展望未来,我们有大计划。改进的子域中枚举,更智能的端点发现,发动机指纹 - Goctopus的路线图带有令人兴奋的更新。
逃脱的Goctopus:为我们的用户提供一流的安全性
在Escape,我们正在使用Goctopus为用户提供增强的安全性。
API目录:我们正在利用Goctopus为用户提供有关其攻击表面的详细信息。通过不断扫描新的API并更新我们的记录,我们可以确保最新的愿景并在用户曝光未受保护的API时提醒他们。
建议:Goctopus还集成到我们的应用程序创建过程中,以自动建议我们的端点以确保我们的平台尽可能平稳地使用。
kraken :我们在称为kraken的goctopus周围建立了一个内部工具,将goctopus扩展到另一个级别。它由一个API,数据库和数十个由Kubernetes群集管理的Goctopus实例组成,该实例允许我们扫描数百万个域以收集 +150K GraphQl端点上的数据。请继续关注即将发表的有关该主题的文章!
我们邀请您加入我们探索Goctopus可以做什么。尝试一下,做出贡献,一起,让我们突破API安全的界限!而且不要忘记在github上饰演Goctopus repo。
,如果您想要免费的GraphQl API的最大安全性,请免费尝试Escape security platform!