CodeQL 获取SpringBoot应用的映射URL
2021-10-26 00:27:2 Author: mp.weixin.qq.com(查看原文) 阅读量:4 收藏

一、背景描述
二、功能实现
    1、获取映射URL
    2、获取方法说明
三、用途
    1、用来梳理接口
    2、用来获取Source的入口URL
四、获取完整代码

获取映射URL最开始是在实现XSS的检测与黑盒联动时想到的,发现问题后,继续寻找Source对应的映射URL。

当初搞定后第一时间将这个喜悦分享给了腿腿,腿腿告诉我58用CodeQL来梳理一个应用所有的接口,当时没什么感触,这几天感觉的确是个好用途,于是重构了一下这个功能。

除了获取方法的映射URL以外,我还增加了对这个方法说明的获取。

1、获取映射URL

为了考虑扩展,在qll最上面可以手动配置实现映射功能的标注

先获取Method所处Controller的映射路径,增加了类中没有映射路径的兼容,没有时返回为空。

再用同样的姿势获取方法的映射路径

考虑到有些Controler的映射例如形如foo/,方法的映射路径是/bar,拼接后便是foo//bar,所以定义一个格式化的方法

然后进行拼接

2、获取方法说明

在获取方法说明时,考虑到有些项目使用了注释定义方法说明,有些项目使用了标注定义方法说明。

所以在qll最上面设置对标注的配置。

然后再获取时有限获取标注定义的方法说明(因为我发现有些地方即使用标注又使用了注释)

同样为了去除注释前面的/**以及后面的*/符号,定义一个格式化的谓词用来去除。

1、用来梳理接口

2、用来获取Source的入口URL

如下所示,我在扫描XXE漏洞时,同时获取对应的入口URL。

而对于上面这种情况,则可以直接手写一个上传功能的HTML表单,进行XXE的黑盒验证。

公众号回复【CodeQL 002】


文章来源: https://mp.weixin.qq.com/s?__biz=Mzg4ODU4ODYzOQ==&mid=2247485003&idx=1&sn=7543fdf756c483f00bf999b6a48828c4&chksm=cff9967bf88e1f6d07db38b0fada5c9803ab9334ae348950d8bb62f64f0241db5f8a19692f4b&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh