引言
随着API在现代应用架构中的核心地位日益凸显,确保其安全性成为开发与安全团队不可忽视的重任。本文旨在探讨API安全测试的关键环节,从API的发现到常见的安全漏洞测试,辅以经典案例分析,为读者提供一套实用的测试框架。
API的发现
API发现是安全测试的起点,以下是几种有效的方法:
二级域名与二级目录扫描:利用自动化工具遍历目标网站的子域名和目录结构,寻找潜在API端点
JavaScript入口分析:审查前端代码,特别是Ajax请求,以揭示API调用模式
业务逻辑抓包:通过网络嗅探工具捕捉API交互数据,理解数据流动和认证机制
利用API文档:Swagger、Postman Collection等文档是API详情的宝库
参数扫描:对已知API进行参数枚举,发现未公开的功能或漏洞
二、通用思路与策略
-
安全测试应涵盖多种HTTP方法和异常请求处理,包括但不限于:
HTTP METHOD滥用:尝试非预期的请求类型,如将GET替换为PUT。
OPTIONS方法绕过权限验证:利用OPTIONS预检请求的信息泄漏。
参数污染与Fuzzing:通过增加、重复或篡改参数测试系统的健壮性。
路径遍历与特殊字符注入:如/$user$/1/edit中利用特殊字符尝试访问未经授权资源。
三、常见的安全测试点
-
文件操作漏洞:上传、下载、删除功能的安全测试
接口如,/api/fileUpload.php
-
信息操作:CRUD操作的权限边界检查
如,信息增/删/改/查。
-
身份验证与授权:注册、登录、OAuth流程的逻辑缺陷
接口如,/api/register
/api/login
/api/reset_password
-
第三方接口安全:对外部服务的调用Api接口
比如一个demo,https://api.demo.com/me?code=$code,这里的code是授权给第三方APP获取的,APP可以通过code来生成access_token,仍能利用过时code的漏洞
-
业务逻辑漏洞:深入业务场景,发掘逻辑错误
如id越权,验证绕过等
四、经典案例分析
案例一:文件上传漏洞(某业务系统上传漏洞绕过执行命令执行)
通过不同的文件后缀和内容限制测试,可解析文件内容,执行命令执行
案例二:内容注入(某站二次注入)
JS泄露API+API爆破+参数爆破+二次注入
案例三:逻辑漏洞(某业务系统任意用户登录)
登录接口修改登录状态码,可实现任意用户登录
案例四:越权漏洞(某大型预约排号业务系统表单越权)
通过修改接口XXX_ID值可获取大量个人信息
案例五:接口泄露获取源代码
通过不同请求方法和参数变异,寻找未授权访问点,利用Jenkins中“People”部分列出的用户名,结合社会工程学,尝试对关联的GitLab、YAPI平台及Jenkins本身进行了登录尝试。最终,通过GitLab的成功登录,访问项目的所有源代码库
总结
API安全测试是一个动态演进的领域,要求测试人员持续学习最新的攻击技术和防御手段。本文通过详细阐述API发现策略、通用安全测试方法、常见漏洞测试点及真实案例分析,旨在为您提供一个全面的安全测试框架。未来,随着API技术的发展,如API网关、Serverless架构的兴起,安全测试也将面临更多挑战,持续的实践与创新将是保障API安全的关键。
原文始发于微信公众号(德斯克安全小课堂):深入探索Web API安全测试:策略、实践与案例分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论