yapi token注入漏洞

本文分析了YApi在1.11.0前版本中存在的远程代码执行漏洞,详细探讨了漏洞产生的原因及官方补丁修复措施,并通过测试验证了漏洞的存在。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

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时,返回数据。

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

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值