InQL v5: 技术深度解析
2023年8月17日 - Andrew Konstantinov
我们非常高兴向大家展示Burp Suite扩展工具InQL的最新版本——第五代。该版本通过重大功能升级,进一步巩固了其作为渗透测试和漏洞赏金猎人必备工具的地位。
引言
网络安全形势瞬息万变。随着GraphQL技术的普及,市场对灵活、健壮的测试工具需求激增。作为GraphQL安全领域的领导者,Doyensec正式发布开源测试工具InQL v5.x。这不仅是常规更新,更是一次全面提升GraphQL测试能力的架构重构。
演进之路:从Jython到Kotlin
InQL最初基于Jython平台开发,但随着时间推移,Jython对Python 3支持的缺失导致工具链兼容性问题日益突出。经过审慎评估,我们选择迁移到Kotlin——不仅因为其完美兼容Burp Suite的Java环境,更因其强大的语言特性和活跃的开发者生态。
Kotlin化改造的技术挑战
为复用现有Jython代码,我们创新性地将完整的Jython运行时(超过40MB)内嵌至Kotlin扩展中。虽然这不是最优雅的方案,但通过这种混合架构,我们成功实现了在Kotlin环境中启动Jython解释器并执行遗留代码:
|
|
告别stickytape的束缚
Kotlin迁移还解决了另一个技术痛点。传统Jython扩展要求所有代码必须压缩为单个.py文件,而复杂的InQL需要多文件结构。旧版使用stickytape库进行代码合并,但这会引发隐蔽错误且无法访问静态资源。现在通过JAR打包方式,所有资源都能被正确加载。
GQLSpection:InQL v5的核心引擎
在架构重构过程中,我们将GraphQL模式解析核心功能抽离为独立库GQLSpection。这个兼容Python 2/3和Jython的库具有以下特点:
- 提供便捷的CLI接口
- 包含GraphQL规范所有示例作为测试用例
- 取代旧版独立模式和CLI功能,实现代码精简
新特性详解
通过大量真实项目积累,我们针对渗透测试人员的实际需求开发了多项专业功能:
关键点扫描
由@schoobydrew贡献初始实现的该功能,本质上是支持自定义预设的关键词扫描系统。当分析包含50+个查询/变更和数千字段的大型模式时,它能生成人类可读文本和JSON格式报告,帮助快速定位敏感数据或高危功能。
增强型日志系统
新版引入可配置的日志机制,结合GQLSpection的解析能力,使工具在处理复杂模式时更具可靠性和可调试性。
行内注释
v5.0创新性地从GraphQL模式描述中提取信息,生成包含输入格式、预期值等详细说明的注释。虽然这可能导致界面信息过载,但我们正在开发动态注释显示方案以优化体验。
未来规划
我们计划逐步恢复GraphiQL支持、环形关系检测等特性,最终实现与v4版本的完全功能对齐。随着GraphQL生态发展,InQL将持续深耕那些常被忽视的安全边角,推动测试工具的创新。
加入我们
InQL不仅是工具,更是开放的安全工程实践。我们诚邀学生和开发者共同参与项目开发或开展GraphQL相关安全研究,与领域专家一起塑造InQL的未来。
结语
InQL v5.x代表着我们对GraphQL安全极限的不懈探索。无论您是渗透测试老手还是安全研究员,这个版本都将带来全新体验。在Doyensec,我们正在重新定义GraphQL安全的可能性——期待您以用户、贡献者或实习生的身份加入这段旅程。
祝您黑客愉快!