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