主动防护视角下的API安全实践

admin 2024年12月17日14:17:55评论18 views字数 5679阅读18分55秒阅读模式

要:在数字化高速发展的金融行业,攻击面管理(ASM)已成为构建企业安全的核心策略之一。尽管ASM工具帮助企业从攻击者的视角识别和管理互联网资产,但作为金融服务互联互通基石的API接口,往往未在传统攻击面管理中得到足够重视和系统梳理。因此,基于主动安全防护策略,深入探讨如何有效发现、梳理和管理企业的API接口,以提升整体API安全性,确保企业资产与客户信息的安全,全面防范潜在的安全威胁,实现最佳安全实践。

字:API安全、主动防护、数字应链安全、数据安全、安全运营开发安全

一、引言

近年来,随着国家对网络和数据安全的重视和实战演练、红蓝对抗演练的深入推进,黑客的攻击手法不断升级演变。数字供应链攻击频繁发生,大量0day漏洞被广泛利用。通过深入分析这些漏洞的利用方式后发现,无论是第三方采购系统还是自研系统,攻击的根源大多集中在API的安全问题上。

二、API安全

1、API漏洞导致引发的信息泄漏

某机构数据泄露案例2020年,某平台因其终端APP的业务逻辑API被非法调用,导致约3.5亿用户数据泄露2021年,某家大型电商平台遭遇了API接口被攻击的事件,结果导致超过11.8亿用户的敏感信息,包括用户ID、昵称、手机号和用户评价等被泄露。

国外各行业信息泄露案例2018年,某国外邮政局修复了一个API安全漏洞,其中有6000万邮政用户受该安全漏洞影响2018年,国外某交友平台遭遇了多起严重的数据安全漏洞事件,导致大量用户数据被泄露。其中最严重的一次是在9月份,一个安全漏洞导致黑客可能控制了约5000万用户账号。接着在10月,攻击者窃取了约2900万用户的详细个人资料2021年,攻击者利用API漏洞获取了超过7亿某国外招聘平台用户的数据,并将这些数据在某网站上进行销售。

2、目前的防护手段

为应对这些安全挑战,在开发阶段,实施DevSecOps开发安全流程,结合SAST(静态应用安全测试)和IAST(交互式应用安全测试)等工具,对代码进行全面的安全性检测,提前发现并修复潜在漏洞。上线后,通过部署WAFWeb应用防火墙)和RASP(运行时应用自我保护)等安全设备,提供实时防护。此外,现有的API安全产品从API网关、流量镜像、日志分析等多个方面API进行全面梳理和监测,实时识别异常流量和潜在攻击行为,及时拦截安全风险。

尽管防护手段和API安全产品能够有效抵御大部分API攻击,每天仍有大量攻击得逞。因此,可以尝试从黑客的视角实施API攻击面管理,以进一步完善API安全实践。

3、API安全实践方法论

需要遵循以下五大核心原则,即全面性、层次性、适应性、动态性和预防性。

1、全面性原则要求从宏观角度考虑API接口涉及的所有主体,确保所有相关主体都得到识别和管理。

2、层次性原则要求对每个主体进行深入分析,深入到每个主体的多层目录,其中不同层目录可能关联不同的系统。

3、适应性原则要求适应各种不同的前端框架,确保无论在何种技术栈下,都能有效地进行接口管理。

4、动态性原则要求具备高度的灵活性,能够及时更新和调整各种规则策略。

5、预防性原则强调在安全问题发生前,通过持续监测及时发现潜在的安全漏洞,并迅速进行修复。

4、API攻击面管理架构

主动防护视角下的API安全实践

API安全实践架构方案

1、访问目标地址提取出自动加载的JS地址和静态地址

获取JS地址有如下三种方式——加载当前域JS、加载CDN JS、加载其它JS。

(1)加载的当前域JS:访问的URL地址为https://xxx.domain.com,该URL加载了当前域的JS(https://xxx.domain.com/js/yyy.js)。

主动防护视角下的API安全实践

(2)加载的CDN JS:访问的URL地址为https://xxx.domain.com,该URL加载了CDNJS(https://xxxcdn.com/js/yyy.js)。

主动防护视角下的API安全实践

(3)加载的其他域JS:访问的URL地址为https://xxx.domain.com,该URL加载了其它域的JS(https://xxx.domain.com:8080/js/yyy.js)。

主动防护视角下的API安全实践

(4)静态地址:访问的URL地址为https://xxx.domain.com,该URL地址加载了静态地址(https://xxx.domain.com/path/zzz.html)。提取静态地址的目的是在于全面获取目标网站的所有业务功能页面,确保不遗漏任何相关接口。

主动防护视角下的API安全实践

2、提取网页未自动加载的JS地址

请求上述步骤获取到的JS地址,通过正则匹配语法,提取出在网页源码里的JS地址。

主动防护视角下的API安全实践

