天天看點

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注入緻遠端指令執行漏洞修複坎坷之路

總結:近年來,很多國産軟體進入了我們的工作生活中,這是很好的現象,但是不少中小企業的軟體在文檔,易用性方面還有一些提升的餘地。希望國産軟體越來愈好。