【API安全】crapi靶场实战

API 的本质是"契约":

只要请求格式对了,对方服务就给你预期结果,底层怎么跑无需关心。它从操作系统裸接口一路包到语言标准库,最后变成业务系统里一行简单的 import。日常见到最多的就是前端调后端、微服务互调、第三方能力开放、数据库和硬件上报,这些都在走 HTTP 或其他协议的出入口。

SOAP 用 XML 显得笨重,REST 用 JSON 简洁直观,GraphQL 允许一次拿全所需字段,gRPC 靠二进制速度非常快;SDK 则是把这些接口再封装成顺手即用的库和工具

API 安全的目标可以归结为一句话:确保数据在传输和使用过程中始终满足信息系统的三大核心要求------机密性、完整性和可用性,简称 CIA。

  • 机密性(Confidentiality):防止未授权访问,保护数据不被泄露。

  • 完整性(Integrity):防止数据被篡改,确保信息真实可靠。

  • 可用性(Availability):保障服务持续可用,防止因攻击或故障导致服务中断。

STRIDE六种威胁:欺骗、篡改、抵赖、信息泄露、拒绝服务、越权

欺骗攻击:攻击者通过暴力破解验证码或利用密码重置缺陷成功登录。根本原因是身份验证环节仅依赖弱验证码,缺少速率限制与多因素校验。应加强验证码强度、设置尝试上限并引入多因素认证。

篡改攻击:转账请求在传输过程中被中间人修改金额与收款账号。根本原因是报文未加密、未签名,可被随意更改。应使用HTTPS加密通道并对请求进行签名或令牌绑定,确保数据完整性。

抵赖攻击:用户完成交易后否认操作,拒绝还款。根本原因是系统未生成不可抵赖的操作证据。应记录带数字签名或可信时间戳的操作日志,确保事后可证明操作归属。

信息泄露攻击:密码明文传输或被枚举用户ID获取大量敏感数据。根本原因是接口未加密且未校验请求者身份。应启用HTTPS并对每次查询进行权限验证,防止未授权访问。

拒绝服务攻击:攻击者发送大量请求或自动化抢购,耗尽系统资源。根本原因是接口缺少速率限制与自动化识别。应实施QPS限制、验证码、令牌桶与风控策略,保障正常用户可用性。

越权攻击:通过修改ID参数即可访问他人数据或后台管理功能。根本原因是接口仅校验参数ID,未校验会话用户身份。应在服务端统一进行对象级权限校验,确保用户只能访问自身权限范围内的数据。

**实验条件--**Ubuntu 已安装 Docker 与 Compose 插件

API1-失效的对象级别授权(水平越权)

挑战1:访问其它用户车辆的详细信息

crapi靶场访问url

BP抓取reflesh location的包

在社区随便点一个其他用户,然后抓包放去repeater,send

拿到其他用户的id

在刚刚抓到的自己的location的包上修改成其他用户的ID,send,可以看到有显示经纬度,去查找对方车辆定位

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

Send Service Request这里开启拦截

在重放器send,复制这个地址

找一个GET请求的包修改这个路径,send后可以看到我的信息

把id号改其他用户的id号,就可以看到其他用户的信息

API2-失效的用户身份验证

挑战3:重置其它用户的密码

在忘记密码里填入刚刚拿取到的其他客户信息,发送OTP验证码,在set password这里抓包

可以看到是一个v3的接口模块,然后开始爆破

发送到inturder

这样没看到200状态码,把v3改成v2接口

还是爆破不成功,去重复一次重置密码操作,set password

多跑几次就能看到已经帮这个邮箱的用户重置密码

API3-过度的数据暴露

挑战4:挑战5:找到泄露视频内部属性的API接口

send

可以找到这个视频的敏感信息,是通过base64加密的

API4-资源缺乏和速率限制

挑战5:使用"contact mechanic"功能完成第7层DoS

先打开拦截,抓包

最后这两个值会造成拒绝服务攻击,修改

"repeat_request_if_failed":ture," #网络请求失败时改为ture

number_of_repeats":10000 #请求次数改为1w

筛选数字

可以看到确实有数字泄露

API5-失效的功能级授权

挑战6:删除另一个用户的视频

修改视频这里做抓包拦截

在第一行做修改,user改成admin,put请求改成delete,send,可以看到状态码200已经删除了我的视频

API6-批量分配

挑战7:免费获得一件物品

在购买界面点击buy,抓包发去repeater,这个是我的订单,send可以看到我的订单号是39

请求改成put协议,数量改成100,就能看到响应成功了,回到购买界面也是能看到已经0元购了

挑战8:将您的结余增加1000元或以上

目前余额40

抓取return的包

"status":"returned"

余额已经把刚刚买的100个退回来,导致余额增加

API7-SSRF

挑战9:让crAPI发送-个HTTP调用到"www.baidu.com"并返回HTTP响应

bp抓包抓 send service request的包

把网址改成http://www.baidu.com 能有回显证明存在ssrf漏洞

API8-注入

挑战10:想办法在不知道优惠券代码的情况下获得免费优惠券

在intruder爆破

编码要关掉

nosql的payload:

bash 复制代码
{"$ne":""}
{"$gt":""}
{"$regex":".*"}
{"$where":"1==1"}
{"$or":[{"$where":"1==1"}]}
{"$and":[{"$ne":1}]}
{"$exists":true}
{"$type":"string"}
{"$in":[""]}
{"$nin":[""]}
{"$regex":"^.*$"}
{"$where":"this.price>0"}
{"$where":"this.discount>0"}
{"$where":"this.coupon.match(/.*/)"}
{"$where":"sleep(100)"}

看状态码可以得出跑成功的payload,得出优惠卷的数字在在靶场上兑换成功

相关推荐
SelectDB技术团队4 小时前
Apache Doris 实时更新全解:从设计原理到最佳实践|Deep Dive
apache
新诺韦尔API21 小时前
手机空号检测接口对接全流程指南
大数据·网络·智能手机·api
SelectDB21 小时前
Apache Doris 实时更新全解:从设计原理到最佳实践|Deep Dive
数据库·apache
路由侠内网穿透.1 天前
本地部署问答社区 Apache Anwser 并实现外部访问
服务器·windows·网络协议·apache·远程工作
用户268001379191 天前
Cdiscount API 调用合规指南:频率限制、数据用途边界与封号风险规避
api
闲人编程1 天前
Flask蓝图系统:模块化应用架构设计
后端·python·flask·api·蓝图·应用工厂·codecapsul
heartbeat..1 天前
介绍java中常用于处理 Excel 文件的Apache POI
java·apache·excel·poi
梦想的旅途21 天前
企业微信RPA:无人值守群运营革命
企业微信·api