《数据安全风险评估白皮书》
400-100-9516
news
技术分享

站内搜索

技术分享|针对现代WEB应用构建的内容发现工具-KiteRunner
2021-04-30 3177 技术分享

数据风险全知道

【导读】在进行WEB应用安全审计过程中,搜集目标WEB应用存在的敏感资源、目录、API接口及参数等信息是审计测试流程中必不可少的环节。如何更好地实现RESTful API接口(及参数)发现,既是业界研究难点,也是WEB安全审计实践痛点。

新技术解读

在今年4月的Bsides Canberra 2021安全会议上,AssetNote团队安全研究人员公开了一项关于基于上下文的内容发现研究,并发布对应工具KiteRunner,以解决针对现代WEB应用框架实施安全审计过程中传统路径扫描技术效果欠佳的问题。
在AssetNote团队公开的研究报告中,他们将基于路径字典的传统扫描技术归类于“内容空间发现”。他们认为,对于现代WEB应用架构,更重要的是能够深度自动化发现“内容空间”中的“内容”,包括但不限于API接口路径、参数、HTTP方法和请求头信息,即自动化工具能够构造和提交与正常RESTful API接口调用相似的请求。WEB应用开发者在设计或调用RESTful API接口时的关注点:
 

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数据签名定义等。

undefined

对于以上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团队进行了基于上下文的内容发现课题研究。

undefined

 

现代WEB应用框架在支撑开发者实现API接口的同时,自动生成了API接口文档(同时,也有开发工具或应用框架通过开发者编辑的API接口文档自动生成API接口包装代码)。

由于Swagger规范已经成为业界主流API文档规范(当然也存在其他常见API文档规范),许多API接口文档满足Swagger规范的格式定义。因此,AssetNote团队的安全研究人员通过github平台、全网扫描等方式,搜集了大规模的Swagger API描述文件。

通过格式解析和语义处理,研究人员批量提取了与API接口定义相关的上下文信息/特征。根据这些先验信息/特征,研究人员构建了KiteRunner工具以实现对任意指定的目标WEB应用深度自动化发现。KiteRunner项目主要基于Go语言实现,目前已经在Github平台开源,使用方式可以参考官方文档。

undefined

新旧技术对比

目前已经存在许多知名扫描工具帮助安全工程师实施WEB应用构建的内容发现的相关操作,比如常用的wfuzz、dirsearch、gobuster等。此类扫描工具核心原理是通过已知敏感路径字典和资源路径变形规则,对目标应用发起路径扫描,其在效果上,主要依赖人工梳理的路径字典规则覆盖是否全面。在核心扫描原理和工具实现层面,此类工具实际上与20年前的技术相比,并无太大改变。
然而WEB应用研发架构一直在演进。从20年前的基于静态页面的WEB应用开始,历经asp、php、jsp等动态应用更迭,到当下流行的围绕RESTful API设计理念的前后端分离架构,尤其在API安全逐渐成为WEB安全领域研究热点的今天,传统基于路径字典的扫描技术在API应用信息搜集效果上捉襟见肘。

下面我们通过扫描内部某WEB应用展示dirsearch和kiterunner两款工具能力,进行新旧技术对比。

基于路径字典的dirsearch工具效果

dirsearch工具版本:最新版本(v0.4.1)

dirsearchy运行命令:python3 dirsearch.py -u http://127.0.0.1:7100 -e js

针对内部某WEB应用,dirsearch工具并未发现有效信息,具体运行结果如下图所示:

undefined

 

基于上下文内容发现的kiterunner工具效果

kiterunner工具版本:最新版本(v0.4.1)

kiterunner运行命令:kr scan http://127.0.0.1:7100 -w routes-large.kite

kiterunner工具发现该目标WEB应用存在大量API接口500报错信息。对于安全审计/渗透测试工程师而言,后端应用报错信息在信息搜集和渗透测试过程中具有重要价值,如下图所示:

undefined

通过kiterunner的replay功能,可以将kiterunner构造的请求信息进行重放并显示该工具构造的请求细节及返回信息,如下图所示:

undefined

参考链接

1. Contextual Content Discovery: You've forgotten about the API endpoints:https://blog.assetnote.io/2021/04/05/contextual-content-discovery

2. KiteRunner项目链接:https://github.com/assetnote/kiterunner

 

- END -

如有侵权,请联系删除

 

在线客服