1.概述
本文主要介绍api安全漏洞相关基础知识介绍和靶场crapi的环境搭建以及前七题的解题过程。
crapi是一个供车主注册和管理车辆的平台,是一个易受攻击的应用程序,crapi是一个用于学习和实践api安全性的api漏洞的集合。在这里可以遇到api安全的应用程序中的常见漏洞,
基本包括OWASP API TOP 10的漏洞。比如失效的对象级别授权漏洞,失效的用户身份验证漏洞,过多的数据暴露漏洞,速率限制漏洞,失效的功能级别授权,批量分配,SSRF,注入
以及未经身份验证的访问漏洞。
GitHub地址:https://github.com/OWASP/crAPI
成功访问其他用户车辆的详细信息
Challenge 2 - Access mechanic reports of other users
访问其他用户的机械报告
点击"Contact Mechanic"联系技工按钮,提交报告
抓包获取报告链接
修改ID值访问其他维修报告
成功访问其他用户的机械报告
2.2.2 失效的用户身份验证
挑战3是失效的用户身份验证漏洞
由于系统的身份验证机制的实现存在漏洞,使得攻击者能够破坏身份验证令牌或利用漏洞盗用其他用户的身份。损害API的整体安全性。攻击者可以访问用户在系统中的账户,
读取他们的个人数据,并以他们的身份执行敏感操作,例如转账和发送私人消息等。
Challenge 3 - Reset the password of a different user
重置其他用户的密码
首先找到另一个用户的电子邮箱地址:adam007@example.com
/community/api/v2/community/posts/recent
2.2.3 过多的数据暴露
挑战4和挑战5属于过多的数据暴露漏洞
利用过度暴露的数据十分容易,通常通过嗅探流量分析API的响应获取不应该返回给用户的多余敏感信息。过度的数据暴露通常导致敏感数据的泄露。
Challenge 4 - Find an API endpoint that leaks sensitive information of other users
找到泄露其他用户敏感信息的 API 端点
在页面Community页面可以看到其他用户
api端点 /community/api/v2/community/posts/recent
Challenge 5 - Find an API endpoint that leaks an internal property of a video
找到泄露视频内部属性的 API 端点
点击右上角头像可以进入个人信息页面,发现可以上传视频
发现api端点 /identity/api/v2/user/videos/29
2.2.4 速率限制
挑战6为速率限制漏洞
API通常不会对客户端/用户可以请求的资源的大小或数量施加任何限制。这不仅会影响API服务器的性能,导致拒绝服务,而且还会为暴力破解等身份验证缺陷敞开大门。
漏洞可能导致DoS,造成API无响应或不可用。
Challenge 6 - Perform a layer 7 DoS using ‘contact mechanic’ featureS
第 7 层是指互联网的 7 层 OSI 模型的顶层,也称为“应用程序层”。这是数据处理的顶层,位于用户与之交互的软件应用程序的表面之下或幕后。例如,用于加载网页的 HTTP 请求和
响应是第 7 层事件。在这一层面上发生的 DDoS 攻击称为第 7 层攻击或应用程序层攻击。
分布式拒绝服务(DDoS)攻击是通过大规模互联网流量淹没目标服务器或其周边基础设施,以破坏目标服务器、服务或网络正常流量的恶意行为。
DDoS 攻击利用多台受损计算机系统作为攻击流量来源以达到攻击效果。利用的机器可以包括计算机,也可以包括其他联网资源(如 IoT 设备)。
总之就是短时间通过大量的请求访问占用服务器的资源从而导致服务器不能对正常的流量做出响应。
找到api将repeat_request_if_failed改成ture,将number_of_repeats改成一个很大的数字,重放测试实现DDoS攻击。
2.2.5 失效的功能级别授权
挑战7为失效的功能级别授权漏洞
攻击者利用漏洞将合法的API调用发送给他们不应访问的API 端点。这些端点可能会暴露给匿名用户或常规的非特 权用户。由于API更加结构化,并且更易于预测访问API的方式,
因此更容易发现API中的这些缺陷(如,将HTTP方法从GET替换为PUT,或将URL中的 “user”字符串更改为“admin”)。
Challenge 7 - Delete a video of another user
删除另一个用户的视频
首先通过更改视频名字发现api端点
/identity/api/v2/user/videos/30