MongoDB數(shù)據(jù)庫(kù)未授權(quán)訪問(wèn)漏洞

MongoDB數(shù)據(jù)庫(kù)未授權(quán)訪問(wèn)漏洞

更新時(shí)間:2019-04-15 17:52:18

近日阿里云收到國(guó)家互聯(lián)網(wǎng)應(yīng)急中心(簡(jiǎn)稱:CNCERT)單位關(guān)于《阿里云計(jì)算有限公司多個(gè)系統(tǒng)存在MongoDB未授權(quán)訪問(wèn)的情況通報(bào)》的通知,您的阿里云主機(jī)存在MongoDB數(shù)據(jù)庫(kù)未授權(quán)訪問(wèn)漏洞,漏洞危害嚴(yán)重辜王,可以導(dǎo)致數(shù)據(jù)庫(kù)數(shù)據(jù)泄露或被刪除勒索翩活,從而造成嚴(yán)重的生產(chǎn)事故逮刨。為保證您的業(yè)務(wù)和應(yīng)用的安全踱侣,提供以下漏洞修復(fù)指導(dǎo)方案埠戳,具體詳情如下:

漏洞危害

開(kāi)啟MongoDB服務(wù)時(shí)不添加任何參數(shù)時(shí)馆衔,默認(rèn)是沒(méi)有權(quán)限驗(yàn)證的瘟判,登錄的用戶可以通過(guò)默認(rèn)端口無(wú)需密碼對(duì)數(shù)據(jù)庫(kù)任意操作(增、刪角溃、改拷获、查高危動(dòng)作)而且可以遠(yuǎn)程訪問(wèn)數(shù)據(jù)庫(kù)。

漏洞成因

在剛安裝完畢的時(shí)候MongoDB都默認(rèn)有一個(gè)admin數(shù)據(jù)庫(kù)减细,此時(shí)admin數(shù)據(jù)庫(kù)是空的匆瓜,沒(méi)有記錄權(quán)限相關(guān)的信息!當(dāng)admin.system.users一個(gè)用戶都沒(méi)有時(shí),即使mongod啟動(dòng)時(shí)添加了—auth參數(shù)陕壹,如果沒(méi)有在admin數(shù)據(jù)庫(kù)中添加用戶质欲,此時(shí)不進(jìn)行任何認(rèn)證還是可以做任何操作(不管是否是以—auth 參數(shù)啟動(dòng)),直到在admin.system.users中添加了一個(gè)用戶。加固的核心是只有在admin.system.users中添加用戶之后糠馆,mongodb的認(rèn)證,授權(quán)服務(wù)才能生效嘶伟。

修復(fù)方案

方案1:不要將MongoDB服務(wù)對(duì)互聯(lián)網(wǎng)開(kāi)放

使用安全組防火墻或本地操作系統(tǒng)防火墻對(duì)訪問(wèn)源IP進(jìn)行嚴(yán)格控制,如果僅對(duì)內(nèi)網(wǎng)服務(wù)器提供服務(wù)又碌,建議禁止將MongoDB服務(wù)發(fā)布到互聯(lián)網(wǎng)上九昧。您可以通過(guò)安全組功能管理MongoDB服務(wù)器當(dāng)前的訪問(wèn)控制規(guī)則,僅允許與MongoDB數(shù)據(jù)庫(kù)依賴的服務(wù)器114.114.114.114, 114.114.115.115 訪問(wèn)(這里的IP是示例)毕匀。

方案2:使用—bind_ip選項(xiàng)

該選項(xiàng)可以限制監(jiān)聽(tīng)接口IP為特定的內(nèi)網(wǎng)IP铸鹰, 當(dāng)在啟動(dòng)mongodb的時(shí)候,使用?--bind_ip 10.0.0.1表示啟動(dòng)ip地址綁定皂岔,數(shù)據(jù)庫(kù)實(shí)例將只監(jiān)聽(tīng)10.0.0.1內(nèi)網(wǎng)的請(qǐng)求蹋笼。

mongod --bind_ip 10.0.0.1

方案3:?jiǎn)?dòng)基于角色的登錄認(rèn)證功能

