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

网友投稿 941 2023-05-10

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

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

验证方案

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管理面板,而环境变量用于存储用来配置与主要的***数据库之间的后端连接的登录信息。

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:详解Oracle数据库Redo log的六种状态
下一篇:为什么单线程的Redis却能支撑高并发?
相关文章