【漏洞复现】YApi NoSQL注入导致远程命令执行漏洞

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: YApi是一个API管理工具。在其1.12.0版本之前,存在一处NoSQL注入漏洞,通过该漏洞攻击者可以窃取项目Token,并利用这个Token执行任意Mock脚本,获取服务器权限。

声明


篇文章仅用于漏洞复现技术研究,请勿利用文章内的相关技术从事非法测试,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用!!!


一、YApi介绍


YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。


github地址:https://github.com/YMFE/yapi/tree/master


二、漏洞描述


YApi 是一个支持本地部署的可视化接口管理平台。YApi 在1.12.0 之前的版本(目前所有版本)中由于 base.js 没有正确对 token 参数进行正确过滤,导致存在远程代码执行漏洞。攻击者可通过MongoDB注入获取用户 token,其中包括用户ID、项目ID等参数。yapi后台的pre-request和pre-response方法存在缺陷点,通过注入调用自动化测试接口runAutoTest(),进而利用沙箱逃逸触发命令执行。


三、漏洞分析


参考链接(漏洞细节):https://paper.seebug.org/2028/

MongoDB特性注入:https://www.anquanke.com/post/id/250101#h3-4


四、漏洞详情


https://github.com/vulhub/vulhub/blob/master/yapi/mongodb-inj/README.zh-cn.md


五、影响版本


  • YApi < 1.12.0


六、漏洞复现


docker 搭建 : https://github.com/fjc0k/docker-YApi


git clone https://github.com/fjc0k/docker-YApi

cd docker-YApi

vim docker-compose.yml  

docker-compose up -d


docker-compose.yml 修改为存在漏洞版本,这里使用的是Yapi 版本: 1.10.2

image.png

使用 docker ps 查看环境搭建成功

image.png

本地访问网站:http://X.X.X.X:40001

默认账密如下:admin@admin.com:ymfe.org / admin@docker.yapi:adm1n


POC:https://github.com/vulhub/vulhub/blob/master/yapi/mongodb-inj/poc.py

测试结果

image.png

七、修复建议


一、版本升级


目前官方已有可更新版本,建议受影响用户更新至 1.12.0 及以上版本。

https://github.com/YMFE/yapi/releases/tag/v1.12.0


注:

1、YApi 1.11.0版本已修复Mongo注入获取Token的问题,导致攻击者无法在未授权的情况下利用此漏洞。

2、在YApi 1.12.0的版本更新中,仅默认禁用了Pre-requestPre-response脚本功能,使得此漏洞在默认配置下无法利用。


二、缓解措施


1、在业务允许的情况下,建议将YApi部署在内网,禁止外网访问。

2、修改默认token加密的盐:

编辑项目根目录中的config.json,添加"passsalt":“任意随机值”,如:

{

“passsalt”:“this_is_a_test”

}


保存,重启YApi服务即可。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
Web App开发 JSON 安全
【漏洞复现】Yapi接口管理平台远程代码执行漏洞
Yapi接口管理平台远程代码执行漏洞,攻击者可通过特定Payload对目标实施恶意攻击,获取敏感信息,操控服务器指令。
617 1
|
NoSQL Cloud Native 数据可视化
云原生之使用Docker部署YApi接口管理服务平台
云原生之使用Docker部署YApi接口管理服务平台
607 0
云原生之使用Docker部署YApi接口管理服务平台
|
6月前
|
数据可视化 JavaScript NoSQL
搭建接口平台YApi详解(含搭建node环境)
搭建接口平台YApi详解(含搭建node环境)
195 0
|
Web App开发 JSON 前端开发
YApi 官网说明文档-接口操作
为方便和前端, 节省沟通成本, 编写接口文档非常有比较 使用过swagger, 觉得入侵性太大. POST又感觉和项目结合的不太紧密. 所以一直在寻找 新的接口阅读/生成/测试工具. 下面介绍一下YApi.
1738 0
YApi 官网说明文档-接口操作
|
前端开发 数据可视化 机器人
基于YAPI的接口工作流
基于YAPI的接口工作流
476 0
基于YAPI的接口工作流
|
存储 NoSQL JavaScript
Linux下快速搭建YApi接口管理平台
目录 一、序言 二、安装Node 1、安装nvm 2、使用兼容的Node版本 二、安装MongoDB 1、下载MongoDB 2、配置MongoDB 三、安装YApi 四、安装PM2管理Node服务 五、登录YApi后台
Linux下快速搭建YApi接口管理平台
|
数据可视化 数据管理 测试技术
02 提效工具之yapi接口生成
02 提效工具之yapi接口生成
|
XML JSON 前端开发
开源的YAPI外还有哪些免费的接口工具?
API 管理这个话题近些年听到的频次越来越多,这本质上是个 web 领域的发展有关,也和开发协作方式有关--前后端分离代替了全栈工程师 hold all 的局面,强调的更多的是 API 复用、分工和协作细化。 API 管理的重要性不言而喻,每家公司随着业务的发展,多多少少都会涉及到;从开源社区的产品到国内各类商业化产品,可以看到大家对于 API 管理是越来越重视的。
|
Kubernetes 数据可视化 测试技术
可视化接口管理平台 YApi,让你轻松搞定 API 的管理问题
高效、易用、功能强大的可视化接口管理平台 YApi,让我们能轻松帮助我们搞定 API 的管理问题。
754 1
|
JSON 前端开发 API
接口管理工具YApi怎么用?颜值高、易管理、超好用
接口管理工具YApi怎么用?颜值高、易管理、超好用