API安全漏洞靶场crapi的基本介绍和解题思路-第二篇
字数 1520 2025-08-26 22:11:40
API安全漏洞靶场crapi实战指南(第二篇)
1. 批量分配漏洞(Mass Assignment)
漏洞原理
批量分配漏洞发生在应用程序将客户端提供的数据(如JSON)直接绑定到数据模型,而没有基于白名单进行适当的属性筛选时。攻击者可以通过修改请求中的对象属性来操纵不应被修改的数据。
挑战8:免费获取商品
漏洞利用:
- 通过API返回发现商品的不同状态
- 修改订单编号参数
- 将订单状态改为"运输中"即可免费获取商品
挑战9:增加账户余额
漏洞利用:
- 找到修改账户余额的API端点
- 将请求中的数量参数改为90
- 提交请求后账户余额将增加
挑战10:更新内部视频属性
漏洞利用:
- 参考第五题的API端点
- 修改请求中的视频属性参数
- 提交请求后内部视频属性将被更新
2. 服务器端请求伪造(SSRF)
漏洞原理
SSRF漏洞允许攻击者从易受攻击的应用程序的后端服务器发送精心设计的请求,通常用于访问防火墙后的内部系统或通过环回接口(127.0.0.1)访问服务。
挑战11:使crAPI调用外部网站
漏洞利用:
- 找到发送HTTP请求的API端点
- 修改请求数据包中的URL为"www.baidu.com"
- 提交请求后API将返回百度网站的HTTP响应
3. NoSQL注入漏洞
漏洞原理
NoSQL数据库不使用通用查询语言,查询语法是特定于产品的,这使得注入攻击不仅能在数据库中执行命令,还可能在应用程序本身中执行。
挑战12:获取免费优惠券
漏洞利用步骤:
- 获取提交优惠券的流量包
- 使用Burp Suite的暴力破解功能进行爆破攻击
- 初始尝试发现返回状态码均为500
- 检查发现请求数据包使用URL编码
- 在Burp的Payload Encoding选项中启用编码
- 再次爆破发现部分返回422状态码
- 检查返回包提示无效字符
- 删除原始流量包中的引号
- 重新尝试攻击成功
SQL注入挑战(注意)
发现:
- 确定存在注入的API端点
- 尝试各种注入方法均失败
- 检查版本发现v1.1.2(5月27日)未包含SQL注入相关更新
- 源码中的SQL注入内容是在8月2日提交的
- 因此最新版实际上不存在SQL注入漏洞
4. 未经身份验证的访问
挑战14:查找无认证端点
漏洞利用:
- 查找不执行用户身份验证检查的API端点
- 发现某些端点允许任意用户发送请求
- 修改任意参数均可成功提交
5. 秘密挑战:JWT漏洞
JWT基础知识
JWT(JSON Web Token)是一种基于JSON的开放标准,用于在网络应用环境间传递声明,常用于身份认证。
漏洞利用步骤
- 从请求中复制Authorization头部的JWT令牌
- 在jwt.io网站的解码器中分析令牌
- 使用JWT_Tool工具进行攻击测试
- 发现"crapi"是正确的密钥
- 在jwt.io中使用"crapi"作为密钥重新编码令牌
- 将新生成的Authorization头部替换到请求中
- 重放请求成功绕过认证
6. 环境搭建与参考
- GitHub项目地址: https://github.com/OWASP/crAPI
- 第一篇参考文章: https://xz.aliyun.com/t/11734
- 官方解题提示文档: https://github.com/OWASP/crAPI/blob/develop/docs/challenges.md
7. 总结
crapi靶场涵盖了OWASP API TOP 10中的多种漏洞类型,包括:
- 批量分配漏洞
- 服务器端请求伪造(SSRF)
- NoSQL注入
- 未经身份验证的访问
- JWT相关漏洞
通过实践这些挑战,可以深入理解API安全中的常见漏洞原理和利用方法,提升API安全防护能力。