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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值