crAPI 是一个OWASP提供的故意设计存在漏洞的API项目,通过这个项目,可以安全地运行并训练自己识别和利用API中的安全漏洞。
项目概述
crAPI 模拟了一个汽车维修服务的B2C应用,采用微服务架构构建。用户可以通过Web界面进行注册、管理车辆、联系技师、购买配件以及在社区中互动。
主要功能
-
用户认证系统:包含注册、登录、密码重置等功能,故意设计存在认证漏洞 -
车辆管理:添加车辆、查看车辆位置、联系技师维修 -
在线商店:购买汽车配件,使用优惠券,管理订单 -
社区功能:发布帖子、评论互动 -
漏洞挑战:内置15+个安全挑战,涵盖OWASP API安全十大风险
技术架构
crAPI 采用微服务架构,包含以下组件:
|
|
|
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
结构图如下:
安装指南
系统要求
-
Docker 和 docker-compose (版本1.27.0或更高) -
推荐配置:t2.micro机器(1 CPU, 1GB内存)
快速启动
使用预构建镜像:
# Linux
curl -o /tmp/crapi.zip https://github.com/OWASP/crAPI/archive/refs/heads/main.zip
unzip /tmp/crapi.zip
cd crAPI-main/deploy/docker
docker compose pull
docker compose -f docker-compose.yml --compatibility up -d
# Windows
curl.exe -o crapi.zip https://github.com/OWASP/crAPI/archive/refs/heads/main.zip
tar -xf .crapi.zip
cd crAPI-maindeploydocker
docker compose pull
docker compose -f docker-compose.yml --compatibility up -d
配置覆盖
可以通过修改.env
文件或直接在命令中设置环境变量来覆盖默认配置:
LISTEN_IP="0.0.0.0" docker compose -f docker-compose.yml --compatibility up -d
使用说明
-
访问Web界面: http://localhost:8888
-
注册新账户 -
探索各项功能并尝试发现漏洞
示例API调用
获取用户车辆信息:
curl -X GET "http://localhost:8888/identity/api/v2/user/dashboard"
-H "Authorization: Bearer YOUR_JWT_TOKEN"
漏洞挑战
crAPI 内置了多个安全挑战,涵盖以下漏洞类型:
-
BOLA (Broken Object Level Authorization)
-
访问其他用户的车辆详情 -
查看其他用户的维修报告 -
认证漏洞
-
重置其他用户密码 -
JWT令牌伪造 -
数据过度暴露
-
查找泄露敏感信息的API端点 -
发现视频的内部属性 -
速率限制
-
通过"联系技师"功能实施DoS攻击 -
BFLA (Broken Function Level Authorization)
-
删除其他用户的视频
完整挑战列表请参阅挑战文档(challenges.md)
原文始发于微信公众号(网络安全技术点滴分享):crAPI - 存在漏洞的API项目
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论