CVE-2014-3120后,ElasticSearch默认的动态脚本语言换成了Groovy,并增加了沙盒,但默认仍然支持直接执行动态语言。本漏洞:1.是一个沙盒绕过; 2.是一个Goovy代码执行漏洞。
ElasticSearch支持使用"在沙盒中的"Groovy语言作为动态脚本,但显然官方的工作并没有做好。lupin和tang3分别提出了两种执行命令的方法:
所以,根据这两种执行漏洞的思路,我们可以获得两个不同的POC。
Java沙盒绕过法:
Goovy直接执行命令法:
由于查询时至少要求es中有一条数据,所以发送如下数据包,增加一个数据:
然后发送包含payload的数据包,执行任意命令:
参考链接¶