一、背景描述
二、功能实现
1、获取映射URL
2、获取方法说明
三、用途
1、用来梳理接口
2、用来获取Source的入口URL
四、获取完整代码
获取映射URL最开始是在实现XSS的检测与黑盒联动时想到的,发现问题后,继续寻找Source对应的映射URL。
当初搞定后第一时间将这个喜悦分享给了腿腿,腿腿告诉我58用CodeQL来梳理一个应用所有的接口,当时没什么感触,这几天感觉的确是个好用途,于是重构了一下这个功能。
除了获取方法的映射URL以外,我还增加了对这个方法说明的获取。
为了考虑扩展,在qll最上面可以手动配置实现映射功能的标注
先获取Method所处Controller的映射路径,增加了类中没有映射路径的兼容,没有时返回为空。
再用同样的姿势获取方法的映射路径
考虑到有些Controler的映射例如形如foo/,方法的映射路径是/bar,拼接后便是foo//bar,所以定义一个格式化的方法
然后进行拼接
在获取方法说明时,考虑到有些项目使用了注释定义方法说明,有些项目使用了标注定义方法说明。
所以在qll最上面设置对标注的配置。
然后再获取时有限获取标注定义的方法说明(因为我发现有些地方即使用标注又使用了注释)
同样为了去除注释前面的/**以及后面的*/符号,定义一个格式化的谓词用来去除。
如下所示,我在扫描XXE漏洞时,同时获取对应的入口URL。
而对于上面这种情况,则可以直接手写一个上传功能的HTML表单,进行XXE的黑盒验证。
公众号回复【CodeQL 002】