天天看点

Yapi MongoDB注入致远程命令执行漏洞修复坎坷之路

作者:DeveloperPeer

#头条创作挑战赛# 大晚上收到了阿里云的告警消息,说是网站存在高危应用漏洞,登录阿里云管理后台,发现了下面一个高危漏洞,

Yapi MongoDB注入致远程命令执行漏洞修复坎坷之路

通常情况下,遇到这种高危漏洞,直接升级软件就可以解决,应为应用软件的开发者,通常都会在第一时间对软件进行修复。

然而这次却有点坎坷,记录一下,希望有人可以用到。

Yapi 介绍

Yapi 是一款国产的接口管理,测试工具,旨在为开发、产品、测试人员提供更优雅的接口管理服务。

修复过程

  1. 登录官网,查看升级步骤如下,但是执行起来就报错,也无法搜索到解决方案。
cd  {项目目录}
yapi ls //查看版本号列表
yapi update //更新到最新版本
yapi update -v {Version} //更新到指定版本           

从错误看,应该是下面这个网址的访问问题。

# yapi ls
(node:13547) UnhandledPromiseRejectionWarning: Error: Hostname/IP doesn't match certificate's altnames: "Host: www.easy-mock.com. is not in the cert's altnames: DNS:*.souche-inc.com, DNS:souche-inc.com"
    at Object.checkServerIdentity (tls.js:223:17)
    at TLSSocket.<anonymous> (_tls_wrap.js:1122:29)
    at emitNone (events.js:106:13)
    at TLSSocket.emit (events.js:208:7)
    at TLSSocket._finishInit (_tls_wrap.js:643:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:473:38)           

2.不能正常升级,就的想其其它办法了。 看了下,Yapi 的数据是存储在 mongodb 中的,这样数据不会受到影响,因此可以重新安装一份最新的版本,然后配置使用旧的数据就好。

3.依照官网的可视化安装方式来安装,但是与上面的错误一样。

npm install -g yapi-cli --registry https://registry.npm.taobao.org
yapi server            

4.可视化安装不行,就命令行部署吧,因为 github 的访问问题,也没有成功

mkdir yapi
cd yapi
git clone https://github.com/YMFE/yapi.git vendors            

5.最后只好下载官网的release包,手动安装吧。

#wget https://github.com/YMFE/yapi/archive/refs/tags/v1.12.0.tar.gz
# 下载后解压,移到自定义的目录下命名为verdors
#  如果使用已有的配置和数据,请修改成复制之前的配置文件
cp vendors/config_example.json ./config.json //复制完成后请修改相关配置
cd vendors
npm install --production --registry https://registry.npm.taobao.org
# 下面这一步不要执行,因为是使用已有的数据和配置。
####npm run install-server //安装程序会初始化数据库索引和管理员账号,管理员账号名可在 config.json 配置
node server/app.js //启动服务器后,请访问 127.0.0.1:{config.json配置的端口},初次运行会有个编译的过程,请耐心等候           

6.完成上面的基本上就成功了,但是如果配置的有 supervisor 守护 的话,可能需要修改下对应的配置, 然后让supervisor加载修改就好 supervisorctl reload. 如果有问题的话,可以根据 supervisor 和 yapi 的日志进行解决。

[program: yapi]
command=node vendors/server/app.js
directory=yapipath
autorestart=true
autostart=true
stderr_logfile=/var/log/yapi.err.log
stdout_logfile=/var/log/yapi..out.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
startsecs=1           

修复后,阿里云重新监测下,发现漏洞已修复。

Yapi MongoDB注入致远程命令执行漏洞修复坎坷之路

总结:近年来,很多国产软件进入了我们的工作生活中,这是很好的现象,但是不少中小企业的软件在文档,易用性方面还有一些提升的余地。希望国产软件越来愈好。