如何避免 Mongo DB NoSQL 盲(睡眠)注入

Posted

技术标签:

【中文标题】如何避免 Mongo DB NoSQL 盲(睡眠)注入【英文标题】:How to avoid Mongo DB NoSQL blind (sleep) injection 【发布时间】:2020-05-04 06:33:02 【问题描述】:

在扫描我的应用程序以查找漏洞时,我遇到了一个高风险错误,即

MongoDB NoSQL 盲注

我已经检查了通过执行扫描的工具向数据库发送的确切请求,并在请求 GET 调用时发现它已在 GET 请求的下面添加了行。

"$where":"sleep(181000);return 1;"

Scan 收到“Time Out”响应,表示注入的“Sleep”命令成功。

我需要帮助来修复此漏洞。有人可以帮我从这里出去吗?我只是想了解在连接到数据库之前我需要在代码中添加什么来执行此检查?

谢谢, 安树

【问题讨论】:

【参考方案1】:

类似于 SQL 注入或任何其他类型的代码注入,不要将不受信任的内容复制到将作为 MongoDB 查询执行的字符串中。

您的应用程序中显然有一些代码天真地接受用户输入或其他一些内容并将其作为 MongoDB 查询运行。

抱歉,很难给出更具体的答案,因为您没有展示该代码,也没有描述您的意图。

但通常,在您使用外部内容的每个地方,您都必须想象如果内容不包含您假设的格式,它会如何被滥用。

您必须验证内容,因此它只能采用您想要的格式,否则如果内容不是有效格式,则拒绝该内容。

【讨论】:

谢谢比尔。我明白你想说的了。:)

以上是关于如何避免 Mongo DB NoSQL 盲(睡眠)注入的主要内容,如果未能解决你的问题,请参考以下文章

MONGO DB 导入数据导致的复制集解体

pymongo 光标“触摸”以避免超时

NoSQL概述-从Mongo和Cassandra谈谈NoSQL

如何以编程方式避免android手机中的深度睡眠模式?

NoSQL(Mongo)的面向文档的数据抽象层?

mongodb 怎么执行sql