MongoDB未授权访问漏洞复现及加固

2023-11-15

说明

仅供技术学习交流、请勿用于非法行为、否则后果自负

0x01 漏洞简述

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引MongoDB服务安装后,默认未开启权限验证。如果服务监听在0.0.0.0,则可远程无需授权访问数据库。

0x02 风险等级

严漏洞的评定结果如下:

评定方式 等级

威胁等级 严重

影响面 广泛

0x03 漏洞详情

开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增、删、改、查高危动作)而且可以远程访问数据库。

造成未授权访问的根本原因就在于启动 Mongodb 的时候未设置 --auth 也很少会有人会给数据库添加上账号密码(默认空口令),使用默认空口令这将导致恶意攻击者无需进行账号认证就可以登陆到数据服务器。

0x04 影响版本

3.6.8之前版本

0x05 漏洞验证

安装环境

漏洞环境:Mongo 3.6.8
靶机:Ubantu 12.04  IP地址:172.16.16.212
攻击机:Ubantu 12.04 IP地址:172.16.16.254

 

 

安装搭建

  1. sudo apt-get install mongodb  #下载mongodb

  1. 修改/etc/mongodb.conf,在前面加#号,注释掉,意思是让所有的端口都可以连接,或者增加bind_ip=0.0.0.0也可以。

  1. 为了防止空数据库不能正常运行Mongodb,在/var/log/mongodb/ 下创建目录data:

  1. 在data下创建目录db:

  1. 然后更改它的状态,可读可写可执行。

  1. 之后输入mongo开启试一下:

 

 

  1. 显示连接拒绝,是因为我们没有开启mongodb数据库,无法连接成功,我们输入命令

/etc/init.d/mongodb start,开启后,我们在输入/etc/init.d/mongodb status,开启成功:

  1. 现在我们再开启mongo,成功连接数据库:

  1. 我们打开本地IP:27017,看一下是否开启mongodb:

  1. 显示It looks like you are trying to access MongoDB over HTTP on the native driver port.则开启成功。

 

 

攻击复现

  1. 我们打开攻击机,查看IP 172.16.16.254

输入命令 sudo mongo 172.16.16.212,成功免密连接。

  1. 我们使用kali linux扫描端口:

  1. Msf成功扫描到,显示doesn’t use authentication,未授权。

0x06 可能遇到的问题

  1. 问题一:

输入命令mongod,显示正在开启,并且没有/data/db

  1. 解决办法:

我们再/var/log/mongodb/下,创建/data/db 目录,并且chmod 777 /db。

之后ps -aux | grep mongodb,kill -9 结束 mongo 进程。

我们靶机连接时,会出现拒绝连接。

  1. 说明靶机的mongodb服务没有开启成功,我们在靶机开启服务,并且修改/etc/mongodb.conf文件,修改bind_ip = 0.0.0.0,任何IP都可以连接,port = 27017,前把注释删掉。

 

 

 

  1. 之后/etc/init.d/mongodb start,开启后。

连接成功。

 

0x07 修复建议

  1. 修改默认端口

修改默认的mongoDB端口(默认为: TCP 27017)为其他端口

  1. 不要开放服务到公网

vim /etc/mongodb.conf

bind_ip = 127.0.0.1

  1. 禁用HTTP和REST端口为MongoDB添加认证
  2. MongoDB启动时添加--auth参数、为MongoDB添加用户
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB未授权访问漏洞复现及加固 的相关文章

