知识点API攻防-类型利用-RESTfulGraphQLAPI接口类型1、RESTful API(Representational State Transfer)RESTful API是一种基于HTTP协议的API设计风格它使用HTTP方法(例如GET、POST、PUT、DELETE、PATCH)来对资源进行操作并通过URL来唯一标识资源2、SOAP API(Simple Object Access Protocol)SOAP API是一种基于XML的通信协议它使用SOAP消息格式进行数据交换SOAP API通常使用WSDL(Web Services Description Language)描述接口支持复杂的数据类型和协议扩展3、GraphQL API(Graph Query Language)GraphQL API是一种用于数据查询和操作的API查询语言它允许客户端定义需要返回的数据结构从而减少不必要的数据传输和多次请求4、gRPC APIgRPC是一种高性能、开源的远程过程调用(RPC)框架它支持多种编程语言并使用Protocol Buffers进行数据序列化和通信5、WebSocket APIWebSocket API提供了一种全双工通信的机制使得服务器和客户端可以实时地进行双向数据传输适用于实时通信和推送场景6、JSON-RPC APIJSON-RPC是一种轻量级的远程过程调用(RPC)协议基于JSON格式进行数据交换支持各种编程语言和平台7、OAuth APIOAuth是一种开放标准的授权协议用于用户授权第三方应用程序访问受保护的资源OAuth API提供了一组用于身份验证和授权的接口8、OpenAPI/Swagger APIOpenAPI(以前称为Swagger)是一种用于设计、构建和文档化API的规范和工具集。OpenAPI/Swagger API提供了一种描述API接口和操作的标准方式现在网站常用的就是这几种API接口RESTful、SOAP、GraphQL、OAuth、OpenAPI/Swagger。API检测流程接口发现遵循分类依赖语言V1/V2多版本等接口发现JS等中提取枚举爆破响应提示等Method请求方法攻击方式OPTIONS,PUT,MOVE,DELETE,PATCH文章参考https://blog.csdn.net/weixin_42672802/article/details/136884270效果上传恶意文件修改页面等URL唯一资源定位符攻击方式猜测遍历跳转效果未授权访问等Params请求参数攻击方式构造参数修改参数遍历重发效果爆破越权未授权访问突破业务逻辑等Authorization认证方式攻击方式身份伪造身份篡改效果越权未授权访问等Headers请求消息头攻击方式拦截数据包改Hosts改Referer改Content-Type等效果绕过身份认证绕过Referer验证绕过类型验证DDOS等Body消息体攻击方式SQL注入XML注入反序列化等效果提权突破业务逻辑未授权访问等演示案例-API攻防-类型利用-RESTfulGraphQL一、RESTful风格的测试1、API接口JS中URL泄露fetch(${form.action}/${encodeURIComponent(username)},{method:PATCH, body: JSON.stringify({email:email})})2、API接口利用提交方法POST /api/products/1/price PATCH /api/products/1/price Content-Type: application/json{price:1}可以理解为GET是获取商品的信息PATCH就是设置商品的价格。3、API接口利用泄露参数POST /api/checkout{chosen_discount:{//被选择产品的折扣percentage:0 //百分比},chosen_products:[//被选择的产品{product_id:1, //产品idname:Lightweight\l33t\Leather Jacket ,quantity:1, //数量item_price:133700 //价格}]二、GraphQL风格的测试GraphQL是一个用于API的查询语言是一个使用基于类型系统来执行查询的服务端运行时类型系统由你的数据定义。GraphQL并没有和任何特定数据库或者存储引擎绑定而是依靠你现有的代码和数据支撑。可以把它理解为类似thinkphp框架作用。参考https://mp.weixin.qq.com/s/gpm8w0HHW5wNKQLq4AtGyg参考blog.csdn.net/qq_61812944/category_12417979.html参考https://graphql.cn/learn/introspection/和RESTful差异RESTful请求什么就换一个端点和参数。GraphQL固定的端点里面的东西改变。利用核心除常规测试思路外语法是重点。解决1目标使用GraphQL API技术判断BP插件URL特征分析提交的参数数据特征测试插件BurpSuite应用市场InQL解决2目标使用GraphQL API初级安全测试技术见下列实验解决3目标使用GraphQL API中高级安全测试技术下节课1、实验室访问私人GraphQL数据2、实验室访问暴漏GraphQL字段3、实验室访问隐藏GraphQL端点
API攻防-接口类型测试方法端点提取暴漏攻击枚举规则RESTful风格GraphQL语法
知识点API攻防-类型利用-RESTfulGraphQLAPI接口类型1、RESTful API(Representational State Transfer)RESTful API是一种基于HTTP协议的API设计风格它使用HTTP方法(例如GET、POST、PUT、DELETE、PATCH)来对资源进行操作并通过URL来唯一标识资源2、SOAP API(Simple Object Access Protocol)SOAP API是一种基于XML的通信协议它使用SOAP消息格式进行数据交换SOAP API通常使用WSDL(Web Services Description Language)描述接口支持复杂的数据类型和协议扩展3、GraphQL API(Graph Query Language)GraphQL API是一种用于数据查询和操作的API查询语言它允许客户端定义需要返回的数据结构从而减少不必要的数据传输和多次请求4、gRPC APIgRPC是一种高性能、开源的远程过程调用(RPC)框架它支持多种编程语言并使用Protocol Buffers进行数据序列化和通信5、WebSocket APIWebSocket API提供了一种全双工通信的机制使得服务器和客户端可以实时地进行双向数据传输适用于实时通信和推送场景6、JSON-RPC APIJSON-RPC是一种轻量级的远程过程调用(RPC)协议基于JSON格式进行数据交换支持各种编程语言和平台7、OAuth APIOAuth是一种开放标准的授权协议用于用户授权第三方应用程序访问受保护的资源OAuth API提供了一组用于身份验证和授权的接口8、OpenAPI/Swagger APIOpenAPI(以前称为Swagger)是一种用于设计、构建和文档化API的规范和工具集。OpenAPI/Swagger API提供了一种描述API接口和操作的标准方式现在网站常用的就是这几种API接口RESTful、SOAP、GraphQL、OAuth、OpenAPI/Swagger。API检测流程接口发现遵循分类依赖语言V1/V2多版本等接口发现JS等中提取枚举爆破响应提示等Method请求方法攻击方式OPTIONS,PUT,MOVE,DELETE,PATCH文章参考https://blog.csdn.net/weixin_42672802/article/details/136884270效果上传恶意文件修改页面等URL唯一资源定位符攻击方式猜测遍历跳转效果未授权访问等Params请求参数攻击方式构造参数修改参数遍历重发效果爆破越权未授权访问突破业务逻辑等Authorization认证方式攻击方式身份伪造身份篡改效果越权未授权访问等Headers请求消息头攻击方式拦截数据包改Hosts改Referer改Content-Type等效果绕过身份认证绕过Referer验证绕过类型验证DDOS等Body消息体攻击方式SQL注入XML注入反序列化等效果提权突破业务逻辑未授权访问等演示案例-API攻防-类型利用-RESTfulGraphQL一、RESTful风格的测试1、API接口JS中URL泄露fetch(${form.action}/${encodeURIComponent(username)},{method:PATCH, body: JSON.stringify({email:email})})2、API接口利用提交方法POST /api/products/1/price PATCH /api/products/1/price Content-Type: application/json{price:1}可以理解为GET是获取商品的信息PATCH就是设置商品的价格。3、API接口利用泄露参数POST /api/checkout{chosen_discount:{//被选择产品的折扣percentage:0 //百分比},chosen_products:[//被选择的产品{product_id:1, //产品idname:Lightweight\l33t\Leather Jacket ,quantity:1, //数量item_price:133700 //价格}]二、GraphQL风格的测试GraphQL是一个用于API的查询语言是一个使用基于类型系统来执行查询的服务端运行时类型系统由你的数据定义。GraphQL并没有和任何特定数据库或者存储引擎绑定而是依靠你现有的代码和数据支撑。可以把它理解为类似thinkphp框架作用。参考https://mp.weixin.qq.com/s/gpm8w0HHW5wNKQLq4AtGyg参考blog.csdn.net/qq_61812944/category_12417979.html参考https://graphql.cn/learn/introspection/和RESTful差异RESTful请求什么就换一个端点和参数。GraphQL固定的端点里面的东西改变。利用核心除常规测试思路外语法是重点。解决1目标使用GraphQL API技术判断BP插件URL特征分析提交的参数数据特征测试插件BurpSuite应用市场InQL解决2目标使用GraphQL API初级安全测试技术见下列实验解决3目标使用GraphQL API中高级安全测试技术下节课1、实验室访问私人GraphQL数据2、实验室访问暴漏GraphQL字段3、实验室访问隐藏GraphQL端点