InQL v5: 技术深度解析
我们很高兴向大家展示我们广泛使用的Burp Suite扩展的最新版本 - InQL。版本5引入了显著的增强和升级,巩固了其作为渗透测试人员和漏洞赏金猎人不可或缺工具的地位。
引言
网络安全格局处于不断变化的状态。随着GraphQL采用率的激增,对适应性强、有弹性的测试工具的需求变得至关重要。作为GraphQL安全领域的领导者,Doyensec自豪地发布我们开源测试工具的最新版本 - InQL v5.x。这不仅仅是一个更新;这是一个全面的改进,旨在增强您的GraphQL测试能力。
发展历程:从Jython到Kotlin
我们与InQL的旅程始于Jython平台。然而,随着时间的推移,我们开始体验到Jython的局限性 - 主要是缺乏对Python 3的支持,这使得寻找兼容的工具和库变得越来越困难。显然需要进行转型。经过仔细考虑,我们选择了Kotlin。它不仅与Java(Burp的编写语言)兼容,而且还提供了健壮性、灵活性和活跃的开发人员社区。
将Burp扩展转换为Kotlin的挑战
我们选择在Kotlin扩展中包含完整的Jython运行时(超过40 MB),以克服重用现有Jython代码的挑战。虽然这不是理想的解决方案,但这种方法使我们能够以Kotlin启动扩展,启动Jython解释器,并将执行委托给较旧的Jython代码。
|
|
避开stickytape的需求
我们转向Kotlin也解决了另一个问题。Burp Suite中的Jython扩展通常是单个.py文件,但InQL的复杂性需要多文件布局。以前,我们使用stickytape库将Python代码压缩成单个文件。然而,stickytape引入了细微的错误并禁止访问静态文件。通过使InQL成为Kotlin扩展,我们现在可以将所有文件打包到JAR中并正确访问它们。
介绍GQLSpection:InQL v5.x的核心
在我们转型旅程中的一个重要里程碑涉及重构处理GraphQL模式解析的InQL核心部分。结果是GQLSpection - 一个与Python 2/3和Jython兼容的独立库,具有方便的CLI接口。
我们已在测试用例中包含了GraphQL规范中的所有GraphQL代码示例,确保全面覆盖。
作为一个额外的优势,它还取代了以前InQL版本的独立和CLI模式,这些模式已被移除以简化我们的代码库。
新功能
我们的客户严重依赖尖端技术。因此,我们在许多项目中经常有机会接触真实的GraphQL部署。这种丰富的接触使我们能够了解InQL用户面临的挑战和他们的需求,使我们能够决定实施哪些功能。为了回应这些见解,我们在InQL v5.0中引入了几个重要功能,以支持更有效和高效的审计和调查。
兴趣点
此版本中的一个突出功能是"兴趣点"。由GQLSpection提供支持,并由@schoobydrew贡献初始实现,这基本上是一个配备了多个可自定义预设的关键字扫描。
当分析具有超过50个查询/变更和数千个字段的广泛模式时,兴趣点扫描特别有用。它以人类可读的文本和JSON格式生成报告,提供了现代应用程序中常见的大型模式的高级概述,并帮助渗透测试人员快速识别模式中的敏感数据或危险功能。
改进的日志记录
早期版本工具的一个令人沮丧之处是,当解析器在真实模式上中断时缺乏有用的错误消息。因此,我引入了可配置的日志记录。这一点,加上解析功能现在由GQLSpection处理的事实,使得InQL v5.0更加可靠和用户友好。
内联注解
InQL的另一个重要补充是注解。在此之前,InQL只生成最基本的查询,需要使用其他工具来推断正确的输入格式、期望值等。然而,通过添加从GraphQL模式的"描述"字段或类型注解填充内容的内联注释,InQL v5.0已经更加成为一个独立工具。
这里有一个权衡:虽然广泛的注解使InQL更可用,但它们有时可能使理解和导航变得困难。我们正在为未来版本寻找解决方案,以动态限制注解的显示。
InQL和GraphQL安全的未来
我们对InQL的路线图是雄心勃勃的。话虽如此,我们致力于重新引入GraphiQL和循环关系检测等功能,实现与v4的完全功能对等。
随着GraphQL的持续增长,确保健壮的安全至关重要。InQL的未来涉及解决经常被忽视的利基GraphQL功能,并改进现有的渗透测试工具。我们期待与社区分享更多发展。
InQL:学生和贡献者的优秀项目
InQL不仅仅是一个工具,它是一个项目 - 一个邀请那些对网络安全充满热情的人贡献的项目。我们正在积极寻找希望为InQL做出贡献或进行GraphQL相关安全研究的学生和开发人员。这是一个与GraphQL安全专家合作的机会,并在塑造InQL未来的过程中发挥作用。
结论
InQL v5.x是持续工作和坚定致力于增强GraphQL安全的结果。我们敦促所有使用GraphQL的渗透测试人员、漏洞猎人和网络安全爱好者尝试这个新版本。如果您过去尝试过InQL并期待增强功能,v5.0不会让您失望。
在Doyensec,我们不仅仅是在开发一个工具,我们正在推动GraphQL安全可能性的边界。我们邀请您加入我们的旅程,无论是作为用户、贡献者还是实习生。
祝黑客愉快!