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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
marshalsec — 여러 마샬러(Jackson, XStream, SnakeYAML)용 페이로드 생성기와 원격 코드 실행을 위한 JNDI 참조 간접화를 갖춘 Java 역직렬화 취약점 익스플로잇 도구. | Kitploit
도구/GitHubGitHub/mbechler/marshalsec
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingPapers & ResearchLearning & EducationRed TeamingPayload Development
GitHubmbechler/marshalsec

marshalsec

여러 마샬러(Jackson, XStream, SnakeYAML)용 페이로드 생성기와 원격 코드 실행을 위한 JNDI 참조 간접화를 갖춘 Java 역직렬화 취약점 익스플로잇 도구.

저장소 보기
3.7k67881년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Java Unmarshaller Security - 데이터를 코드 실행으로 바꾸기

Log4Shell/CVE-2021-44228 때문에 여기에 오셨다면, 공격 벡터와 영향을 받는 Java 런타임 버전에 대해 읽어보시기 바랍니다: https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/

논문

Chris Frohoff와 Garbriel Lawrence가 Java 객체 역직렬화 취약점에 대한 연구를 발표한 지 2년 이상이 지났습니다. 그 연구는 궁극적으로 Java 역사상 가장 큰 원격 코드 실행 버그의 물결로 설명할 수 있는 결과를 낳았습니다.

이에 대한 연구는 이러한 취약점이 Java 직렬화나 XStream처럼 표현력이 풍부한 메커니즘에만 국한되지 않으며, 일부는 다른 메커니즘에도 적용될 수 있음을 시사했습니다.

이 논문은 공격자가 공급한 임의의 타입을 언마샬링할 수 있는(했던) 다양한 Java 오픈소스 마샬링 라이브러리에 대한 분석과 익스플로잇 세부 사항을 제시하며, 이 프로세스가 어떻게 수행되고 어떤 암묵적 제약이 있든 유사한 익스플로잇 기법에 취약하다는 것을 보여줍니다.

전체 논문은 marshalsec.pdf에서 확인할 수 있습니다.

면책 조항

모든 정보와 코드는 교육 목적 및/또는 자신의 시스템에서 이러한 취약점을 테스트하기 위한 목적으로만 제공됩니다.

사용법

Java 8이 필요합니다. Maven으로 빌드합니다: mvn clean package -DskipTests. 다음과 같이 실행합니다.

root@kitploit:~
java -cp target/marshalsec-[VERSION]-SNAPSHOT-all.jar marshalsec.<Marshaller> [-a] [-v] [-t] [<gadget_type> [<arguments...>]]

여기서

  • -a - 해당 마샬러에 대한 모든 페이로드를 생성/테스트합니다.
  • -t - 테스트 모드로 실행하며, 생성된 페이로드를 생성한 후 언마샬링합니다.
  • -v - 상세(verbose) 모드. 예를 들어 테스트 모드에서 생성된 페이로드도 표시합니다.
  • gadget_type - 특정 가젯의 식별자. 생략하면 해당 마샬러에서 사용 가능한 가젯을 표시합니다.
  • arguments - 가젯별 인자.

다음 마샬러에 대한 페이로드 생성기가 포함되어 있습니다:

Marshaller가젯 영향
BlazeDSAMF(0|3|X)JDK 전용, Java 직렬화로의 승격
다양한 서드파티 라이브러리 RCE
Hessian|Burlap다양한 서드파티 RCE
Castor의존성 라이브러리 RCE
JacksonJDK 전용 RCE 가능, 다양한 서드파티 RCE
Java또 다른 서드파티 RCE
JsonIOJDK 전용 RCE
JYAMLJDK 전용 RCE
Kryo서드파티 RCE
KryoAltStrategyJDK 전용 RCE
Red5AMF(0|3)JDK 전용 RCE
SnakeYAMLJDK 전용 RCE
XStreamJDK 전용 RCE
YAMLBeans서드파티 RCE

인자 및 추가 사전 요구 사항

시스템 명령 실행

  • cmd - 실행할 명령
  • args... - 인자로 전달되는 추가 매개변수

사전 요구 사항 없음.

원격 클래스로딩 (일반)

  • codebase - 원격 코드베이스의 URL
  • class - 로드할 클래스

사전 요구 사항:

  • 일부 경로에서 Java 클래스패스를 호스팅하는 웹 서버를 설정합니다.
  • 로드할 컴파일된 클래스 파일은 Java 클래스패스 규칙에 따라 제공되어야 합니다.

원격 클래스로딩 (ServiceLoader)

  • service_codebase - 원격 코드베이스의 URL

로드할 서비스는 현재 javax.script.ScriptEngineFactory로 하드코딩되어 있습니다.

사전 요구 사항:

  • 일반 원격 클래스로딩과 동일합니다.
  • 또한 /META-INF/javax.script.ScriptEngineFactory에 대상 클래스 이름을 평문으로 포함하는 공급자 구성(provider-configuration) 파일이 필요합니다.
  • 거기에 지정된 대상 클래스는 서비스 인터페이스 javax.script.ScriptEngineFactory를 구현해야 합니다.

JNDI Reference 간접 참조

  • jndiUrl - 조회를 트리거할 JNDI URL

사전 요구 사항:

  • 원격 클래스로딩과 동일한 방식으로 원격 코드베이스를 설정합니다.
  • 해당 코드베이스를 가리키는 JNDI reference 리다이렉터 서비스를 실행합니다 - 두 가지 구현이 포함되어 있습니다: marshalsec.jndi.LDAPRefServer 및 RMIRefServer.
    root@kitploit:~
    java -cp target/marshalsec-[VERSION]-SNAPSHOT-all.jar marshalsec.jndi.(LDAP|RMI)RefServer <codebase>#<class> [<port>]
    
  • (ldap|rmi)://host:port/obj를 jndiUrl로 사용해 해당 서비스의 수신 주소를 가리킵니다.

테스트 실행

테스트 실행 시(Maven을 통하거나 -a를 사용할 때) 인자를 제어하는 몇 가지 시스템 속성이 있습니다.

  • exploit.codebase - 기본값은 http://localhost:8080/
  • exploit.codebaseClass - 기본값은 Exploit
  • exploit.jndiUrl - 기본값은 ldap://localhost:1389/obj
  • exploit.exec - 기본값은 /usr/bin/gedit

테스트는 시스템 명령 실행 및 원격 코드베이스에서 실행되는 코드를 검사하는 SecurityManager를 설치한 상태에서 실행됩니다. 이것이 작동하려면 사용 중인 로드된 클래스가 일부 보안 관리자 검사를 트리거해야 합니다.

도구 다운로드