伤心客 发表于 7 天前

API安全学习 - crAPI毛病靶场与API测试思路

crAPI毛病靶场与解题思路



[*]1. 前置基础
[*] * 1.1 认识crAPI

   
[*]1.2 环境搭建   
[*]1.3 API的分类与鉴别

[*]2. 毛病验证
[*] * 2.1 失效的对象级别授权

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

   
[*]挑衅2:访问其它用户的机械报告   
   
[*]2.2 失效的用户身份验证   
[*] * 挑战3:重置其它用户的密码
   
[*]2.3 过多的数据暴露   
[*] * 挑战4:找到泄露其它用户敏感信息的API接口

   
[*]挑衅5:找到泄露视频内下属性的API接口   
   
[*]2.4 资源缺乏和速率限制   
[*] * 挑战6:使用 “contact mechanic” 功能完成第7层DoS
   
[*]2.5 失效的功能级别授权   
[*] * 挑战7:删除另一个用户的视频
   
[*]2.6 批量分配 / 大量赋值 / 自动绑定毛病   
[*] * 挑战8:免费获得一件物品

   
[*]挑衅9:将您的结余增长1000元或以上   
[*]挑衅10:更新内部视频属性   
   
[*]2.7 SSRF   
[*] * 挑战11:让crAPI发送一个HTTP调用到“www.baidu.com”并返回HTTP响应
   
[*]2.8 NoSQl Injection   
[*] * 挑战12:想办法在不知道优惠券代码的情况下获得免费优惠券


[*]3. 总结
1. 前置基础

API是应用程序编程接口(Application Programming
Interface)的缩写,是软件体系中不同组件之间举行通讯和交互的接口。它是一组定义、规范和协议,用于编写应用程序的软件接口,答应不同应用程序之间举行相互通讯和交互。API通常由一系列的函数、协议、工具和标准组成,它们提供了一组约定的方法和规则,答应应用程序之间相互通讯、共享数据和服务。API常用于访问网络服务、操作操作体系、访问数据库等,因此它是现代软件开辟中非常告急和常用的技能之一。
常见的API面对的安全问题包罗:
API面临的安全风险包括:
1.认证和授权问题:API需要进行有效的身份验证和授权以防止未经授权的访问和使用。

2.SQL注入攻击:攻击者利用API中的漏洞发送恶意代码来获取敏感数据。

3.信息泄露:API可能会泄露敏感数据,如用户个人信息或业务机密信息。

4.拒绝服务攻击:攻击者可能会发送大量请求来占用API的资源,导致服务不可用。

5.恶意软件:恶意软件可以使用API来传输和分发恶意代码,包括病毒、间谍软件和木马。

6.未加密的数据传输:未加密的数据传输可能会导致信息泄露和数据被窃取。

7.CSRF攻击:攻击者可以通过跨站请求伪造攻击来利用API执行未经授权的操作。

8.DoS攻击:API可能会受到分布式拒绝服务攻击,导致服务不可用。

9.JSON注入:攻击者可以通过篡改JSON消息来进行恶意操作。

10.代码注入:攻击者可以通过篡改API的代码来执行恶意代码。
1.1 熟悉crAPI

crAPI是一个针对API安全的学习和研究平台,在该工具的帮助下,广大研究人员可以轻松学习和了解排名前十的关键API安全风险。因此,crAPI在设计上故意遗留了大量安全毛病,我们可以通过
crAPI学习和研究API安全。
crAPI采用了现代编程架构,该工具基于微服务架构构建,只需建立一个账号,即可开启我们的API安全研究之旅。
crAPI的挑衅是让您尽可能多地发现和利用这些毛病,破解crAPI有两种方法-
第一种是将其视为一个完备的黑盒测试,在那里你不知道方向,只是尝试从头开始明白应用程序并举行破解。第二种方法是先了解crAPI提供的毛病,然后自己动手尝试去利用它们。
固然,本着学习的态度,我们在本文中将参考其他几篇文章对API所面对的安全风险举行一个体系的学习,以供后续的安全学习。
1.2 环境搭建

起首,附上 crAPI 项目标 Giithub 地址:
https://github.com/OWASP/crAPI
还有 OWASP API Security Project 可以参考:
(https://owasp.org/www-project-
api-security/)
安装靶场的话,可以使用多种方式,本文直接使用 docker 搭建(必要先安装 docker 以及 docker-compose) ,docker
启动命令如下:
#1.curl命令直接获取docker编排文件,也可以直接下载git源码,进入对应路径下进行操作
curl -o docker-compose.yml https://raw.githubusercontent.com/OWASP/crAPI/main/deploy/docker/docker-compose.yml

#2.拉取镜像文件
docker-compose pull

#3.运行对应的环境
docker-compose -f docker-compose.yml --compatibility up -d
排错中用到的命令:
#停止docker中所有运行容器
docker stop $(docker ps -q)

#关闭所有已经停止了的容器
docker rm $(docker ps -aq)

#删除docker的所有数据卷
docker volume rm $(docker volume ls -q)

#删除所有镜像
docker image rm $(docker image ls -a -q)
由于最终的部署环境为在kali
linux上运行docker,在本地举行测试。则必要对原有的compose文件举行修改。可以使用vim中的全局变量修改功能:
#1.编辑对应文件
┌──(rootkali)-[~/APILAB/crAPI]
└─# vim docker-compose.yml

#2.全局替换 --- 输入":"进入末行模式,并输入命令进行替换
:1,250 s/127.0.0.1/192.168.2.159(本地测试机可以访问到的IP)/g
1.3 API的分类与鉴别

API可以按照不同的分类方式举行划分,以下是几种常见的分类方式:
1.按照功能分类:


[*]Web API:主要用于通过网络交互的应用程序,如HTTP API、RESTful API等。
[*]数据库 API:用于访问数据库体系的API,如JDBC、ODBC等。
[*]图形界面 API:用于创建图形界面的API,如Java Swing、Windows API等。
2.按照接口类型分类:


[*]开放 API:对外公开的接口,可以通过网络访问。
[*]内部 API:仅在企业内部使用的接口,如微服务API。
3.按照数据格式分类:


[*]JSON API:使用JSON格式的API。
[*]XML API:使用XML格式的API。
4.按照托管方式分类:


[*]内部 API:在本地服务器上托管的API。
[*]云 API:在云平台上托管的API,如AWS API Gateway、Google Cloud Endpoints等。
以上分类方式只是一种常见的分类方式,详细根据不同的需求和应用场景可以举行机动的分类和组合。
RESTful API (Representational State Transfer API) 是一种 Web API 设计风格和体系布局,它基于
HTTP 协议,建立在客户端和服务器之间的无状态毗连上。RESTful API 的核生理念是将全部的 Web 资源看作是一个唯一的 URI (Uniform

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: API安全学习 - crAPI毛病靶场与API测试思路