InQL v5: 技术深度解析
2023年8月17日 - 作者:Andrew Konstantinov
我们非常高兴向大家展示我们广泛使用的Burp Suite扩展——InQL的最新版本。第五版引入了重大增强和升级,巩固了其作为渗透测试人员和漏洞赏金猎人不可或缺工具的地位。
目录
- 引言
- 演进历程:从Jython到Kotlin
- 将Burp扩展转换为Kotlin的挑战
- 规避stickytape需求
- 介绍GQLSpection:InQL v5.x的核心
- 新特性
- 关注点扫描
- 改进的日志记录
- 行内注解
- InQL与GraphQL安全的未来
- InQL:学生和贡献者的绝佳项目
- 结论
引言
网络安全格局处于不断变化中。随着GraphQL采用率的激增,对适应性强、弹性好的测试工具的需求变得至关重要。作为GraphQL安全领域的领导者,Doyensec自豪地发布我们开源测试工具的最新版本——InQL v5.x。这不仅仅是一次更新,而是一次全面的重构,旨在增强您的GraphQL测试能力。
演进历程:从Jython到Kotlin
我们的InQL之旅始于Jython平台。然而,随着时间的推移,我们开始体验到Jython的局限性——主要是缺乏对Python 3的支持,这使得寻找兼容的工具和库变得越来越困难。显然需要进行转型。经过仔细考虑,我们选择了Kotlin。它不仅与Java(Burp的编写语言)兼容,还提供了健壮性、灵活性和活跃的开发社区。
将Burp扩展转换为Kotlin的挑战
为了克服重用现有Jython代码的挑战,我们选择在Kotlin扩展中包含整个Jython运行时(超过40 MB)。虽然这不是理想的解决方案,但这种方法使我们能够以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格式生成报告,提供现代应用中常见 vast模式的宏观概述,并帮助渗透测试人员快速识别模式中的敏感数据或危险功能。
改进的日志记录
早期版本工具的一个令人沮丧之处是,当解析器在真实模式上中断时,缺乏有用的错误消息。因此,我引入了可配置的日志记录。这一点,加上解析功能现在由GQLSpection处理,使InQL v5.0更加可靠和用户友好。
行内注解
InQL的另一个重要添加是注解。在此之前,InQL只生成最基本的查询,需要使用其他工具来推断正确的输入格式、期望值等。然而,通过添加填充了GraphQL模式或类型注解中“description”字段内容的行内注释,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安全可能性的边界。我们邀请您加入我们的旅程,无论是作为用户、贡献者还是实习生。
祝黑客愉快!