【.comExpress翻译】MongoExpress是一个基于Web的轻量级管理界面,用于交互式管理MongoDB数据库。它是使用Node.js、Express和Bootstrap包编写的。本文介绍了MongoExpress管理面板无认证部署及各种防泄密措施。身份验证方案MongoExpress附带一个config-default.js文件。它主要支持基本身份验证,它由用户名和密码组合的base64编码负载组成。这意味着如果配置了基本身份验证,则每次请求访问不同的MongoExpressWeb组件时,都会传输HTTP请求标头Authorization:Basic。图1显示了用于提供基本身份验证登录信息的变量。图1.MongoExpressWeb管理控制台身份验证变量除了上面讨论的Web面板身份验证方案外,MongoExpress包还支持通过环境变量传递数据库身份验证登录信息。如果宿主机是使用虚拟机或者容器部署的,通过环境变量传递登录信息会导致多处信息泄露。图2显示了用于传递值的环境变量的类型。图2.用于Mongo数据库连接的环境变量用于提供身份验证的MongoExpress环境变量如图3所示:图3.用于MongoExpress身份验证的Docker环境变量总的来说,基本身份验证用于保护MongoExpressWeb管理面板,而环境变量用于存储用于配置与主MongoDB数据库的后端连接的登录信息。MongoExpress:HTTP请求/响应默认情况下,MongoExpress传输HTTP请求和响应标头,如代码片段1所示。创建mongo-expresscookie参数以存储会话相关信息。代码片段1.来自MongoExpress网络服务器的HTTP请求/响应set-cookie:mongo-express签名可用于识别部署在Internet上的MongoExpress的特征。对互联网上公开的数千个MongoExpressWeb管理面板的实证分析,无需身份验证即可访问它们。这意味着任何远程用户都可以访问这些界面、执行命令或检索敏感信息。在这里可以看到无需认证即可扫描外网运行的MongoExpress实例的HTTP资源路径:直接网页链接:[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_logJSONdump(JSON转储)[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只是预测发送到访问MongoExpress包使用的资源的cURL请求的输出:片段2.访问系统的JSON转储,没有远程服务器的用户身份验证这是一个我们对未经身份验证的MongoExpressWeb管理实例进行的实时评估的几个示例。访问adminroot:可以访问和编辑包含登录详细信息(例如salt、storedKey、serverKey和其他值)的文档。图4显示了相同的情况。图4.为Admin.Root数据库删除提取角色和登录名:图5和图6显示可以通过删除所有关联的集合来删除数据库。这些示例显示通过不安全的MongoExpress管理面板删除startup_log数据库。图5.开始从数据库中删除集合图6.数据库删除成功信息泄露:日志还可以显示构建环境的内部信息,如图7所示。图7.构建环境信息泄露的建议上面提供的示例强调了为什么保护部署在Internet上的MongoExpress实例很重要。以下是一些防止违规的提示:1.使用强登录来限制访问并部署外围访问控制。2.对暴露在网络周边的服务进行定期漏洞评估和渗透测试,以确保关键服务受到限制并且没有运行不安全的软件版本。3.制定稳健的风险评估计划,确保预先了解风险并采取相应补救措施。4.执行定期配置审查并制定安全影响分析(SIA)计划以落实此做法。原标题:Toofast,tooinsecure:SecuringMongoExpresswebadministrativeinterfaces,作者:AdityaKSood