请求上述步骤获取到的静态地址,通过正则匹配语法,提取出在网页源码里的JS地址。

3、webpack(JavaScript 应用程序的模块打包工具)提取JS地址

下图就是通过webpack打包JS地址的效果,实际上其中一个JS地址为/static/js/chunk-60893c6c.6867bfa5.js,因此需要通过正则语法精确提取出红框里的内容,并拼接成完整的JS地址。

主动防护视角下的API安全实践

4、Base URL发现

Base URL 可以理解为每个微服务的服务名称。在许多微服务架构的系统中,每个微服务都包含大量的 API 接口,因此寻找 API 接口的关键之一是确定正确的微服务名称。

微服务名称通常体现在 URL 地址的不同路径中,这个路径我称之为 Base URL。

寻找Base URL有两种方式——自动加载的URL地址Base URL、自动加载的API接口里提取出Base URL。

(1)自动加载的URL地址Base URL:访问的URL地址为https://xxx.domain.com,该URL地址自动加载了地址(https://xxx.domain.com/authControl),那么可以认为authControl就是Base URL。

主动防护视角下的API安全实践

(2)自动加载的API接口里提取出Base URL:访问的URL地址为https://xxx.domain.com,该URL地址自动加载了某API接口(https://xxx.domain.com/ophApi/checkCode/getCheckCode),在后续的API接口提取步骤中如果发现某API接口是/checkCode/getCheckCode,那么就会将ophApi当作Base URL。

主动防护视角下的API安全实践

5、API接口提取和Fuzz

(1)请求上述所有的JS 地址,并通过全面的正则表达式规则提取出 API 接口。例如,下图所示的 API 接口“/service/getFile?filePath=”。

主动防护视角下的API安全实践

(2)使用常见的API接口字典进行Fuzz测试,内置了一些常见的API接口字符串,以补充和完善API接口的提取过程。

主动防护视角下的API安全实践

6、Swagger各版本解析

支持解析各种版本的 Swagger规范,能够精确提取所有API接口、请求方式、参数名称和参数类型。

主动防护视角下的API安全实践
主动防护视角下的API安全实践

7、过滤危险接口

有些API接口可能涉及删除或取消等业务操作,因此需要对这些接口进行过滤。内置了以下关键字来过滤危险接口。

主动防护视角下的API安全实践
主动防护视角下的API安全实践

8、无参三种形式请求所有API接口

上述步骤已提取出所有API接口,并通过 GET、POST DATA 和 POST JSON 三种请求方式逐一请求这些接口,保存每个接口的响应包内容。

主动防护视角下的API安全实践

9、智能提取参数

从无参三种请求形式保存的API 接口响应包中提取参数,具体包括以下三种情况:

(1)提取响应包内容中的key 作为参数:

如果响应包包含字段名,这些字段名将被提取为参数。例如,提取出id 和 branchCollegeName。{"code":0,"msg":"success","data":[{"id":"xxxxxx","branchCollegeName":"xxxxxxxx"}]}

(2)提取key 为 param 或 parameter时所对应的 value 作为参数:例如,提取出 imageId

{"code":200,"data":{"param":"imageId"}}

(3)提取响应包内容报错时,错误信息中提示缺失的内容作为参数:例如,提取出types 或 accountId。

{"code":1,"msg":"Required List parameter 'types' is not present","data":null}

{"code":500,"msg":"accountId不能为空"}

主动防护视角下的API安全实践

如下是提取出的参数名列表

主动防护视角下的API安全实践

10、有参三种形式请求所有API接口

从上述步骤中整理出所有参数名称后,再次通过GETPOST DATAPOST JSON三种请求方式,携带这些参数逐一请求所有API接口,并保存每个接口的响应包内容。

主动防护视角下的API安全实践
主动防护视角下的API安全实践
主动防护视角下的API安全实践

11、Bypass测试API接口

对于返回状态码301、302、401、404 等或者响应包为空的 API 接口,内置了十多种绕过方法(Bypass 技术)进行再次测试。

主动防护视角下的API安全实践

数据整理

在整个方案架构设计中,设置了三种数据存储方式,分别为文本文件(txt)、电子表格(Excel)和数据库(MySQL)。

主动防护视角下的API安全实践
主动防护视角下的API安全实践
主动防护视角下的API安全实践

下图展示了数据库中存储的“自动加载的URL”表。其中,url字段表示被检测的URL地址,load_url字段表示自动加载的URL地址,load_url_type字段表示自动加载URL地址的类型。例如,js表示该URL地址是JS文件,而no_js则表示静态地址或非JS类型的API接口等。referer字段则说明自动加载的URL地址来源于哪个URL

主动防护视角下的API安全实践

下图展示了数据库中存储的“存活的JS和静态URL”表。其中,js_static_url字段表示JS地址或静态URLurl_type字段表示其类型。例如,js_url表示该URL地址为JS文件,static_url表示静态地址。status_code字段表示响应的状态码,res_length字段表示响应包内容的长度。

