网安加·百家讲坛 | API安全实战之未授权和越权访问实战

网安加·百家讲坛|API安全实战之未授权和越权访问实战

作者简介:王文君,OWASP中国上海区域负责人,上海观安网络安全产品线总经理,曾在HP担任过应用安全架构师,出版过《Web应用安全威胁与防治》和《Android应用程序安全》,拥有CISSP、CSSLP、CDPSE认证。

API全称是应用程序接口(Application Programming Interface),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。它的主要目的是提供应用程序与开发人员以访问一组功能的能力,而又无需访问源码,或理解内部工作机制的细节,降低耦合度,提高系统的维护性和扩展性。由于近年来软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部分,因此编程接口的设计十分重要。

据数世咨询2022年《API安全研究报告》显示,API逐渐形成了自身的技术和经济生态,在全球范围内被采纳,是公认的数字时代的价值链接基础。API已经成为网络应用流量最重要的出入口,通过攻击API来破坏信息系统和窃取数据,将成为数字时代黑产活动最集中的方向之一。2021年Gartner《API安全性:保护您的API免受攻击和数据泄露》也表示,到2022年,API将成为网络攻击者利用最频繁的载体,而通过攻击API可以非授权使用企业的应用数据。

随着针对API的攻击日趋严重,OWASP组织推出了OWASP API Security TOP 10项目,对目前API最受关注的十大风险点进行了总结。主要目的是培训那些参与API开发和维护的人员,例如开发人员、设计人员、架构师、管理人员或组织,帮助大家深刻认识API安全问题,以理解和减轻与API相关的独特漏洞和安全风险。

OWASP API Security TOP 10

1.失效的对象级授权

2.失效的用户认证

3.过多的数据暴露

4.缺失资源和速率限制

5.失效的功能级授权

6.批量分配

7.安全配置错误

8.注入

9.资产管理不当

10.日志和监控不足

本次以“失效的用户认证”和“失效的功能级授权”为例,进行详细的讲解。

API安全风险Top2:失效的用户认证

身份验证机制的实现往往不正确,使得攻击者能够破坏身份验证令牌或利用漏洞临时或永久地盗用其他用户的身份,破坏了系统识别客户端/用户的能力,损害API的整体安全性。

1.用例

1)是不是所有的API都需要认证访问

2)弱口令允许被*破爆**

3)URL里是否含了敏感信息

4)用户验证出错信息引起用户收割

5)重置密码中的SMS*力暴**破解获取/api/system/verification-codes/{smsToken}

2.危害

攻击者可以访问本无权限访问的数据,造成数据泄露。

3.应对措施

(1)测试视角

1)URL中是否含有登录信息

2)API端点信息字典*破爆**,查看返回值

3)Zombie API/Shadow API

(2)防守视角

1)行为分析(请求频率、认证失败、IP等),弱密码,返回内容含密码(URL,response,cookie),账号公用等

2)特征分析,每个API有无token,原则上讲API访问都有授权

3)API资产梳理

(3)开发视角

1)密码策略

2)认证信息不要GET传递

3)API keys验证 + 授信IP

数据安全建设风险挑战分析

攻击者利用漏洞将合法的API调用发送给他们不应访问的API ,可能会暴露给匿名用户或常规的非特权用户。由于API更加结构化,并且更易于预测访问API的方式,因此更容易发现API中的这些缺陷(如,将HTTP方法从GET替换为PUT,或将用非特权用户访问一个本来只能管理员才能访问的URL)。

1.用例

1)在界面上限制某些功能,但API还是可以调用(删除按钮disable,但可以执行删除功能API指令)

2)POST/api/user/search工作,尝试PUT、DELETE /api/user/search动作是否工作?

3)管理员可以api/user/export-all,那一般用户猜测这个URL也执行是否成功?

2.危害

攻击者可以访问不被授权的资源,导出所有材料,造成信息泄露。

3.应对措施

(1)测试视角

1)替换HTTP method

2)寻找API入口(如swagger.json等)

3)API endpoint*破爆**(参考链接https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content/api)

4)管理员登录然后其它低权限用户访问

(2)防守视角

1)关键功能行为分析(DELETE、OPTIONS等),审计关键字

2)API行为分析(访问频率、返回值、时间段等)

(3)开发视角

1)基于角色的权限分配,每个功能在服务端做权限判别

2)和用户或敏感信息相关的功能,反思这些API是不是任何人都可以调用

越权测试的方法

1.常规的测试方法

对于OWASP API Security Top 10提到了几次授权方面的问题:Break authentication、 BFLA等,一般来说,对这些功能进行测试,需要较多的手工过程:

1)需要准备两个用户(高权限用户+低权限用户),分别进行所有功能的测试,然后比较返回结果,从而来判断是否有越权问题;

2)对所有的API去掉认证信息(token等),看请求的响应值。

2.利用工具测试越权

本次使用的工具是Autoriz,可通过以下两种方式进行安装:

1)在Git*载下**,链接:https://github.com/PortSwigger/autorize;

2)直接在Bapp store进行安装。

  • 原理简介

提前明确认证的位置,嗅探proxy里收到的请求,然后自动替换低权限用户凭证(需提前获得)以及去掉认证的请求,来自动发送这两个请求,然后比较返回结果,以可视化的形式展示,从而容易找到越权行为。

实战1:常规应用API未授权访问和越权自动检测

1、API靶场

DVWS - https://github.com/snoopysecurity/dvws-node

2、预先准备的两个用户

  • 高权限用户:admin/letmein
  • 低权限用户:wwj/123456

3、试验方法

  • 界面操作
  • Postman/Swagger文件

4、实操视频

视频加载中...

实战2:Spring Boot Actuator未授权访问检测和利用

1、Spring Boot Actuator背景介绍

  • Spring Boot Actuator模块提供了生产级别的功能,主要分三类:应用配置类(如系统信息、环境变量等)、度量指标类(如内存状态、HTTP请求统计等)、操作控制类(如关闭应用);
  • Spring Boot Actuator可以通过HTTP 和 JMX 访问,也可以和一些外部的应用监控系统整合(如Prometheus);
  • 默认开放端点:/actuator/info, /actuator/health,可以配置其它端点。

2、试验方法

对构建的Spring Boot Actuator进行访问,针对未授权的API如何进行利用?

3、实操视频

视频加载中...

- End -