随机推荐

  • 强大而精致的机器学习调参方法:贝叶斯优化

    一 简介 贝叶斯优化用于机器学习调参由J Snoek 2012 提出 主要思想是 给定优化的目标函数 广义的函数 只需指定输入和输出即可 无需知道内部结构以及数学性质 通过不断地添加样本点来更新目标函数的后验分布 高斯过程 直到后验分布基本
  • spring boot之actuator健康检查

    什么是actuator SpringBoot自带监控功能Actuator 可以帮助实现对程序内部运行情况监控 比如监控状况 Bean加载情况 环境变量 日志信息 线程信息等 官翻文档 https blog csdn net alinyua
  • java实体类相互转换

    工具类 public class SmartBeanUtil 复制bean的属性 param source 源 要复制的对象 param target 目标 复制到此对象 public static void copyProperties
  • dataframe多种更改数据的方法

    以下是测试的数据 import pandas as pd data name Alice Bob Cindy David age 25 23 28 24 gender woman man woman man df pd DataFrame
  • 人工智能目标检测数据集:飞机(3)

    本数据集为飞机卫星图 包括J用 民用 以及通用飞机 图片数量1000张 图片尺寸为1024x1024 RGB彩图 仅包含一类目标 飞机 数据集已经打好标签 标签格式为常用的pascal voc格式 xml 可以直接用于目标检测模型的训练 Y
  • 如何快速求最大公约数和最小公倍数

    可以运用辗转相除法 即 326 78 78 326 78 78 14 14 78 14 14 8 8 14 8 8 6 6 8 6 6 2 2 6 2 0 此时结束 这个时候2就是最大公约数 所用原理是 1 a b a ka b 其中a b
  • 正则表达式函数

    匹配函数 match函数是从头开始匹配 如果刚开始匹配不成 就无法再进行匹配了 import re result re match r a zA Z 大Abc print result 输出结果 None search函数 只要字符串中有满
  • vue和ajax

    常用发送ajax的方法 xhr jQury get post axios fetch window内置 promise风格 会把返回数据包两层promise 而且兼容不好 v resouce server1 js const express
  • java获取文件夹下所有图片_【windows技巧】快速获取文件夹内所有文件名称列表...

    转自 百度经验 https jingyan baidu com article 3aed632e3917c870108091d1 html 1 打开一个文件夹 gt 2 新建一个TXT文档 将名字命名为 文档列表 gt 3 在TXT文档里输
  • c++什么时候生成默认拷贝构造函数

    需要默认拷贝构造函数原因 如果不提供默认拷贝构造函数 编译器会按照位拷贝进行拷贝 位拷贝指的是按字节进行拷贝 有些时候位拷贝出现的不是我们预期的行为 会取消一些特性 以下是需要默认拷贝构造函数的必要条件 1 类成员也是一个类 该成员类有拷贝
  • 如何实现无线网卡上外网+有线上内网=同时上网

    网上那些花里胡哨的 一顿操作然并卵 已补充成功操作详情 请翻到最后面查看 前面内容请忽视 至少我现在根本实现不了 但是会比拔插网线换来换去方便些 记录下 需要的自取 实例 一 开始 1 管理员打开cmd命令 2 route print 查看
  • chatgpt赋能python:怎么让Python执行完不关闭的SEO

    怎么让Python执行完不关闭的SEO 作为一名有十年Python编程经验的工程师 我深知Python在SEO技术中的重要性 然而 很多人可能不知道如何让Python执行完任务后不关闭 这将会影响我们的SEO效果 因此 在这篇文章中 我将向
  • xlwt:ValueError: column index (256) not an int in range(256)

    xlwt最大列只支持255列 超过范围会报错 可以考虑用xlsxwriter
  • 安卓已死?毕业一年萌新的Android大厂面经,年薪超过80万!

    前言 最近我一直在面试高级工程师 不管初级 高级 程序员 我想面试前 大家刷题一定是是少不了吧 我也一样 我在网上找了很多面试题来看 最近又赶上跳槽的高峰期 好多粉丝 都问我要有没有最新面试题 索性 我就把我看过的和我面试中的真题 及答案都
  • layer.msg 的time 时间停留问题

    layer msg 同上 icon 1 time 2000 2秒关闭 如果不配置 默认是3秒 function do something time 属性为弹框停留时间 单位为毫秒 tipsMore 属性为是否同时显示多个弹框 true为显示
  • 顺序表与数组

    顺序表是在计算机内存中以数组的形式保存的线性表 顺序表是指用一组地址连续的存储单元依次存储数据元素的线性结构 线性表采用顺序存储的方式存储就称之为顺序表 顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中 线性表采用指针链接
  • Python 如何将字符串转为字典

    在工作中遇到一个小问题 需要将一个 python 的字符串转为字典 比如字符串 user info name john gender male age 28 我们想把它转为下面的字典 user dict name john gender m
  • Kubespray-offline v2.21.0-1 下载 Kubespray v2.22.1 离线部署 kubernetes v1.25.6

    文章目录 1 目标 2 预备条件 3 vcenter 创建虚拟机 4 系统初始化 4 1 配置网卡 4 2 配置主机名 4 3 内核参数 5 打快照 6 安装 git 7 配置科学 8 安装 docker 9 下载介质 9 1 下载安装 d
  • Linux文件编程常用函数详解——exit()和_exit()函数

    两个函数的区别
  • MongoDB未授权访问漏洞复现及加固

    说明 仅供技术学习交流 请勿用于非法行为 否则后果自负 0x01 漏洞简述 MongoDB是一个介于关系数据库和非关系数据库之间的产品 是非关系数据库当中功能最丰富 最像关系数据库的 它支持的数据结构非常松散 是类似json的bson格式