数万字总结,建议收藏慢慢看!数据库安全之MongoDB渗透

本篇文章是MongoDB数据库信息泄露漏洞复现,记录了实际中常见的MongoDB数据库未授权访问漏洞并如何使用,主要分为七个部分:MongoDB简介、MongoDB安装、MongoDB基本操作、MongoDB相关工具使用、MongoDB漏洞复现、MongoDB实战和MongoDB防御措施。

一、MongoDB基本介绍

MongoDB是一个高性能,开源,无模式的 文档型数据库 ,是一个基于分布式文件存储的数据库,由C++编写。其中的数据以JSON格式文档的形式存储。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是当前 NoSQL 数据库产品中最热门的一种。

MongoDB默认端口 :

27017:mongod和mongos实例的默认端口。

27018:设置–shardsvr运行变量或在配置文件里设置clusterRole为shardsvr时的默认端口

术语介绍:

SQL术语/概念

MongoDB术语/概念

解释/说明

database

database

数据库

table

collection

数据库表/集合

row

document

数据记录行/文档

column

field

数据字段/域

index

index

索引

Mongodb中每个数据库含有一个或多个集合collections(相当于table)

Mongodb中每个集合含有一个或多个文档document(相当于数据行)

文档Document是一组键值对,MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。文档简单例子:

{"username":"tom","password":"tom","email":"tom@gmail.com"}

MongoDB自带数据库:

admin: 从权限的角度来看,这是”root”数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。

local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合

config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

漏洞成因:

MongoDB 未配置访问认证授权 ,无需认证连接数据库后对数据库进行任意操作(未授权访问漏洞),存在严重的数据泄露风险。默认情况下MongoDB安装后,没有账 密码且未开启权限验证。但不同版本的监听地址不同,3.0之前版本默认监听在0.0.0.0,3.0及之后版本默认监听在127.0.0.1。

二、软件安装及环境搭建

1、MongoDB安装

MongoDB官 提供了32位、64位的预编译二进制包。选择最新版下载msi即可(截止到写这篇文章的时间,最新版本为4.4.5)

MongoDB下载地址:
https://www.mongodb.com/try/download/community

下载好后,拖进虚拟机,双击安装

1)选择安装类型

选择 Custom 自定义安装

2)修改MongoDB安装路径

3)服务配置

这里默认即可,Data Directory和Log Directory分别存放数据及日志文件信息

4)不勾选MongoDB Compass

在默认的安装下,该文件会自动安装。也可以不勾选 install MongoDB compass ,到官 上去安装。这里留到后面单独装。

等待片刻即可安装完成,遇到提示选择第一个即可。

2、MongoDB配置

bin目录结构

mongod.cfg 文件为Windows里的配置文件,在Linux中名字为 mongod.conf

设置允许远程连接

mongod.cfg 文件中将 bindIP 地址修改为 0.0.0.0 ,这样外部 IP 可以连接 MongoDB ,便于测试

# network interfacesnet:port: 27017bindIp: 0.0.0.0

配置环境变量

bin 目录配置进环境变量 C:MongoDBbin

测试是否配置成功,在cmd下直接输入mongo即可判断

配置文件启动

目的:将 mongodb 服务安装到 Windows 服务中,可以通过net命令进行开启和关闭

首先在 C:MongoDB 目录下创建一个 mongodb.conf 文件(这个文件名和文件的路径随意,只要在mongodb目录下就行)

#数据库路径dbpath=c:MongoDBdata#日志输出文件路径logpath=c:MongoDBlogmongodb.log#错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件logappend=true#启用日志文件,默认启用journal=true#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为falsequiet=false#端口  默认为27017port=27017

然后在cmd中输入下面命令,命名该服务名为 mongodb

mongod --config c:MongoDBmongodb.conf --install --serviceName "mongodb"

验证是否配置成功

net stop mongodbnet start mongodb

参考下文第四点: Windows下图文详解Mongodb安装及配置

3、Kali 下MongoDB安装

1)导入MongoDB密钥

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -

2)创建文件

echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

3)更新软件包数据库

sudo apt-get update

4)安装MongoDB软件包

sudo apt-get install -y mongodb-org

4、Kali MongoDB服务配置

1)启动MongoDB服务

sudo systemctl start mongod#查看端口信息netstat -ntulp

2)检查服务状态

systemctl status mongod

3)停止MongoDB服务

systemctl stop mongod

4)重启MongoDB服务

systemctl restart mongod

5)设置允许远程连接可在远程访问该库信息

sudo vi /etc/mongod.conf# 修改bindIP为0.0.0.0?# network interfacesnet:port: 27017bindIp: 0.0.0.0

6)Kali 卸载MongoDB

删除软件包:

sudo apt-get purge mongodb-org*

可以通过下面命令来查看这些软件包文件,也可以检测是否删除完成

locate monodb-org

删除数据目录:

sudo rm -r /var/log/mongodbsudo rm -r /var/lib/mongodb

三、MongoDB基本操作

1、简单概念

MongoDB ShellMongoDB 自带的交互式 Javascript shell ,用于对 MongoDB 进行操作和管理的交互式环境。进入到 MongoDB shell 后,直接在命令行窗口下输入 mongo 即可(前提是配置了环境变量),进入后默认连接到test(数据库)。由于自带交互式 Javascript shell ,可以直接在Mongo shell里进行一些简单的计算操作。

> 1+12> 0x10+0x1032

2、基本命令

1)查看数据库列表

show dbs

2)查看当前数据库

默认登陆后,当前数据库为test

db

3)创建数据库

use xiguadb

这里创建的xiguadb数据库并没有显示在dbs中,需要在xiguadb数据库中添加文档即可

4)插入数据

db.xiguadb.insert({"name":"john"})

插入文档后,dbs中显示了xiguadb数据库 注:这里文档是插入到名为xiguadb的集合中(自动创建的集合)

5)查看集合列表

当前数据库下的所有集合列表

show collectio

                                                        

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年6月3日
下一篇 2021年6月3日

相关推荐