API测试思路及crAPI漏洞靶场复现

admin 2024年12月2日22:35:42评论8 views字数 2820阅读9分24秒阅读模式

 

环境搭建

地址:https://github.com/OWASP/crAPI

curl -o docker-compose.yml https://raw.githubusercontent.com/OWASP/crAPI/main/deploy/docker/docker-compose.yml

docker-compose pull

docker-compose -f docker-compose.yml --compatibility up -d

全局配置IP地址

1、在 vim 中,按 Esc 键确保你在命令模式。
2、进行全局替换:将全局127.0.0.1替换成本地的IP地址 
:%s/127.0.0.1/192.168.111.130/g 

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等

如何发现API请求

1、打开浏览器的开发者工具,通常可以通过快捷键 F12 打开。
2、切换到Network(网络)标签页,重新加载页面。
3、查看请求列表,其中可能包含网页内的API请求。这些请求通常是XHR(XMLHttpRequest)类型的请求。
4、点击请求列表中的请求,查看请求详情,可以查看请求的URL、请求方式、请求头信息和请求体信息。
5、根据请求的URL和请求方式可以确定该请求是API请求,还是页面自身的请求。
6、通过这些信息,可以分析API请求的参数和数据,进而实现API的调用和数据提取。

关于RESTful API

RESTful API (Representational State Transfer API) 是一种 Web API 设计风格和体系结构,它基于 HTTP 协议,建立在客户端和服务器之间的无状态连接上。RESTful API 将所有的 Web 资源看作是一个唯一的 URI ,并通过 HTTP 方法(GET、POST、PUT、PATCH、DELETE)来对这些资源进行操作。RESTful API 可以使用不同的数据格式(如 JSON、XML)进行通信。

漏洞复现

1、失效的对象级授权

对象级授权是一种访问控制机制,依赖用户请求参数中的对象ID来决定访问哪些目标对象,以验证用户只能访问他们应该有权访问的对象

API测试思路及crAPI漏洞靶场复现

找到泄露用户车辆ID的接口

API测试思路及crAPI漏洞靶场复现

通过页面查找接受车辆ID 的API,替换URL中的车辆ID,成功访问到其他用户的信息

API测试思路及crAPI漏洞靶场复现

2、访问其它用户的机械报告

发送维修报告请求

API测试思路及crAPI漏洞靶场复现

抓包分析,发现请求之后,会返回一个报告访问的地址

API测试思路及crAPI漏洞靶场复现

修改 report_id 可以查看其它用户提交的维修报告

API测试思路及crAPI漏洞靶场复现

3、失效的用户身份验证

重置其他用户的密码

首先得有email,在登录处重置密码

API测试思路及crAPI漏洞靶场复现

通过抓包发现api  /identity/api/auth/v3/check-otp  是检查otp的api端点。且发现这个POST包并没有携带用于用户认证的Token

OTP是指一次性密码,是指电脑系统或其他数字设备上只能使用一次的密码,有效期为只有一次登录会话或交易。

API测试思路及crAPI漏洞靶场复现

burp暴力破解,会报错

API测试思路及crAPI漏洞靶场复现

在RESTful API在设计的时候有一个特点,它会在URL中嵌入版本号,用来保持兼容性和方便调试等。这里请求端点URL中的“v3”就表示第三个版本,可以试试换成V2版本

API测试思路及crAPI漏洞靶场复现

4、敏感信息泄露接口

访问/community/api/v2/community/posts/recent

API测试思路及crAPI漏洞靶场复现

5、失效的功能级别授权

攻击者利用漏洞将合法的API调用发送给他们不应访问的API 端点。这些端点可能会暴露给匿名用户或常规的非特  权用户。由于API更加结构化,并且更易于预测访问API的方式,因此更容易发现API中的这些缺陷(如,将HTTP方法从GET替换为PUT,或将URL中的 “user”字符串更改为“admin”)

1、更改视频名字发现API端点

/identity/api/v2/user/videos/31

2、利用burp的intruder模块来判断是否可以使用其他方法

API测试思路及crAPI漏洞靶场复现

3、删除后会报一个403的错误,推测此处的user为权限控制路径,我们将user修改为admin进行尝试

API测试思路及crAPI漏洞靶场复现

4、/identity/api/v2/user/videos/31将user替换成admin

API测试思路及crAPI漏洞靶场复现

5、接口校验测试

没有对输入的数据进行校验或者校验不完善,通常是造成漏洞的直接原因,例如一些通用的SQL注入,XSS,CSRF,甚至RCE等。这里crAPI提供了一个NoSQL注入的场景,NoSQL注入攻击也利用应用程序对用户输入不进行充分验证和过滤的漏洞,直接向数据库系统发送恶意的查询语句。

1、找到验证优惠券的接口,进行nosql注入的语句尝试

API测试思路及crAPI漏洞靶场复现

修改内容:“$ne"是MongoDB的查询操作符之一,其含义为"不等于”,用于查询某个属性不等于指定值的文档。

API测试思路及crAPI漏洞靶场复现

得到优惠券TRAC075

在获得这个优惠券以后,这里的coupon_code也可注入。

6、批量分配

将客户端提供的数据(例如 JSON)绑定到数据模型,而无需基于白名单进行适当的属性筛选,通常会导致批量分配。无论是猜测对象属性、探索其他 API 端点、阅读文档或在请求负载中提供其他对象属性,攻击者都可以修改它们不被允许修改的对象属性

API测试思路及crAPI漏洞靶场复现

2.尝试修改请求方法为GET,并对参数进行修改,修改为刚测试的订单id 12

API测试思路及crAPI漏洞靶场复现

3.修改请求参数为PUT,测试是否可以对已经生效的订单进行数量修改

API测试思路及crAPI漏洞靶场复现

7、SSRF

API的SSRF指Server-Side Request Forgery,是指攻击者利用存在漏洞的API接口发送恶意请求,以获取未授权的数据或攻击其他内部系统。攻击者通过篡改请求的URL或参数等方式向公共API发送请求,利用API服务器从指定的URL下载图片、文件等资源,实现攻击

在查询车辆报告的接口,mechanic_api参数允许传递一个URL,尝试SSRF

API测试思路及crAPI漏洞靶场复现

参考文章:

https://www.cnblogs.com/smileleooo/p/18384083#%E6%8E%A5%E5%8F%A3%E6%9D%83%E9%99%90%E6%B5%8B%E8%AF%95

https://blog.csdn.net/qq_55316925/article/details/132664423

 

原文始发于微信公众号(红队蓝军):API测试思路及crAPI漏洞靶场复现

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月2日22:35:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   API测试思路及crAPI漏洞靶场复现https://cn-sec.com/archives/3460529.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息