在admin數(shù)據(jù)庫(kù)中創(chuàng)建用戶,如用戶名supper躁垛,密碼supWDxsf67%H(此處為舉例說(shuō)明剖毯,請(qǐng)勿使用此賬號(hào)密碼)。

1)在未開(kāi)啟認(rèn)證的環(huán)境下教馆,登錄到數(shù)據(jù)庫(kù)

[mongodbrac3 bin]$ ./mongo 127.0.0.1:27028 (此處修改了默認(rèn)端口)

MongoDB shell version: 2.0.1

connecting to: 127.0.0.1:27028/test

2)切換到admin數(shù)據(jù)庫(kù)

> use admin

switchedtodbadmin

3)創(chuàng)建管理員賬號(hào)

賬號(hào)不要設(shè)置為常見(jiàn)賬號(hào)逊谋,密碼需要滿足一定的復(fù)雜度,長(zhǎng)度至少八位以上土铺,并包括大小寫字母胶滋、數(shù)字、特殊字符混合體悲敷,不要使用生日究恤、姓名、身份證編號(hào)等常見(jiàn)密碼镀迂。

說(shuō)明:MongoDB從V3版本開(kāi)始取消使用addUser方法丁溅,采用db.createUser方法創(chuàng)建用戶唤蔗。

> db.addUser("supper", "supWDxsf67%H") 或

{ "n" : 0, "connectionId" : 4, "err" : null, "ok" : 1 }

> db.createUser({user:"supper",pwd:"supWDxsf67%H",roles:["root"]})

{

? ? "user" : "supper",

? ? "readOnly" : false,

? ? "pwd" : "51a481f72b8b8218df9fee50b3737c44",

? ? "_id" : ObjectId("4f2bc0d357a309043c6947a4")

}

管理員賬號(hào)將在system.users中探遵。

> db.getCollectionNames()

[ "system.indexes", "system.users", "system.version" ]

4)驗(yàn)證用戶是否創(chuàng)建成功

> db.auth("supper","supWDxsf67%H")

> exit

bye

結(jié)束進(jìn)程,重啟MongoDB服務(wù)妓柜。

./mongod --dbpath=/path/mongodb --bind_ip=10.0.0.1 --port=27028 --fork=true logpath=/path/mongod.log --auth &

說(shuō)明:

admin.system.users中將會(huì)保存比在其它數(shù)據(jù)庫(kù)中設(shè)置的用戶權(quán)限更大的用戶信息箱季,擁有超級(jí)權(quán)限,也就是說(shuō)在admin中創(chuàng)建的用戶可以對(duì)mongodb中的其他數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行操作棍掐。

MongoDB系統(tǒng)中藏雏,數(shù)據(jù)庫(kù)是由超級(jí)用戶來(lái)創(chuàng)建的,一個(gè)數(shù)據(jù)庫(kù)可以包含多個(gè)用戶作煌,一個(gè)用戶只能在一個(gè)數(shù)據(jù)庫(kù)下掘殴,不同數(shù)據(jù)庫(kù)中的用戶可以同名赚瘦。

特定數(shù)據(jù)庫(kù)(比如DB1)的用戶User1,不能夠訪問(wèn)其他數(shù)據(jù)庫(kù)DB2奏寨,但是可以訪問(wèn)本數(shù)據(jù)庫(kù)下其他用戶創(chuàng)建的數(shù)據(jù)起意。

不同數(shù)據(jù)庫(kù)中同名的用戶不能夠登錄其他數(shù)據(jù)庫(kù),比如DB1病瞳、DB2都有user1揽咕,以u(píng)ser1登錄DB1后,不能夠登錄到DB2進(jìn)行數(shù)據(jù)庫(kù)操作套菜。

在admin數(shù)據(jù)庫(kù)創(chuàng)建的用戶具有超級(jí)權(quán)限亲善,可以對(duì)mongodb系統(tǒng)內(nèi)的任何數(shù)據(jù)庫(kù)的數(shù)據(jù)對(duì)象進(jìn)行操作。

