CVE-2014-3120后,ElasticSearch默认的动态脚本语言换成了Groovy,并增加了沙盒,但默认仍然支持直接执行动态语言。本漏洞:1.是一个沙盒绕过; 2.是一个Goovy代码执行漏洞。

ElasticSearch支持使用"在沙盒中的"Groovy语言作为动态脚本,但显然官方的工作并没有做好。lupin和tang3分别提出了两种执行命令的方法:

所以,根据这两种执行漏洞的思路,我们可以获得两个不同的POC。

Java沙盒绕过法:

Goovy直接执行命令法:

由于查询时至少要求es中有一条数据,所以发送如下数据包,增加一个数据:

然后发送包含payload的数据包,执行任意命令:

参考链接¶