yapi token注入漏洞

一、背景

YApi 是一个可本地部署的可视化的接口管理平台。

YApi 在 1.11.0 之前的版本中存在远程代码执行漏洞,因为 base.js 没有正确对 token 参数进行正确过滤,攻击者可通过 MongoDB 注入获取用户 token(包括用户 ID、项目 ID 等),进而使用自动化测试 API 接口写入待命命令,利用沙箱逃逸触发命令执行。

二、补丁分析

https://github.com/YMFE/yapi/commit/59bade3a8a43e7db077d38a4b0c7c584f30ddf8c

可以发现,官方仅对token参数的类型做了强制判断进行修复,要求token参数必须为string类型。那么漏洞POC内token参数就应该为json对象来触发。

要进入此函数体内同时需要请求路径含有/api/open/或在openApiRouter列表内。经过排查发现:

‘/api/open/run_auto_test’,

‘/api/open/import_data’,

两条路径由于存在额外的参数校验,token必须为string,所以除这两条路径外的其他openApiRouter均可触发。

let openApiRouter = [
      '/api/open/run_auto_test',
      '/api/open/import_data',
      '/api/interface/add',
      '/api/interface/save',
      '/api/interface/up',
      '/api/interface/get',
      '/api/interface/list',
      '/api/interface/list_menu',
      '/api/interface/add_cat',
      '/api/interface/getCatMenu',
      '/api/interface/list_cat',
      '/api/project/get',
      '/api/plugin/export',
      '/api/project/up',
      '/api/plugin/exportSwagger'
    ];

继续跟踪token的使用

 

 

可以发现,token参数完整的进入了mogodb的查询。mogo注入与mysql等稍微有所不同,以下文章有所介绍:

从零学习 NoSQL 注入之 Mongodb - 腾讯云开发者社区-腾讯云

三、测试漏洞

 token参数可以进行盲注,当匹配到token时,返回数据。

未匹配到时,返回请登录。 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Spring Boot和Yapi是两个不同的框架,Spring Boot是一个基于Java语言的开发框架,用于快速创建Web应用程序,而Yapi是一个接口管理工具,用于管理和维护API接口文档。 要在Spring Boot中整合Yapi,可以使用Yapi的API接口来将API接口文档上传到Yapi服务器中。以下是整合步骤: 1. 安装Yapi服务器并创建项目。可以参考Yapi官方文档进行安装和创建项目。 2. 在Spring Boot应用程序中添加Yapi相关依赖。可以使用以下Maven依赖: ```xml <dependency> <groupId>com.github.wujiuye</groupId> <artifactId>yapi-sync-maven-plugin</artifactId> <version>1.0.0</version> </dependency> ``` 3. 在Spring Boot应用程序中添加Yapi配置。可以在application.properties文件中添加以下配置: ```properties yapi.url=http://localhost:3000 # Yapi服务器地址 yapi.project.id=1 # Yapi项目ID yapi.token=abc123 # Yapi项目Token ``` 4. 在Spring Boot应用程序中添加Yapi上传插件。可以使用以下Maven插件: ```xml <plugin> <groupId>com.github.wujiuye</groupId> <artifactId>yapi-sync-maven-plugin</artifactId> <version>1.0.0</version> <executions> <execution> <id>upload-to-yapi</id> <phase>install</phase> <goals> <goal>upload</goal> </goals> </execution> </executions> </plugin> ``` 5. 在Spring Boot应用程序中添加API接口文档注释。可以使用以下注释格式: ```java /** * @api {请求方法} /接口路径 接口名称 * @apiDescription 接口描述 * @apiParam 参数名 参数类型 参数描述 * @apiSuccess 返回参数类型 返回参数描述 * @apiError 错误码 错误描述 */ ``` 6. 在Spring Boot应用程序中编写API接口代码。可以使用Spring MVC或Spring WebFlux等框架编写API接口代码。 7. 在Spring Boot应用程序中生成API接口文档。可以使用Swagger或Springfox等框架生成API接口文档。 8. 在Spring Boot应用程序中上传API接口文档到Yapi服务器。可以使用以下命令: ```bash mvn yapi-sync:upload ``` 9. 在Yapi服务器中查看API接口文档。可以登录Yapi服务器并查看项目中的API接口文档。 注意:在上传API接口文档到Yapi服务器之前,需要确保Yapi服务器已经启动并且配置信息正确。同时,需要确保API接口文档的注释信息正确无误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值