使用db.auth()可以對(duì)數(shù)據(jù)庫(kù)中的用戶進(jìn)行驗(yàn)證逗柴,如果驗(yàn)證成功則返回1蛹头,否則返回0。 db.auth()只能針對(duì)登錄用戶所屬的數(shù)據(jù)庫(kù)的用戶信息進(jìn)行驗(yàn)證戏溺,不能驗(yàn)證其他數(shù)據(jù)庫(kù)的用戶信息掘而。

風(fēng)險(xiǎn)自查

如果您是MongoDB管理員,也可以使用以下方式檢查是否有進(jìn)一步的入侵行為:

查看MongoDB的日志是否完整于购,并確認(rèn)執(zhí)行刪除數(shù)據(jù)庫(kù)的源IP地址和時(shí)間袍睡、行為;

檢查MongoDB帳戶以查看是否存在未添加密碼(admin)賬戶(使用db.system.users.find()命令)肋僧;

檢查GridFS以查看是否有人存儲(chǔ)任何文件(使用db.fs.files.find()命令)斑胜;

檢查日志文件以查看誰(shuí)訪問(wèn)了MongoDB(show log global命令);

您可以使用云安全中心應(yīng)急漏洞功能一鍵核查。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嫌吠,一起剝皮案震驚了整個(gè)濱河市止潘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辫诅,老刑警劉巖凭戴,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異炕矮,居然都是意外死亡么夫,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門肤视,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)档痪,“玉大人,你說(shuō)我怎么就攤上這事邢滑「” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)乐纸。 經(jīng)常有香客問(wèn)我衬廷,道長(zhǎng),這世上最難降的妖魔是什么汽绢? 我笑而不...
    開(kāi)封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任泵督,我火速辦了婚禮,結(jié)果婚禮上庶喜,老公的妹妹穿的比我還像新娘小腊。我一直安慰自己,他們只是感情好久窟,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布秩冈。 她就那樣靜靜地躺著,像睡著了一般斥扛。 火紅的嫁衣襯著肌膚如雪入问。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天稀颁,我揣著相機(jī)與錄音芬失,去河邊找鬼。 笑死匾灶,一個(gè)胖子當(dāng)著我的面吹牛棱烂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阶女,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼颊糜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了秃踩?” 一聲冷哼從身側(cè)響起衬鱼,我...
    開(kāi)封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎憔杨,沒(méi)想到半個(gè)月后鸟赫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡消别,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年抛蚤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妖啥。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霉颠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出荆虱,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布怀读,位于F島的核電站诉位,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏菜枷。R本人自食惡果不足惜苍糠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啤誊。 院中可真熱鬧岳瞭,春花似錦、人聲如沸蚊锹。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)牡昆。三九已至姚炕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間丢烘,已是汗流浹背柱宦。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留播瞳,地道東北人掸刊。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像赢乓,于是被迫代替她去往敵國(guó)和親痒给。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • MongoDB加固方案如下: 1) 修改默認(rèn)端口 修改默認(rèn)的mongoDB 端口(默認(rèn)為:TCP 27017)為其...
    R_X閱讀 2,715評(píng)論 0 1
  • 一骏全、MongoDB簡(jiǎn)介 概述MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)苍柏,由C++語(yǔ)言編寫。旨在為WEB應(yīng)用提供...
    王梓懿_1fbc閱讀 489評(píng)論 0 3
  • 一姜贡、MongoDB簡(jiǎn)介 概述MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)试吁,由C++語(yǔ)言編寫。旨在為WEB應(yīng)用提供...
    慕楊_閱讀 551評(píng)論 0 4
  • 一楼咳、MongoDB簡(jiǎn)介 概述MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)熄捍,由C++語(yǔ)言編寫。旨在為WEB應(yīng)用提供...
    EndEvent閱讀 1,159評(píng)論 1 4
  • 成功啟動(dòng)MongoDB后母怜,再打開(kāi)一個(gè)命令行窗口輸入mongo余耽,就可以進(jìn)行數(shù)據(jù)庫(kù)的一些操作。 輸入help可以看到基...
    溪橋路轉(zhuǎn)閱讀 1,059評(píng)論 0 0