mongodb未授權訪問漏洞


catalogue

1. mongodb安裝
2. 未授權訪問漏洞
3. 漏洞修復及加固
4. 自動化檢測點

 

1. mongodb安裝

apt-get install mongodb

0x1: 創建數據庫目錄

MongoDB的數據存儲在data目錄的db目錄下,但是這個目錄在安裝過程不會自動創建,所以你需要手動創建data目錄,並在data目錄中創建db目錄。/data/db 是 MongoDB 默認的啟動的數據庫路徑(--dbpath)

mkdir -p /data/db

0x2: 命令行中運行 MongoDB 服務

注意: 如果你的數據庫目錄不是/data/db,可以通過 --dbpath 來指定

0x3: MongoDB后台管理 Shell

如果你需要進入MongoDB后台管理,你需要先打開mongodb裝目錄的下的bin目錄,然后執行mongo命令文件。MongoDB Shell是MongoDB自帶的交互式Javascript shell,用來對MongoDB進行操作和管理的交互式環境。當你進入mongoDB后台后,它默認會鏈接到 test 文檔(數據庫)

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM