|
|
51CTO旗下网站
|
|
移动端

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

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

作者:布加迪编译来源:51CTO|2019-05-07 08:00

【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】

【编辑推荐】

  1. 数据库中存储过程和触发器有什么区别
  2. 5月数据库排行:PostgreSQL 增长放缓,Redis 下跌
  3. 有数据的地方必有库,详解关系型数据库的发展历史
  4. 详解Oracle数据库Redo log的六种状态
  5. 10个***Mongodb GUI工具,以图形方式管理数据库
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

这就是5G

这就是5G

5G那些事儿
共15章 | armmay

111人订阅学习

16招轻松掌握PPT技巧

16招轻松掌握PPT技巧

GET职场加薪技能
共16章 | 晒书包

371人订阅学习

20个局域网建设改造案例

20个局域网建设改造案例

网络搭建技巧
共20章 | 捷哥CCIE

755人订阅学习

读 书 +更多

.NET for Flash动态网站开发手札

本书深入浅出地说明了如何利用.NET、Flash及XML来辅助Flash富媒体应用程序的开发。 本书首先介绍了Flash影片应用程序与.NET应用程序结合的...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微