MongoDB未授权访问漏洞复现及docker.mongodb下--auth授权验证
Posted Thgilil
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB未授权访问漏洞复现及docker.mongodb下--auth授权验证相关的知识,希望对你有一定的参考价值。
MongoDB未授权访问
漏洞危害
MongoDB服务开放在公网上时,若未配置访问认证授权,则攻击者可无需认证即可连接数据库,对数据库进行任何操作(增、删、改、查等高危操作),并造成严重的敏感泄露风险。
漏洞成因
MongoDB服务安装后,默认未开启权限认证,且服务监听在0.0.0.0.,会造成远程未授权访问漏洞
在mongo数据库服务监听在0.0.0.0的情况下,若未在admin数据库中添加任何账号,且未使用–auth参数启动mongoDB服务,则会造成未授权访问(二者缺一不可)。只有添加在admin中添加了账号,并使用–auth参数启动时,Mongodb的认证授权服务才能生效
环境搭建
测试机:
kali——ip:192.168.0.109
windows——ip:192.168.0.113
靶机:
CentOS7——ip:192.168.0.114
漏洞环境采用docker搭建
拉取mongo镜像
docker pull mongo
创建一个新的容器并运行命令
docker run -d -p 27017:27017 mongo
显示正在运行的容器
docker ps
可以看到数据库mongodb服务的容器id:e4fce18258c2 和其开放ip段、端口为0.0.0.0:27017
查看mongodb数据库的版本
docker exec e4fce18258c2 mongo -version
漏洞复现
通过上面的mongo状态可以看到,数据库开放地址为0.0.0.0:27017,且数据库未通过–auth登录过,所以此时mongodb数据库的认证机制不能正常工作的,外部可以无需认证即可直接连接数据库
复现
使用msf中mongodb登录的辅助模块进行攻击演示
use auxiliary/scanner/mongodb/mongodb_login
set rhost 192.168.0.114
exploit
结果显示Mongo server没有开启认证
使用图像化界面连接MongoDB数据库
图形化工具下载地址
https://robomongo.org/download
下载——安装——连接,没什么好说的
连接成功
防御加固测试
在靶机上添加管理员用户
docker exec -it <容器id> /bin/bash
mongo 172.17.0.1 //不使用--auth参数连接数据库
>show dbs
>use admin
>db.createUser({user:"admin",pwd:"123456",roles:["root"]})
>db.createUser({user:"test",pwd:"123456",roles:["root"]})
创建成功
通过远程图形连接界面可以看到成功创建了两个管理员用户
我们靶机上是并没有通过–auth参数开启mongo服务的,所以即使现在创建了管理员账户也还是可以不用认证而连接mongo数据库
删除连接
再次直连
仍然可以无需认证而连接成功
接下来我们停止mongo服务,添加–auth参数再开启
mongo 172.17.0.1
>use admin
>db.shutdownServer()
添加–auth参数开启docker,mongo
docker run -d -p 27017:27017 mongo --auth
注意,因为我们关闭mongo服务时连docker一起关闭了,所以现在开启的mongo中是没有我们上面添加的账号信息的,为了验证授权登录,这里我们再次设置一个管理员账号
db.createUser({user:“admin”,pwd:“123456”,roles:[“root”]})
开启成功,再次使用图形化界面连接
连接失败,说明认证开启成功了
输入账号密码进行认证
授权验证连接成功
防御
0.修改默认端口(不太有用)
1.只开启本地监听
2.限制访问源,只对内网提供服务
3.启动服务时,添加–auth参数开启访问认证
4.禁用HTTP和REST端口
参考
https://www.freebuf.com/vuls/212799.html
注:本文中极大的简化了启动mongo数据库服务时的命令参数,不建议开发人员参考本文使用mongodb数据库,如有意外,概不负责。
开发人员学习mongodb请移步https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html
以上是关于MongoDB未授权访问漏洞复现及docker.mongodb下--auth授权验证的主要内容,如果未能解决你的问题,请参考以下文章