太快太不安全:為Mongo Express Web管理界面保駕護(hù)航
譯文【51CTO.com快譯】Mongo Express是一種基于Web的輕量級管理界面,用于交互式管理MongoDB數(shù)據(jù)庫。它使用Node.js、Express和Bootstrap軟件包編寫而成。本文介紹在無需身份驗(yàn)證的情況下部署Mongo Express管理面板以及防止泄露的各種措施。
驗(yàn)證方案
Mongo Express隨帶config-default.js文件。它主要支持基本的驗(yàn)證,這包含用戶名和密碼組合的base64編碼有效載荷。這意味著,如果配置了基本驗(yàn)證,每次請求訪問不同的Mongo Express Web組件時(shí)就會傳輸HTTP請求報(bào)頭Authorization:Basic
圖1. Mongo Express Web管理控制臺驗(yàn)證變量
除了上面討論的Web面板驗(yàn)證方案外,Mongo Express軟件包還支持通過環(huán)境變量傳遞數(shù)據(jù)庫驗(yàn)證登錄信息。如果使用虛擬機(jī)或容器來部署主機(jī),通過環(huán)境變量傳遞登錄信息可能導(dǎo)致信息在多個(gè)位置泄漏。圖2顯示了用于傳遞值的環(huán)境變量的類型。
圖2. 用于Mongo數(shù)據(jù)庫連接的環(huán)境變量
用于提供驗(yàn)證的Mongo Express環(huán)境變量如圖3所示:
圖3. 用于Mongo Express驗(yàn)證的Docker環(huán)境變量
總體而言,基本驗(yàn)證用于保護(hù)Mongo Express Web管理面板,而環(huán)境變量用于存儲用來配置與主要的MongoDB數(shù)據(jù)庫之間的后端連接的登錄信息。
Mongo Express:HTTP請求/響應(yīng)
在默認(rèn)狀態(tài)下,Mongo Express傳輸HTTP請求和響應(yīng)報(bào)頭,如代碼片段1所示。創(chuàng)建了mongo-express cookie參數(shù),用于存儲與會話有關(guān)的信息。
代碼片段1. Mongo Express Web服務(wù)器的HTTP請求/響應(yīng)
set-cookie:mongo-express簽名可用于鑒別部署在互聯(lián)網(wǎng)上的Mongo Express的特征。
實(shí)證分析
成千上萬的Mongo Express Web管理面板暴露在互聯(lián)網(wǎng)上,無需驗(yàn)證即可訪問它們。這意味著任何遠(yuǎn)程用戶都可以訪問這些界面、執(zhí)行命令或檢索敏感信息。
在這里,可以看到可用于無需驗(yàn)證,就可以掃描在互聯(lián)網(wǎng)上運(yùn)行的Mongo Express實(shí)例的HTTP資源路徑:
直接的Web鏈接:
- [IP:port]/db/config/
- [IP:port]/db/config/system.sessions
- [IP:port]/db/admin/system.users
- [IP:port]/db/admin/system.version
- [IP:port]/db/local/startup_log
JSON轉(zhuǎn)儲(JSON dump)
- [IP:port]/db/config/
- [IP:port]/db/config/expArr/system.sessions
- [IP:port]/db/admin/expArr/system.users
- [IP:port]/db/admin/expArr/system.version
- [IP:port]/db/local/expArr/startup_log
代碼片段2只是預(yù)測為訪問Mongo Express軟件包使用的資源而發(fā)送的cURL請求的輸出:
代碼片段2. 訪問系統(tǒng)的JSON轉(zhuǎn)儲,用戶無需遠(yuǎn)程服務(wù)器的驗(yàn)證
以下是我們進(jìn)行的未驗(yàn)證的Mongo Express Web管理實(shí)例的實(shí)時(shí)評估的幾個(gè)例子。
訪問管理員root:可以訪問和編輯含有登錄詳細(xì)信息的文檔,比如salt、storedKey、serverKey及其他值。圖4顯示了同樣的情況。
圖4. 提取Admin.Root的角色和登錄信息
數(shù)據(jù)庫刪除:圖5和圖6顯示可以通過刪除所有關(guān)聯(lián)的集合來刪除數(shù)據(jù)庫。這些例子顯示了通過不安全的Mongo Express管理面板刪除startup_log數(shù)據(jù)庫。
圖5. 開始從數(shù)據(jù)庫刪除集合
圖6. 數(shù)據(jù)庫成功刪除
信息泄漏:日志還可以顯示關(guān)于構(gòu)建環(huán)境的內(nèi)部信息,如圖7所示。
圖7. 關(guān)于構(gòu)建環(huán)境的信息泄漏
若干建議
上面介紹的例子強(qiáng)調(diào)了為什么保護(hù)部署在互聯(lián)網(wǎng)上的Mongo Express實(shí)例很重要。以下是防止泄露的幾個(gè)提示:
1. 使用強(qiáng)登錄信息限制訪問,并部署邊界訪問控制機(jī)制。
2. 對網(wǎng)絡(luò)邊界上公開的服務(wù)執(zhí)行定期漏洞評估和滲透測試,確保關(guān)鍵服務(wù)受到限制,并未運(yùn)行不安全的軟件版本。
3. 制定強(qiáng)有力的風(fēng)險(xiǎn)評估計(jì)劃,確保預(yù)先了解風(fēng)險(xiǎn)并相應(yīng)地進(jìn)行補(bǔ)救。
4. 定期執(zhí)行配置審查,并制定安全影響分析(SIA)計(jì)劃,將這種做法落實(shí)到位。
原文標(biāo)題:Too fast, too insecure: Securing Mongo Express web administrative interfaces,作者:Aditya K Sood
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】