漏洞簡介
MongoDB 是一個基于分布式檔案存儲的資料庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴充的高性能資料存儲解決方案。
MongoDB 是一個介于關系資料庫和非關系資料庫之間的産品,是非關系資料庫當中功能最豐富,最像關系資料庫的。
造成未授權通路的根本原因就在于啟動 Mongodb 的時候未設定 --auth 也很少會有人會給資料庫添加上賬号密碼(預設空密碼),使用預設空密碼這将導緻惡意攻擊者無需進行賬号認證就可以登陸到資料伺服器。
環境搭建
這裡使用的是kali linux。
docker環境拉取鏡像:
docker search mongodb
docker pull mongo
docker images mongo # 拉取鏡像
docker run -d -p 27017:27017 --name mongodb mongo # 建立一個新的容器并運作一個指令
docker ps -a # 顯示所有的容器,包括未運作的
壓縮包安裝mongodb服務:
參考連結:https://www.cnblogs.com/qswz/p/12144763.html
啟動服務後,通路
http://127.0.0.1:27017
:
如下頁面,搭建成功:
漏洞複現
如果放開注釋,就必須建立MongoDB的賬号,使用賬号與密碼才可遠端通路。
這也就是造成漏洞的原因。
使用 NoSQLBooster(一款MongoDB的用戶端工具):
下載下傳連結:https://s3.mongobooster.com/download/releasesv6/nosqlbooster4mongo-6.2.13.exe
連接配接成功:
具體使用方法:MongoDB的用戶端管理工具–nosqlbooster
使用nmap進行探測:
nmap -p 27017 --script /usr/share/nmap/scripts/mongodb-info IP位址
msf進行探測
漏洞修複
修改預設端口
修改預設的mongoDB端口(預設為: TCP 27017)為其他端口
不要開放服務到公網
vim /etc/mongodb.conf
bind_ip = 127.0.0.1
禁用HTTP和REST端口為MongoDB添加認證
MongoDB啟動時添加–auth參數、為MongoDB添加使用者
參考連結:常見未授權通路漏洞總結