太快太不安全:为Mongo Express Web管理界面保驾护航

译文
数据库 其他数据库
Mongo Express是一种基于Web的轻量级管理界面,用于交互式管理MongoDB数据库。它使用Node.js、Express和Bootstrap软件包编写而成。本文介绍在无需身份验证的情况下部署Mongo Express管理面板以及防止泄露的各种措施。

【51CTO.com快译】Mongo Express是一种基于Web的轻量级管理界面,用于交互式管理MongoDB数据库。它使用Node.js、Express和Bootstrap软件包编写而成。本文介绍在无需身份验证的情况下部署Mongo Express管理面板以及防止泄露的各种措施。

验证方案

Mongo Express随带config-default.js文件。它主要支持基本的验证,这包含用户名和密码组合的base64编码有效载荷。这意味着,如果配置了基本验证,每次请求访问不同的Mongo Express Web组件时就会传输HTTP请求报头Authorization:Basic 。图1显示了用于提供基本验证登录信息的变量。

图1. Mongo Express Web管理控制台验证变量

除了上面讨论的Web面板验证方案外,Mongo Express软件包还支持通过环境变量传递数据库验证登录信息。如果使用虚拟机或容器来部署主机,通过环境变量传递登录信息可能导致信息在多个位置泄漏。图2显示了用于传递值的环境变量的类型。

图2. 用于Mongo数据库连接的环境变量

用于提供验证的Mongo Express环境变量如图3所示:

图3. 用于Mongo Express验证的Docker环境变量

总体而言,基本验证用于保护Mongo Express Web管理面板,而环境变量用于存储用来配置与主要的MongoDB数据库之间的后端连接的登录信息。

Mongo Express:HTTP请求/响应

在默认状态下,Mongo Express传输HTTP请求和响应报头,如代码片段1所示。创建了mongo-express cookie参数,用于存储与会话有关的信息。

代码片段1. Mongo Express Web服务器的HTTP请求/响应

set-cookie:mongo-express签名可用于鉴别部署在互联网上的Mongo Express的特征。

实证分析

成千上万的Mongo Express Web管理面板暴露在互联网上,无需验证即可访问它们。这意味着任何远程用户都可以访问这些界面、执行命令或检索敏感信息。

在这里,可以看到可用于无需验证,就可以扫描在互联网上运行的Mongo Express实例的HTTP资源路径:

直接的Web链接:

  • [IP:port]/db/config/
  • [IP:port]/db/config/system.sessions
  • [IP:port]/db/admin/system.users
  • [IP:port]/db/admin/system.version
  • [IP:port]/db/local/startup_log

JSON转储(JSON dump)

  • [IP:port]/db/config/
  • [IP:port]/db/config/expArr/system.sessions
  • [IP:port]/db/admin/expArr/system.users
  • [IP:port]/db/admin/expArr/system.version
  • [IP:port]/db/local/expArr/startup_log

代码片段2只是预测为访问Mongo Express软件包使用的资源而发送的cURL请求的输出:

代码片段2. 访问系统的JSON转储,用户无需远程服务器的验证

以下是我们进行的未验证的Mongo Express Web管理实例的实时评估的几个例子。

访问管理员root:可以访问和编辑含有登录详细信息的文档,比如salt、storedKey、serverKey及其他值。图4显示了同样的情况。

图4. 提取Admin.Root的角色和登录信息

数据库删除:图5和图6显示可以通过删除所有关联的集合来删除数据库。这些例子显示了通过不安全的Mongo Express管理面板删除startup_log数据库。

图5. 开始从数据库删除集合

图6. 数据库成功删除

信息泄漏:日志还可以显示关于构建环境的内部信息,如图7所示。

图7. 关于构建环境的信息泄漏

若干建议

上面介绍的例子强调了为什么保护部署在互联网上的Mongo Express实例很重要。以下是防止泄露的几个提示:

1. 使用强登录信息限制访问,并部署边界访问控制机制。

2. 对网络边界上公开的服务执行定期漏洞评估和渗透测试,确保关键服务受到限制,并未运行不安全的软件版本。

3. 制定强有力的风险评估计划,确保预先了解风险并相应地进行补救。

4. 定期执行配置审查,并制定安全影响分析(SIA)计划,将这种做法落实到位。

原文标题:Too fast, too insecure: Securing Mongo Express web administrative interfaces,作者:Aditya K Sood

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:庞桂玉 来源: 51CTO
相关推荐

2015-08-19 10:06:21

2012-06-25 16:57:07

2014-07-01 10:07:56

2011-03-09 23:01:50

2013-02-01 16:48:16

2015-09-23 10:12:58

2012-02-13 10:46:37

TEMTivoliIBM

2016-10-13 13:24:54

2020-04-30 14:03:53

Nutanix

2021-03-09 10:41:25

潮数

2010-06-03 11:29:26

Windows Ser

2010-01-12 17:21:16

Sophos群柏数码

2012-09-12 09:40:36

云服务GIS技术弹性云计算

2018-09-03 11:36:41

小米MIUImiui

2010-01-26 11:29:43

2011-03-03 10:48:03

2018-09-28 15:37:49

2011-11-29 14:13:22

StrixMesh

2019-03-22 08:39:14

NginxWeb服务器Linux
点赞
收藏

51CTO技术栈公众号