一,什么是API
API指的是应用程序编程接口(Application Programming Interface),是一组定义了软件组件如何相互交互的规范。通过API,不同的软件可以相互通信和交换数据,实现不同软件之间的集成和互操作。
API可以简化软件开发过程,提高开发效率,同时也提供了一种标准化的方式来访问和使用不同软件系统的功能。
API通常包括一系列的函数、方法、类或协议,开发者可以根据API的定义来编写代码,并利用API提供的功能来实现特定的功能或解决特定的问题。
实现的流程:
- 根据硬件的架构来提供操作系统的接口;
- 而高级语言(如Java)的库会调用操作系统的接口;
- 而我们只需要调用高级语言的API即可;
API的使用场景:
调用系统功能;
前端调用后端;
系统内部的相互调用;
企业间相互调用;
常见的API的类型:
- SOAP/WebService(HTTP+XML)
- GraphQL API
- RESTful API(HTTP+JSON)(目前使用最为广泛)
二,概述
1,目标
网络安全,信息(数据)安全,应用安全;
信息安全的三要素:
- 机密性
- 完整性
- 可靠性
2,威胁建模工具
常见的API风险:
1,欺骗;
攻击者的真实身份被伪装,伪装成受害者;
未进行身份验证
2,篡改;
将不希望被修改的数据,信息被修改;
3,抵赖;
不承认自己的行为;
未存在日志,审计的功能
4,信息泄露;
敏感信息被暴露;
未进行权限的控制
5,拒绝服务
妨碍正常的用户去访问;
未进行速率,频率的限制
6,越权
3,API的威胁
OWASP API TOP 10
对于上面的名词进行区分;
三,实战
挑战一:访问其他用户车辆的详细信息;
首先通过burp抓包;
对原始的包进行分析;发现其调用了API接口;
通过点击其他用户;抓到响应包;
将其进行替换;
然后就可以获得其他用户的详细信息;
挑战二:访问其他用户的机械报告;
首先上传并且查看自身的机械报告的包;
存在一个跳转的链接;
猜想可能为GET传值,进行重放;
可以看到自己的机械信息;
发现通过GET传值时存在report_id=...,可以对这个值进行遍历;
通过遍历report_id的值,就可以得到其他用户的就写报告;
挑战三:重置其他用户的密码;
通过前面挑战二得到的数据(邮箱)进行重置;
进行抓包尝试;
发现对次数有限制;
改为V2之后,重复以上的步骤;
正如猜测的一样;爆破成功;
V2应该为V3的以前版本,所以不具备爆破限制的能力;
接下来尝试登录;
登录成功;
挑战四:找到泄露其他用户敏感数据的API接口;
首先进行抓包;
尝试抓取回包;
这个API接口返回了用户敏感数据;
挑战五:找到泄露视频内部属性的API接口;
进行抓包;
对抓到的包进行重放;
可以对id进行遍历,即可获得上传视频的内部属性;
挑战六:使用contack mechanic完成应用层的dos;
首先在这个页面进行抓包;
发现漏洞点所在;
失败之后是否重发:否;
次数:1;
可以在这里进行修改;造成Dos攻击;
挑战七:删除其他用户上传的视频;
在修改界面进行抓包;
在请求包中存在:DELETE /identity/api/v2/user/videos/30 HTTP/1.1
将user改为admin是否可以存在管理员权限;