cataloguehtml
1. mongodb安裝 2. 未受權訪問漏洞 3. 漏洞修復及加固 4. 自動化檢測點
1. mongodb安裝linux
apt-get install mongodblaravel
0x1: 建立數據庫目錄web
MongoDB的數據存儲在data目錄的db目錄下,可是這個目錄在安裝過程不會自動建立,因此你須要手動建立data目錄,並在data目錄中建立db目錄。/data/db 是 MongoDB 默認的啓動的數據庫路徑(--dbpath)redis
mkdir -p /data/db
0x2: 命令行中運行 MongoDB 服務mongodb
注意: 若是你的數據庫目錄不是/data/db,能夠經過 --dbpath 來指定shell
0x3: MongoDB後臺管理 Shell數據庫
若是你須要進入MongoDB後臺管理,你須要先打開mongodb裝目錄的下的bin目錄,而後執行mongo命令文件。MongoDB Shell是MongoDB自帶的交互式Javascript shell,用來對MongoDB進行操做和管理的交互式環境。當你進入mongoDB後臺後,它默認會連接到 test 文檔(數據庫)vim
root@iZ23und3yqhZ:~# mongo MongoDB shell version: 2.4.9 connecting to: test Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user >
如今讓咱們插入一些簡單的數據,並對插入的數據進行檢索安全
> db.runoob.insert({x:10}) > db.runoob.find() { "_id" : ObjectId("586df25ead93a0064a40a3ae"), "x" : 10 } >
0x4: MongoDb web 用戶界面
MongoDB 提供了簡單的 HTTP 用戶界面。 若是你想啓用該功能,須要在啓動的時候指定參數 --rest
./mongod --dbpath=/data/db --rest
MongoDB 的 Web 界面訪問端口比服務的端口多1000
若是你的MongoDB運行端口使用默認的27017,你能夠在端口號爲28017訪問web用戶界面,即地址爲:http://localhost:28017
Relevant Link:
http://www.runoob.com/mongodb/mongodb-linux-install.html
2. 未受權訪問漏洞
開啓MongoDB服務時不添加任何參數時,默認是沒有權限驗證的,登陸的用戶能夠經過默認端口無需密碼對數據庫任意操做(增刪改高危動做)並且能夠遠程訪問數據庫
0x1: 漏洞成因
在剛安裝完畢的時候MongoDB都默認有一個admin數據庫,此時admin數據庫是空的,沒有記錄權限相關的信息!當admin.system.users一個用戶都沒有時,即便mongod啓動時添加了—auth參數,若是沒有在admin數據庫中添加用戶,此時不進行任何認證仍是能夠作任何操做(無論是不是以—auth 參數啓動),直到在admin.system.users中添加了一個用戶。加固的核心是隻有在admin.system.users中添加用戶以後,mongodb的認證,受權服務才能生效
Relevant Link:
https://www.secpulse.com/archives/27090.html http://webscan.360.cn/vul/view/vulid/3558
3. 漏洞修復及加固
0x1: 修改默認端口
修改默認的mongoDB端口(默認爲: TCP 27017)爲其餘端口
0x2: 不要開放到公網0.0.0.0
vim /etc/mongodb.conf bind_ip = 127.0.0.1
和redis同樣,mongodb最好只開放本地監聽,至少不能是0.0.0.0
0x3: 禁用HTTP和REST端口
MongoDB自身帶有一個HTTP服務和並支持REST接口。在2.6之後這些接口默認是關閉的。mongoDB默認會使用默認端口監聽web服務,通常不須要經過web方式進行遠程管理,建議禁用。修改配置文件或在啓動的時候選擇–nohttpinterface 參數nohttpinterface = false
0x4: 開啓日誌審計功能
審計功能能夠用來記錄用戶對數據庫的全部相關操做。這些記錄可讓系統管理員在須要的時候分析數據庫在什麼時段發生了什麼事情
0x5: 開啓MongoDB受權
在admin 數據庫中建立用戶,如 supper 密碼爲 sup(此處均爲舉例說明,請勿使用此帳號密碼)
> use admin switched to db admin > db.addUser("supper", "sup") { "user" : "supper", "readOnly" : false, "pwd" : "f4e451395b5b554788c796e5488573b2", "_id" : ObjectId("586dfb12ad93a0064a40a3af") } > db.auth("supper","sup") 1 > exit bye
修改配置文件
vim /etc/mongodb.conf auth = true
Relevant Link:
https://laravel-china.org/topics/328 https://help.aliyun.com/knowledge_detail/37451.html
4. 自動化檢測點
0x1: 檢測是否監聽到127.0.0.1
無論是配置文件裏的,仍是命令行參數裏的,只要最終結果不是127.0.0.1,就認爲是不安全的
--bind_ip 127.0.0.1 or vim /etc/mongodb.conf bind_ip = 127.0.0.1
0x2: 檢測是否開啓auth認證
mongod --auth or vim /etc/mongodb.conf auth = true
Copyright (c) 2016 LittleHann All rights reserved