漏洞介绍
Elasticsearch 是一个基于 Lucene 库的搜索引擎,具有 HTTP Web 接口和无模式 JSON 文档。Elasticsearch 是用 Java 开发的,其支持 MVEL、js、Java 等语言,其老版本默认语言为 MVEL。
MVEL -一个被众多 Java 项目使用的开源的表达式语言。
Elasticsearch 1.2之前的版本默认配置启用了动态脚本,该脚本允许远程攻击者通过 _search 的 source 参数执行任意 MVEL 表达式和 Java 代码。
影响版本 Elasticsearch < 1.2
poc
向 Elasticsearch /website/blog/ 添加一条数据
POST /website/blog/ HTTP/1.1
Host: 123.58.224.8:57421
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Length: 31{"name": "xiaoxiaoran"
}