1

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

盲目的 MongoDB NoSQL 注入

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

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

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

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

谢谢,安舒

4

1 回答 1

1

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

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

抱歉,很难给出更具体的答案,因为您没有显示该代码,也没有描述您打算做什么。

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

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

于 2020-01-17T14:34:27.867 回答