API安全Top 10 漏洞:crAPI漏洞靶场与解题思路
字数 1709 2025-08-11 22:57:12

crAPI漏洞靶场实战指南:OWASP API安全Top 10漏洞解析

1. 靶场简介与安装

crAPI是OWASP推出的API安全项目,用于演示常见的API安全漏洞。安装方法:

docker-compose -f docker-compose.yml --compatibility up -d

官方资源:

  • GitHub地址: https://github.com/OWASP/crAPI
  • 官方挑战提示: https://github.com/OWASP/crAPI/blob/develop/docs/challenges.md

2. API安全漏洞详解与实战

2.1 失效的对象级别授权(Broken Object Level Authorization)

挑战1:访问其他用户车辆信息

  1. 在社区论坛接口获取评论者信息(泄露用户ID)
  2. 车辆定位功能处修改vehicle_id参数访问其他车辆信息

挑战2:访问其他用户机械报告

  1. 提交维修报告后获取返回的report_id
  2. 修改report_id参数查看其他用户的维修报告

2.2 失效的用户身份验证(Broken User Authentication)

挑战3:重置其他用户密码

  1. 找到泄露用户email的接口
  2. 密码重置功能分析:
    • 重放攻击有限制
    • 将API版本从v3改为v2可绕过限制
  3. 爆破4位数OTP完成密码重置

2.3 过多的数据暴露(Excessive Data Exposure)

挑战4:发现敏感信息泄露接口

  • /community/api/v2/community/posts/recent泄露用户敏感信息

挑战5:发现视频内部属性泄露

  • /identity/api/v2/user/videos/30暴露视频内部属性

2.4 资源缺乏和速率限制(Lack of Resources & Rate Limiting)

挑战6:完成DoS攻击

  1. 找到"contact mechanic"功能
  2. 修改参数:
    • repeat_request_if_failed: true
    • number_of_repeats: [大数字]

2.5 失效的功能级别授权(Broken Function Level Authorization)

挑战7:删除其他用户视频

  1. 将PUT请求改为DELETE方法
  2. 尝试将接口中的user改为admin
  3. 修改videos后的ID参数为其他用户的视频ID

2.6 批量分配漏洞(Mass Assignment)

挑战8:免费获得商品

  1. 订单接口将GET改为PUT
  2. 修改参数:
    • status: "returned"(直接标记为已退货增加余额)

挑战9:增加1000元余额

  1. 修改订单数量为100,status为"delivered"
  2. 再改为"returned"状态

挑战10:更新视频内部属性

  • 修改视频名称时添加conversion_params参数

2.7 服务器端请求伪造(SSRF)

挑战11:使crAPI请求百度

  1. 联系机械工接口修改mechanic_api值为http://baidu.com
  2. 也可使用dnslog验证

2.8 NoSQL注入

挑战12:获取免费优惠券

  • 优惠券验证接口使用NoSQL注入:
    {"$ne":"xxxxxxxxxxxx"}($ne表示不等于)
  • 获取优惠券代码:TRAC075

2.9 SQL注入

挑战13:重复兑换优惠券

  • 最新版本源码存在SQL注入漏洞(Docker版本可能未包含)

2.10 未经身份验证的访问(Unauthenticated Access)

挑战14:发现无需认证的接口

  • 机械工报告接口无需认证即可访问

2.11 其他漏洞示例

商品添加漏洞

  1. 商品列表接口将GET改为POST
  2. 构造参数添加商品

支付漏洞

  1. 购买商品时修改数量为负数
  2. 导致余额增加

JWT密钥爆破

  1. 使用JWT_Tool爆破得到密钥:crapi
  2. 伪造token访问系统

3. 总结

crAPI靶场覆盖了OWASP API安全Top 10中的主要漏洞类型,包括:

  • 授权/认证缺陷
  • 数据过度暴露
  • 注入漏洞
  • 业务逻辑漏洞
  • 配置错误等

通过实战可以深入理解API安全风险,建议按照官方挑战文档逐步练习,掌握每种漏洞的原理和利用方法。

crAPI漏洞靶场实战指南:OWASP API安全Top 10漏洞解析 1. 靶场简介与安装 crAPI是OWASP推出的API安全项目,用于演示常见的API安全漏洞。安装方法: 官方资源: GitHub地址: https://github.com/OWASP/crAPI 官方挑战提示: https://github.com/OWASP/crAPI/blob/develop/docs/challenges.md 2. API安全漏洞详解与实战 2.1 失效的对象级别授权(Broken Object Level Authorization) 挑战1:访问其他用户车辆信息 在社区论坛接口获取评论者信息(泄露用户ID) 车辆定位功能处修改 vehicle_id 参数访问其他车辆信息 挑战2:访问其他用户机械报告 提交维修报告后获取返回的report_ id 修改report_ id参数查看其他用户的维修报告 2.2 失效的用户身份验证(Broken User Authentication) 挑战3:重置其他用户密码 找到泄露用户email的接口 密码重置功能分析: 重放攻击有限制 将API版本从v3改为v2可绕过限制 爆破4位数OTP完成密码重置 2.3 过多的数据暴露(Excessive Data Exposure) 挑战4:发现敏感信息泄露接口 /community/api/v2/community/posts/recent 泄露用户敏感信息 挑战5:发现视频内部属性泄露 /identity/api/v2/user/videos/30 暴露视频内部属性 2.4 资源缺乏和速率限制(Lack of Resources & Rate Limiting) 挑战6:完成DoS攻击 找到"contact mechanic"功能 修改参数: repeat_request_if_failed: true number_of_repeats: [大数字] 2.5 失效的功能级别授权(Broken Function Level Authorization) 挑战7:删除其他用户视频 将PUT请求改为DELETE方法 尝试将接口中的 user 改为 admin 修改videos后的ID参数为其他用户的视频ID 2.6 批量分配漏洞(Mass Assignment) 挑战8:免费获得商品 订单接口将GET改为PUT 修改参数: status: "returned" (直接标记为已退货增加余额) 挑战9:增加1000元余额 修改订单数量为100,status为"delivered" 再改为"returned"状态 挑战10:更新视频内部属性 修改视频名称时添加 conversion_params 参数 2.7 服务器端请求伪造(SSRF) 挑战11:使crAPI请求百度 联系机械工接口修改 mechanic_api 值为 http://baidu.com 也可使用dnslog验证 2.8 NoSQL注入 挑战12:获取免费优惠券 优惠券验证接口使用NoSQL注入: {"$ne":"xxxxxxxxxxxx"} ($ne表示不等于) 获取优惠券代码:TRAC075 2.9 SQL注入 挑战13:重复兑换优惠券 最新版本源码存在SQL注入漏洞(Docker版本可能未包含) 2.10 未经身份验证的访问(Unauthenticated Access) 挑战14:发现无需认证的接口 机械工报告接口无需认证即可访问 2.11 其他漏洞示例 商品添加漏洞 商品列表接口将GET改为POST 构造参数添加商品 支付漏洞 购买商品时修改数量为负数 导致余额增加 JWT密钥爆破 使用JWT_ Tool爆破得到密钥:crapi 伪造token访问系统 3. 总结 crAPI靶场覆盖了OWASP API安全Top 10中的主要漏洞类型,包括: 授权/认证缺陷 数据过度暴露 注入漏洞 业务逻辑漏洞 配置错误等 通过实战可以深入理解API安全风险,建议按照官方挑战文档逐步练习,掌握每种漏洞的原理和利用方法。