主动防护视角下的API安全实践

下图展示了数据库中存储的JS地址里提取出来的所有api接口”表。其中,api_path字段表示提取出来的API接口

主动防护视角下的API安全实践

下图展示了数据库中存储的Tree URLBaseURL”表。其中,tree_url字段表示被检测的URL地址加载了其它的URL,例如前后端分离的架构情况Base URL在上述解释过,可以理解为微服务的接口地址。

主动防护视角下的API安全实践

下图展示了数据库中存储的参数”表。其中,parameter字段表示提取出来的参数名。

主动防护视角下的API安全实践

下图展示了数据库中存储的“无参和有参三种请求方式结果”表。其中,api_url字段表示API接口地址,method字段表示请求方式,包括GETPOST DATAPOST JSON三种方式。parameter字段表示请求API接口时携带的参数。res_type字段表示响应包的返回格式,code字段表示响应状态码,length字段表示响应包内容的长度。

这张表需要特别关注,因为在后续的运营过程中,通过分析这些数据可以发现大量Web漏洞。举例说明:

寻找RCE漏洞:在api_urlparameter字段模糊匹配pingcmdcommand等关键词。

寻找URL跳转或者SSRF漏洞:模糊匹配urlip等关键词。

寻找任意文件上传或者读取漏洞:模糊匹配uploaddownloadreadfile等关键词。

寻找未授权访问漏洞:模糊匹配getconfig等关键词。

主动防护视角下的API安全实践

下图展示了数据库中存储的响应包差异化表。其中,content_hash字段表示响应包内容的哈希值,num字段表示该哈希值出现的次数,length字段表示对应响应包内容的长度,file_path字段表示响应包保存的文件路径。

添加响应包差异化功能的原因在于,当测试 API接口时未携带凭证,许多返回结果会是相同的提示缺少凭证的内容。通过此方法,可以快速过滤掉大量重复的响应包,从而降低运营成本。

主动防护视角下的API安全实践

下图展示了数据库中存储的敏感信息泄漏表,可以看到其中包含泄漏的敏感信息,如JDBC连接语句、账号密码、私钥、凭证,以及各种云平台的 AKSK等。

主动防护视角下的API安全实践
主动防护视角下的API安全实践

实战案例

未授权漏洞从响应包中匹配出敏感内容,经进一步测试,确认该接口存在API接口未授权导致用户敏感信息泄漏漏洞。

主动防护视角下的API安全实践
主动防护视角下的API安全实践

任意用户登录漏洞:从API_URL匹配出相关漏洞的关键词(loginsso等),经进一步测试,确认该接口存在任意用户登录漏洞。

主动防护视角下的API安全实践
主动防护视角下的API安全实践

RCE漏洞API_URL匹配出相关漏洞的关键词(ping等),经进一步测试,确认该接口存在远程命令执行漏洞。

主动防护视角下的API安全实践
主动防护视角下的API安全实践

文件上传漏洞API_URL匹配出相关漏洞的关键词(uploadfile等),经进一步测试,确认该接口存在任意文件上传漏洞。

主动防护视角下的API安全实践
主动防护视角下的API安全实践

Bypass:该 API 接口的初始响应包长度为空,触发了 Bypass 绕过功能。通过发起 Bypass 请求,发现某个绕过方法使响应包长度不再为空。经进一步测试,确认该接口存在 API 认证绕过漏洞。

主动防护视角下的API安全实践
主动防护视角下的API安全实践

总结与展望

API攻击面管理的优势

1. 化被动为主动:通过主动探测技术,全面发现并梳理API接口,并智能分析出多层目录结构。

2. 高度适配当前主流前端技术:深入扫描并解析应用中的JS文件,兼容Vue、Webpack等主流前端框架,借助强大的正则表达式精准提取API接口,全面发现影子API和僵尸API。

3. 模拟真实攻击手段:智能提取API参数,结合多种探测方式和bypass技术,对所有接口进行深入的安全性测试。

4. 全面数据记录与管理:详细记录API接口的各类数据,支持深度分析和二次利用,实现高效的梳理和管理。

5. 漏洞检测:基于响应包差异分析过滤无效数据,快速发现未授权访问,敏感信息泄漏及RCE等漏洞。

在当前数字化时代,API领域仍然是一个关键的挑战,这些接口的安全漏洞成为了数据泄露和网络攻击的重要入口。企业需要投入更多资源来加强API的安全设计、实施以及监控管理。

展望未来,API安全将更多地依赖于智能化和自动化的解决方案。人工智能和机器学习等新兴技术也将被更广泛地应用于API安全,实现更为主动的安全防护。

原文始发于微信公众号(0x727开源安全团队):主动防护视角下的API安全实践

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月17日14:17:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   主动防护视角下的API安全实践https://cn-sec.com/archives/3500038.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息