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

How to avoid Mongo DB NoSQL blind (sleep) injection

提问人:Anshu 提问时间:1/17/2020 更新时间:1/18/2020 访问量:1588

问:

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

盲目 MongoDB NoSQL 注入

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

{“$where”:“睡眠(181000);返回 1;“}

扫描收到“超时”响应,表示注入的“睡眠”命令成功。

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

谢谢 安舒

mongodb jdbc sql nosql 注入

评论


答:

1赞 Bill Karwin 1/17/2020 #1

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

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

对不起,很难给出更具体的答案,因为你没有展示该代码,也没有描述你打算做什么。

但一般来说,在你使用外部内容的每个地方,你都必须想象如果内容不包含你认为的格式,它可能会被滥用。

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

评论

0赞 Anshu 1/21/2020
谢谢比尔。我明白了你想说的话:)