本文主要介绍api安全漏洞相关基础知识介绍和靶场crapi的环境搭建以及前七题的解题过程。
crapi是一个供车主注册和管理车辆的平台,是一个易受攻击的应用程序,crapi是一个用于学习和实践api安全性的api漏洞的集合。在这里可以遇到api安全的应用程序中的常见漏洞,基本包括OWASP API TOP 10的漏洞。比如失效的对象级别授权漏洞,失效的用户身份验证漏洞,过多的数据暴露漏洞,速率限制漏洞,失效的功能级别授权,批量分配,SSRF,注入以及未经身份验证的访问漏洞。
GitHub地址:https://github.com/OWASP/crAPI
靶场环境搭建文档:https://github.com/OWASP/crAPI/blob/develop/docs/setup.md
根据GitHub文档可知配置环境步骤为:
● curl -o docker-compose.yml https://raw.githubusercontent.com/OWASP/crAPI/develop/deploy/docker/docker-compose.yml
● docker-compose pull
● docker-compose -f docker-compose.yml --compatibility up -d
全都执行完毕后访问http://localhost:8888 即可:
环境配置成功即可进行测试
注:docker-compose最好使用最新版本,低版本会报错导致环境配置失败
解题提示文档:https://github.com/OWASP/crAPI/blob/develop/docs/challenges.md
挑战1和挑战2为失效的对象级别授权漏洞
攻击者可以在发送的请求中改变对象的ID来攻击存在“失效的对象级授权” 漏洞的API。这将导致敏感数据的未授权访问。该问题在基于API的应用中非常普遍,因为服务器通常不会完整地跟踪用户的状态,而是依赖用户请求参数中的对象ID来决定访问哪些目标对象。
Challenge 1 - Access details of another user’s vehicle
访问其他用户车辆的详细信息
首先在crapi界面找到接受车辆guid的api端点,
/identity/api/v2/vehicle/125e190f-94de-46ef-8d7d-b08696260183/location
找到泄露其他用户guid的api端点,
/community/api/v2/community/posts/recent
获取到了其他用户的guid值后就可以通过/identity/api/v2/vehicle/125e190f-94de-46ef-8d7d-b08696260183/location来获取用户的个人信息。
替换后进行重放测试:
成功访问其他用户车辆的详细信息
Challenge 2 - Access mechanic reports of other users
访问其他用户的机械报告
点击"Contact Mechanic"联系技工按钮,提交报告
抓包获取报告链接
修改ID值访问其他维修报告
成功访问其他用户的机械报告
挑战3是失效的用户身份验证漏洞
由于系统的身份验证机制的实现存在漏洞,使得攻击者能够破坏身份验证令牌或利用漏洞盗用其他用户的身份。损害API的整体安全性。攻击者可以访问用户在系统中的账户,读取他们的个人数据,并以他们的身份执行敏感操作,例如转账和发送私人消息等。
Challenge 3 - Reset the password of a different user
重置其他用户的密码
首先找到另一个用户的电子邮箱地址:[email protected]
/community/api/v2/community/posts/recent
在首页点击忘记密码
点击后会针对登陆邮箱发送重置密码的OTP
OTP是指一次性密码,是指电脑系统或其他数字设备上只能使用一次的密码,有效期为只有一次登录会话或交易。
通过抓包发现api /identity/api/auth/v3/check-otp 是检查otp的api端点
利用burp进行暴力破解,正确输入OTP后输入密码重置成功
挑战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
挑战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攻击。
挑战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
利用burp的intruder模块来判断是否可以使用其他方法进行利用
添加好方法后进行暴力破解
发现delete方法可以使用,下面只需要修改后面的链接就可以了
看题目发现是找到一个admin端点进行删除视频
那将原本的user换成admin试一下
视频删除成功!