您的位置 首页 java

安全技术研究-NoSQL注入攻击(JAVA)

使用 Elasticsearch Java 框架

漏洞代码示例

Elasticsearch允许以多种方式执行数据库查询,其中之一是使用搜索模板。该特性允许使用Mustache模板语言规范部分查询,然后在执行之前用适当的值填充查询。

但是必须小心,因为通过使用{{{…}}}符号,Mustache可能不会对用户提供的值执行任何转义。恶意用户可能会转义JSON字符串并更改查询语义。下面有个例子,考虑以下Elasticsearch查询,它根据用户提供的值进行过滤:

 {
    "query": {
        "match": {
            "somefield": {
                "query": "{{{somevalue}}}"
            }
        }
    }
}  

通过将上面代码片段中的somevalue替换为有效载荷”,” zero _terms_query”:”all,可以将查询转换为一个匹配所有值的查询,从而使过滤器无效:

 {
    "query": {
        "match": {
            "somefield": {
                "query": "",
                "zero_terms_query": "all"
            }
        }
    }
}  

如何防护

为了避免这种威胁,当处理不可信的数据时,开发人员应该选择使用{{…}}这样的构造,因为它正确地转义了 双引号 。上面的查询应该重写为:

 {
    "query": {
        "match": {
            "somefield": {
                "query": "{{somevalue}}"
            }
        }
    }
}  

文章来源:智云一二三科技

文章标题:安全技术研究-NoSQL注入攻击(JAVA)

文章地址:https://www.zhihuclub.com/168862.shtml

关于作者: 智云科技

热门文章

网站地图