数据风险全知道
【导读】在进行WEB应用安全审计过程中,搜集目标WEB应用存在的敏感资源、目录、API接口及参数等信息是审计测试流程中必不可少的环节。如何更好地实现RESTful API接口(及参数)发现,既是业界研究难点,也是WEB安全审计实践痛点。
新技术解读
1. API接口请求方法定义,比如使用同一个API接口会通过GET、POST、PUT完成不同的语义;
2. API接口命名空间定义,比如用户管理相关接口统一位于/api/v1/users空间;
3. API接口参数位置定义,比如参数位置是否作为API接口路径的一部分(即路径参数);
4. API接口参数类型定义,比如后端服务定义的参数类型是int类型还是string类型;
5. API接口对象名称定义,比如用户密码字段使用password还是pwd;
6. API接口身份鉴权定义,比如是否使用OAuth协议认证方式;
7. 其他定义,如API数据签名定义等。
对于以上7点,不同的WEB应用在实现上各不相同,但从全局性角度,许多不同的WEB应用在某些API接口的定义上存在共性,比如:
1. 许多应用的用户登陆API接口路径都会使用 /api/v1/user/login 或 /api/v1/user/auth 等;
2. 许多应用的用户注册API接口路径都会使用PUT方法或POST方法;
3. 许多应用的用户信息获取API接口都被设计为GET /api/v1/user/{string: userid}等。
因此,如果能够广泛分析已有的API接口定义特征,可以根据此类先验信息,在一定程度上实现对未知目标WEB应用的API深度挖掘。基于此原则,AssetNote团队进行了基于上下文的内容发现课题研究。
现代WEB应用框架在支撑开发者实现API接口的同时,自动生成了API接口文档(同时,也有开发工具或应用框架通过开发者编辑的API接口文档自动生成API接口包装代码)。
由于Swagger规范已经成为业界主流API文档规范(当然也存在其他常见API文档规范),许多API接口文档满足Swagger规范的格式定义。因此,AssetNote团队的安全研究人员通过github平台、全网扫描等方式,搜集了大规模的Swagger API描述文件。
通过格式解析和语义处理,研究人员批量提取了与API接口定义相关的上下文信息/特征。根据这些先验信息/特征,研究人员构建了KiteRunner工具以实现对任意指定的目标WEB应用深度自动化发现。KiteRunner项目主要基于Go语言实现,目前已经在Github平台开源,使用方式可以参考官方文档。
新旧技术对比
下面我们通过扫描内部某WEB应用展示dirsearch和kiterunner两款工具能力,进行新旧技术对比。
基于路径字典的dirsearch工具效果
dirsearchy运行命令:python3 dirsearch.py -u http://127.0.0.1:7100 -e js
针对内部某WEB应用,dirsearch工具并未发现有效信息,具体运行结果如下图所示:
基于上下文内容发现的kiterunner工具效果
kiterunner运行命令:kr scan http://127.0.0.1:7100 -w routes-large.kite
kiterunner工具发现该目标WEB应用存在大量API接口500报错信息。对于安全审计/渗透测试工程师而言,后端应用报错信息在信息搜集和渗透测试过程中具有重要价值,如下图所示:
通过kiterunner的replay功能,可以将kiterunner构造的请求信息进行重放并显示该工具构造的请求细节及返回信息,如下图所示:
参考链接
2. KiteRunner项目链接:https://github.com/assetnote/kiterunner
- END -
如有侵权,请联系删除