YAPI远程代码执行0day处置手册

一、漏洞概述

近日,绿盟科技CERT监测发现 YAPI 可视化接口管理平台被爆出0day漏洞在野攻击事件,此漏洞源于Mock功能未对javascript脚本进行命令过滤,YAPI默认配置开启了用户注册功能且无需审核,此外管理员账号还存在默认口令,登录后的用户都具备使用Mock功能执行脚本的权限。攻击者登录YAPI 管理平台后可利用Mock功能在受影响服务器上执行任意的javascript代码,从而控制目标服务器。

漏洞复现成功截图:

早在2021年1月,便有用户在其GitHub项目上提交了此漏洞,并发布了复现方法。但YAPI官方并未发布通告说明和修复方案,目前利用工具被广泛扩散,请相关用户采取措施进行防护。

YAPI是由去哪儿网移动架构组(YMFE)开发的可视化接口管理工具,是一个可本地部署的、打通前后端及QA的接口管理平台。Mock功能可以根据接口/数据结构定义、Mock规则配置、Mock 期望配置,自动生成模拟数据,且使用者可以利用javascript根据需要灵活构造各种结构的接口,并返回定制化内容。

参考链接:

https://github.com/YMFE/yapi/issues

二、影响范围

受影响版本

  • YAPI <= v1.9.2

注:YAPI更新日志最后的时间为2020年5月29日

三、威胁排查

1、使用管理员账号登录YAPI,在用户管理中排查并删除异常用户。

2、通过关键字(process、exec、require等),在adv_mock集合的mock_script域中搜索是否存在恶意的javascript脚本。

db.adv_mock.find({mock_script: /exec/});

四、漏洞防护

4.1 修复建议

目前官方暂未针对该漏洞发布修复方案,请受影响的用户参考下列措施进行防护:

1、关闭YAPI用户注册功能

在 config.json 中添加以下配置项,禁止用户注册或启用LDAP认证:

{

  "closeRegister":true

}

修改完成后,重启 YAPI 服务生效。

2、关闭YAPI Mock功能

1)、在config.json中新增mock: false参数:

{ ... "mock": false, }

2)、在exts/yapi-plugin-andvanced-mock/server.js文件中找到:

if (caseData && caseData.case_enable) {...}

并添加下列代码:

if(!yapi.WEBCONFIG.mock) { return false; }

3、对高级Mock功能进行关键字过滤

在/server/utils/commons.js文件中找到:

sandbox = yapi.commons.sandbox(sandbox, script);

并添加下列代码:

const filter = '/process|exec|require/g'; const reg = new RegExp(filter, "g"); if(reg.test(script)) { return false; }

4、对YAPI平台的访问进行限制

5、修改管理员默认账号口令,清除弱口令。

4.2 产品防护

绿盟科技Web应用防护系统(WAF)已有通用防护规则(ID25612383)可对此漏洞进行防护,请有部署的用户保持WAF产品规则更新,以确保有效防护。

攻击防护效果如下:

声明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。

绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

版权声明

本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。

Spread the word. Share this post!

Meet The Author

Leave Comment