最大的问题与缺乏执行此类操作所需的权限有关。 实际上,通过访客帐户(Microsoft Windows 上最受限制的帐户),您可以破解任何可用本地用户的密码。 PoC 测试场景(使用访客账户) 在 Windows 10 上测试 安装和配置新更新的 Windows 10 虚拟机或物理机。 在我的情况下,完整的 Windows 版本是:1909 (OS Build 18363.778) 以管理员身份登录并让我们创建两个不同的帐户:一个管理员和一个普通用户。两个用户都是本地用户。 /! 将 PoC 可执行文件放在您作为访客用户可以访问的任何地方。 [INFO] Ellapsed Time : 00:00:06 如果您获得了对低权限用户的访问权限,则可以破解更高权限用户的密码并提升您的权限。
#2: 为你的MongoDB实例启用安全模块 默认情况下MongoDB不会启动安全模块。任何人只要可以连接到你的MongoDB所在的服务器即可连接到你的MongoDB数据库并执行任意操作。 为防止这些,MongoDB建议你始终要用安全模式启动MongoDB实例, 并为需要访问数据库的用户建立相应的权限。 #3: 使用SSL MongoDB集群之间以及从客户端连接到MongoDB实例的连接应该使用SSL。使用SSL对性能没有影响并且可以防范类似于man-in-the-middle的攻击。 以下是一些不建议的做法: 仅仅使用一个高权限用户(如root)来执行所有操作 给一个用户多于他需要的权限 使用弱密码或者多个账号同用一个密码 删除数据库后没有删除相应的用户 MongoDB建议只分配给用户恰好足够的权限 这些记录可以让系统管理员在需要的时候分析数据库在什么时段发生了什么事情。具体请参见配置审计功能 审计功能是一个MongoDB企业版的功能,在社区版中不支持。
腾讯云图是一站式数据可视化展示平台,旨在帮助用户快速通过可视化图表展示大量数据,低门槛快速打造出专业大屏数据展示。新用户0.99元起,轻松搞定数据可视化
默认情况下,连接地址是127.0.0.1:27017,连接的数据库是test数据库,我们也可以手动指定连接地址和连接的数据库: mongo 127.0.0.1:27017/admin 此时连接成功之后, 4.userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 5.clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限 6.readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 7.readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 8. userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 9.dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的 ","123") 做完这两步之后再执行查询操作就没有任何问题了,但是此时如果执行插入操作会提示没有权限,那我们可以创建一个有读写功能的用户执行相应的操作,这里就不再赘述。
:enabled 但是,不使用用户名和密码依然可以连接到数据库。 但是将没有权限查看数据库。 在MongoDB授权部分,其中admin数据库中的用户名可以管理所有的数据库,其他数据库中的用户只能管理其所在的数据库。 角色管理 MondoDB支持基于角色的访问控制(RBAC)来管理对MongoDB系统的访问。一个用户可以被授权一个或多个角色以决定该用户对数据库资源和操作的访问权限。 在权限以外,用户是无法访问系统的。 数据库角色在创建用户的role参数中设置。角色分为內建角色和自定义角色。 內建角色 MongoDB內建角色包括以下几类: 1.
一 用户及权限管理 前言: MongoDB 作为时下最为热门的数据库,那么其安全验证也是必不可少的,否则一个没有验证的数据库暴露出去,任何人可随意操作,这将是非常危险的。 我们可以通过使用为MongoDB 创建用户的方式来降低风险 1 MongoDB用户权限列表 ? 如果正确输入命令后没有查看到新创建的角色信息,那么我们需要重启MongoDB,然后再去查看(重启就是关闭MongoDB服务,然后开启MongoDB,忘记的可以看我们系列的上一篇博文) 就此我们创建角色并赋予了个简单的权限就已经 ---- 2.1.6 使用权限方式启动MongoDB 再默认情况下MongoDB是不开启用户认证的。如果我们添加用户,那么需要开启用户认证机制。 2.5 删除用户 通过db.dropUser()函数可以删除指定的用户。删除成功后会返回true。在删除用户时候需要切换到创建用户所指定的数据库中才可以删除。
管理员通常没有数据库的读写权限,只有操作用户的权限, 因此我们只需要赋予管理员userAdminAnyDatabase角色即可。 另外管理员账户必须在admin数据库下创建。 MongoDB设定use第二个数据库时如果登录用户权限比较高就可以操作第二个数据库,而不需要登录。 /mongo进入到客户端工具时,是没有使用数据库的。可以使用use切换数据库。 管理员需要在admin数据库下创建,所以我们需要切换到admin数据库。 目前在admin库中没有用户,所以查无结果。 db.createUser函数 在MongoDB中可以使用db.createUser({用户信息})函数创建用户。 使用权限方式启动MongoDB ? 在默认的情况下MongoDB是不开启用户认证的。如果我们添加用户,那么需要开启用户认证机制。
MongoDB基础 一、数据库概述及环境搭建 1、为什么要使用数据库 动态网站中的数据都是存储在数据库中的 数据库可以用来持久存储客户端通过表单收集的用户信息 数据库软件本身可以对数据进行高效的管理 2 可视化软件 MongoDB可视化操作软件,是使用图形界面操作数据库的一种方式。 image.png 5、MongoDB的简单使用 (一)简介 MongoDB是一款强大、灵活、且易于扩展的通用型数据库 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 ,因为刚刚做系统服务install的时候没有指定 –auth(没有指定则没有权限认证这一说),(相当于mysql跳过授权表启动一样) 2、账号管理 #账号管理:https://docs.mongodb.com
二、MongoDB介绍 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 ; pwd字段,用户的密码; cusomData字段,为任意内容,例如可以为用户全名介绍; roles字段,指定用户的角色,可以用一个空数组给新用户设定空角色; 在roles字段,可以指定内置角色和用户定义的角色 MongoDB为了方便管理员管理权限,在DB级别上预先定义了内置角色;如果用户需要对权限进行更为细致的管理,MongoDB允许用户创建自定义的角色,能够在集合级别上控制User能够执行的操作。 MongoDB使用角色(Role)授予User访问资源的权限,Role决定User能够访问的数据库资源和执行的操作。 一个User能够被授予一个或多个Role,如果User没有被授予Role,那么就没有访问MongoDB系统的权限。
如果未指定任何值,则任何用户都可以修改任何数据库。我们将在本指南的后面解释如何创建数据库用户并设置其权限。 有关如何在配置文件中自定义这些值和其他值的更多信息,请参阅MongoDB官方配置教程。 在添加任何用户之前,创建一个数据库来存储用户数据以进行身份验 use admin 3.使用以下命令创建管理用户,该用户可以在任何数据库上创建其他用户。 如果没有身份验证,可以访问MongoDB shell,但不允许连接到数据库。 这里的mongo-admin在步骤3中创建的用户只是基于指定的角色进行管理。 它被定义为所有数据库的用户管理员,但本身没有任何数据库权限。你可以使用它来创建其他用户并定义他们的角色。如果你使用MongoDB在多个应用程序中,请为其相应的数据库设置具有自定义权限的不同用户。 此示例example-user使用user-data数据库的只读权限创建用户,并具有exampleDB我们将在下面的“ 管理数据和集合”部分中创建的数据库的读写权限。
未授权访问漏洞可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷导致其他用户可以直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露。 6.Docker 未授权访问漏洞 7.ZooKeeper 未授权访问漏洞 8.Rsync 未授权访问漏洞 一、MongoDB 未授权访问漏洞 漏洞信息 (1) 漏洞简述开启 MongoDB 服务时若不添加任何参数默认是没有权限验证的而且可以远程访问数据库登录的用户无需密码即可通过默认端口 刚安装完毕时MongoDB 都默认有一个 admin 数据库此时 admin 数据库为空没有记录权限相关的信息。 在没有开启认证的情况下会导致任意用户在可以访问目标服务器的情况下未经授权就访问到 Redis 以及读取 Redis 的数据。 攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法成功地在 Redis 服务器上写入公钥进而可以使用对应私钥直接登录目标服务器。 (2) 风险等级高风险。 (3) 漏洞编号无。
ThinkCMF X1.6.0ThinkCMF X2.1.0ThinkCMF X2.2.0ThinkCMF X2.2.1ThinkCMF X2.2.2ThinkCMF X2.2.3 0x02漏洞危害 远程攻击者在无需任何权限情况下 0x01漏洞危害 开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增删改高危动作)而且可以远程访问数据库。 0x02漏洞成因 在刚安装完毕的时候MongoDB都默认有一个admin数据库,此时admin数据库是空的,没有记录权限相关的信息! 当admin.system.users一个用户都没有时,即使mongod启动时添加了—auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作(不管是否是以—auth 参数启动 使用navicat连接获取数据库中的内容。
Compass可以使用户直观地浏览其数据,通过从集合中抽取一组文档,提供其MongoDB架构的图形视图,从而最大限度地减少数据库开销并将结果立即呈现给用户。 许多组织广泛使用LDAP来标准化和简化大量用户通过内部系统和应用程序进行管理的方式。在许多情况下,LDAP也被用作用户访问控制的集中权限,以确保内部安全策略符合企业和监管指南。 使用MongoDB Enterprise Advanced,可以通过用户定义的角色进一步定制这些功能,使管理员能够根据客户的相应数据访问和处理需求,为客户端分配细粒度权限。 MongoDB建议定期旋转和更换加密密钥,并通过执行复制集的滚动重新启动,可以在没有数据库停机的情况下旋转密钥。 结论 从以上压测报告,可以看出在开启权限认证的情况下,大并发的情况下对读的延迟影响基本可以忽略不计。
对于这个服务,你同样可以在计算机管理中对这个服务进行管理。 在默认情况下,当我们安装好 MongoDB 后是不允许远程访问以及不存在任何的用户权限的。而这些,在我们正式使用中都是需要考虑的。 与我们经常使用的 SQL Server 或是 MySQL 不同,MongoDB 中的权限是针对每一个数据库的,也就是说我们需要为使用到的数据库创建用户并配置权限。 PS:这里,我使用账户、密码登录进入 GrapefruitVuCore 后,右侧的连接下面是没有显示这个数据库的,但这个数据库是真实存在的,不晓得这是个啥问题。 ? MongoDB 内置的用户角色权限: read:允许用户读取授权的数据库 readWrite:允许用户读写授权的数据库 dbAdmin:允许用户在授权的数据库中执行管理操作,如索引创建、删除 readAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读权限 readWriteAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读写权限
1、介绍 本文讨论保护MongoDB数据库所需的访问控制。具体来说,我们可以使用这些特性来确保只有经过授权的用户才能访问数据库。 1.3 授权 数据库管理员负责向用户授予或拒绝对数据库资源进行操作的权限。通过使用角色,我们可以指定对资源执行什么操作。因此,角色是授予用户使用特定资源执行特定任务的权限。 1.4 数据库的身份验证 MongoDB用户必须使用最初创建它们的数据库来标识自己。这通常是管理数据库,但也可以是其他数据库。 如果你不创建此管理用户,则在启用访问控制时将无法登录或创建新用户和角色。 2.1 本地主机异常 如果在没有创建至少一个管理用户的情况下启用访问控制,则无法登录。 这个localhost异常只适用于仍然没有创建用户的情况。您必须在两个选项中进行选择,在启用访问控制之前创建第一个用户,或者在启用访问控制之后使用localhost异常创建第一个用户。
如果未指定任何值,任何用户都可以修改任何数据库。我们将在本教程的后面讲解如何创建数据库用户并设置其权限。 有关如何 在配置文件中自定义这些值和其他值的更多信息,请参阅MongoDB官方配置教程。 " 部分中启用了基于角色的访问控制,请创建一个用户管理员,其中包含用于数据库认证的凭据: 打开mongoshell: mongo 默认情况下,MongoDB会连接到一个名为test的数据库。 在添加任何用户之前,创建一个数据库来存储用户数据以进行身份验证 use admin 使用以下命令创建管理员,该用户可以在任何数据库上创建其他用户。 如果没有身份验证,虽然可以访问MongoDB shell,但不允许连接到数据库。 在步骤3中创建的用户mongo-admin纯粹基于指定的角色来进行管理。 它被定义为所有数据库的管理员,但本身没有任何数据库权限。您可以使用它来创建其他用户并定义他们的角色。如果用MongoDB完成多个应用程序,请为其相应的数据库设置具有自定义权限的不同用户。
MongoDB默认是不认证的,默认没有账号,只要能连接上服务就可以对数据库进行各种操作,MongoDB认为安全最好的方法就是在一个可信的环境中运行它,保证之后可信的机器才能访问它,可能这些对一些要求高的环境 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 - readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 - readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 - userAdminAnyDatabase :只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 - dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 超级账号,超级权限 MongoDB认证前需要添加账号,添加管理员账号(默认情况下系统中没有用户) 谨记:先在不开启认证的情况下,创建用户,之后关闭服务,然后再开启认证,才生效!!!!
init.d/mongodb restart 然后连接到数据库 use admin //创建root用户,root用户既可以创建用户,也可以对任何数据库操作,权限最高的 db.createUser( root用户,而是创建一个管理用户权限的用户,注意这个用户只有管理用户权限的权力,而没有对其他数据库操作的权利 db.createUser( :只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 - readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 - readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 - root:只在admin数据库中可用。超级账号,超级权限 然后就可以通过我们的mongochef对数据库进行远程连接了 ? ? ?
这两种方法都发送加密的密码,并且为每个新会话生成不同的散列,因此没有人能够嗅出它们。 MongoDB也可以使用外部认证协议: LDAP:轻量级目录访问协议允许用户使用集中的密码登录。 虽然可以在MongoDB中找到定义好的角色,可以满足大多数用户使用场景,但是也可以创建自定义角色。角色本质上决定了用户拥有什么权限以及他/她可以访问什么内容。 2.2.2 访问控制的最佳实践 给用户太多的访问权限会导致潜在的特权滥用,这就是为什么在分配角色时进行尽职调查很重要。 使用它可以更好地控制谁可以访问环境。 实现用户级别访问控制列表,以便向单个用户授予权限。 在MongoDB 2.6中,SSL和TLS都得到x.509证书的支持。客户端可以使用后者来验证他们的身份,而不是用户名和密码。
使用脚本管理mongodb服务 注:该脚本可以直接在root用户下运行 1 # cat etcinit.dmongod 2 #! 数据库默认是没有用户名及密码的,即无权限访问限制。 1.6.1 用户的权限 用户中权限的说明 权限 说明 Read 允许用户读取指定数据库 readWrite 允许用户读写指定数据库 dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除 readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限 readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限 userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
腾讯云数据库独享集群(DBDC),简称独享集群,可以让您以**独享主机**资源方式购买、创建数据库,以满足您对资源独享、物理安全、行业监管等需求;购买独享集群后,您可以在其上灵活创建多种自定义规格的云数据库。具有云资源独享、支持资源超分配等特点。用户既享受到云数据库服务的灵活特性,又可以满足企业对数据库合规性、安全性和高性能的要求。
扫码关注云+社区
领取腾讯云代金券