写点什么

RESTful API 类渗透测试要点

作者:阿泽🧸
  • 2023-04-15
    北京
  • 本文字数:914 字

    阅读完需:约 3 分钟

RESTful API类渗透测试要点

REST 是一种软件体系架构,而 RESTful API 则是其使用 REST 风格进行 HTTP 接口数据交互的一种接口表现形式,常用的接口数据格式有 JSON、XML、text 等。


相对于传统 Web 网页的 URL 携带参数的传递方式,RESTful API 这种接口形式的改变导致其渗透测试过程有着不同的特性,其主要特性如下。

  • RESTful API 的接口数据交互格式大多数为 JSON 格式,由多个参数或键值对组成的 JSON 结构作为参数与服务器端进行交互,这种请求参数的格式,对于渗透测试人员来说,Fuzz 测试时很容易混淆。

  • 大多数 API 都有认证机制,比如 OAuth 2.0、APPID/APPKEY,尤其是客户自定义认证方式时,渗透测试工作的开展更加困难,需要先理清其业务逻辑才能更好地开展。

  • RESTful API 与传统的 Web 网页不同,API 通常是纯后端的应用,这种不可见或无持续连接状态的特性,导致渗透测试人员容易忽略某些接口或无法发现接口。

  • RESTful API 协议的 HTTP 状态码与普通 HTTP 协议存在差异,对安全辅助工具的自动化判断产生影响。

  • RESTful API 接口描述、参数格式与传统 Web 网页差异性较大,没有很好的自动化工具支撑,定制化工作多,对渗透测试人员的能力要求较高。

  • 在目前前端技术栈比较丰富的情况下,很多接口交互的发起使用 Ajax 请求,比如 Vue、Angular、React,这对安全扫描工具自动化地捕获 API 流量是很大的挑战。


正是因为 RESTful API 渗透测试的这些特性,在渗透工作开展时,抓住要点,快速地发现问题显得更加重要。以下是渗透测试时的关键要点。


  • 尽可能的先获取 API 规范描述文件,如在线接口文档、api-docs.json 文件、Swagger 文件,RAML 文件,API-Blueprint 文件等,通过文件来获取 API 端点和详细调用方式及参数定义。

  • 在无界面的情况下,除了 API 规范描述文件,通过 Proxy 代理方式,对流量进行分析也是获取 API 详情的一种手段。

  • 关注可攻击的点,比如请求参数、请求方法 GET/POST/PUT/DELETE、是否存在授权绕过(令牌是否正确验证,是否令牌有时效性)、是否存在注入点(MySQL、NoSQL)、是否存在批量分配的问题等。

  • 关注通用的安全问题,比如是否存在 Key 泄露、是否存在暴力破解的可能、同一 API 多个版本不一致问题、XSS、CSRF 等。

  • 面向不同层次会话的攻击,比如传输层是否使用 SSL 或使用可信的数字证书、应用层会话是否设置超时或采取限流熔断机制等。

发布于: 刚刚阅读数: 4
用户头像

阿泽🧸

关注

还未添加个人签名 2020-11-12 加入

还未添加个人简介

评论

发布
暂无评论
RESTful API类渗透测试要点_RESTful API_阿泽🧸_InfoQ写作社区