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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2022-22947 — Spring-Cloud-Spel-RCE | Kitploit
Strumenti/GitHubGitHub/4nnns/cve-2022-22947
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebApprendimento e FormazioneLab e Pratica
GitHub4nnns/cve-2022-22947

CVE-2022-22947

Spring-Cloud-Spel-RCE

Vedi Repository
122174 anni 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 →
Condividi

Vulnerabilità di esecuzione di comandi in SpringCloud-Gateway (CVE-2022-22947)

Configurazione dell’ambiente

Metodo 1:

Clonare il codice dell’ambiente già predisposto su GitHub.

Repository GitHub

//⚠️注意环境代码下载路径不可含有中文或空格
git clone https://github.com/Ha0Liu/CVE-2022-22947.git

Aprire il pacchetto di codice appena scaricato con IDEA: Open ---> percorso del file scaricato ---> Open.

Metodo 2:

Creare manualmente un progetto e configurare l’ambiente.

(1) Creare un nuovo progetto, configurarlo e procedere con "next" fino alla fine;

(2) Analizzare la struttura delle directory del progetto:

1. La cartella `.idea` contiene i file di configurazione predefiniti di IntelliJ IDEA, senza altri scopi; può essere eliminata o conservata in base alle proprie esigenze;
2. La cartella `src` contiene principalmente l’area del codice dell’intero progetto, incluse le due sottocartelle `java` e `resource`: `java` è l’area per scrivere codice Java, `resource` è l’area di configurazione dell’intero progetto. Per default, Spring aggiunge il metodo `SpringApplication` in `java`, che è il metodo di avvio predefinito di Spring; in `resource` viene aggiunto per default il file `application.properties`, che è il file di configurazione del progetto Spring;
3. La cartella `test` è la cartella per i test; è possibile testare i metodi in `test`;
4. `pom.xml` è il file di configurazione di Maven, che include le dipendenze, le configurazioni, ecc. necessarie per il progetto;
5. `.iml` è la configurazione delle dipendenze dei pacchetti Maven, aggiunto per default;
6. La cartella `External Libraries` contiene tutti i pacchetti di dipendenza del progetto.

(3) Aggiungere le dipendenze Maven al file pom.xml (il repository Maven contiene i dettagli di tutte le dipendenze).

1. Il file `pom.xml` genera di default una parte del codice XML, come mostrato di seguito:

2. Importare le dipendenze necessarie per il progetto. Poiché questo progetto è un progetto SpringBoot, è necessario importare la dipendenza `spring-boot-starter` come starter del server. Inoltre, poiché questa vulnerabilità riguarda il gateway Gateway di SpringCloud, la versione a rischio è inferiore alla 3.1.1, quindi utilizziamo la versione 3.1.0 per riprodurre la vulnerabilità. Allo stesso tempo, abbiamo bisogno di monitorare e accedere al gateway tramite l’interfaccia actuator, quindi anche questa dipendenza è necessaria. I dettagli sono mostrati di seguito:

(4) Modificare il file di configurazione di Spring (percorso: src --> main --> resources --> application.properties), come di seguito:

1. `server.port` è la porta di avvio del server Spring, per default 8080; ciascuno può impostarla in base alle proprie esigenze;
2. `management.endpoint.gateway.enabled=true` abilita la porta actuator per monitorare il gateway SpringCloud-Gateway (per default è `false`, poiché questa vulnerabilità richiede il monitoraggio dello stato del gateway, dobbiamo modificarlo manualmente in `true` per abilitare il monitoraggio);
3. `management.endpoints.web.exposure.include=gateway` seleziona il gateway del server come Gateway, poiché questa vulnerabilità riguarda proprio il gateway Gateway, dichiariamo nel file di configurazione la scelta del gateway Gateway.

(5) Modificare la classe Java generata automaticamente dopo la creazione del progetto (il nome della classe è generalmente nomeprogetto+Application, percorso: src --> main --> java --> com.xxx.xxx --> xxxApplication), come mostrato di seguito:

(6) Avviare il progetto, come mostrato di seguito:

(7) Accedere a http://localhost:9000. Se la pagina visualizzata corrisponde allo screenshot, l’ambiente è stato configurato con successo.

Analisi inversa (Reverse Audit)

(1) Innanzitutto, osserviamo la patch ufficiale di correzione, il diff è disponibile qui: https://github.com/spring-cloud/spring-cloud-gateway/commit/337cef276bfd8c59fb421bfe7377a9e19c68fe1e . La patch ufficiale sostituisce StandardEvaluationContext con GatewayEvaluationContext per eseguire le espressioni SPEL nella funzione org.springframework.cloud.gateway.support.ShortcutConfigurable#getValue.

Dalla figura sopra si vede che questa patch modifica principalmente il metodo di parsing delle espressioni SPEL. Dalla riga 66 si può notare l’istruzione if: l’espressione SPEL deve iniziare con #{ e terminare con }. La funzione getValue serve per il parsing delle espressioni SPEL; si può dedurre che questa vulnerabilità è una RCE innescata dall’espressione SPEL.

(2) Tenendo premuto Ctrl e cliccando sul campo getValue con il tasto sinistro del mouse, si risale fino a trovare l’enumerazione org.springframework.cloud.gateway.support.ShortcutConfigurable.ShortcutType.

Dal metodo default sopra menzionato si può vedere che viene chiamato il metodo DEFAULT dell’enumerazione, i cui dettagli sono:

default ShortcutType shortcutType() {
    return ShortcutType.DEFAULT;
}

Metodo DEFAULT

(3) Risalire ulteriormente fino a trovare org.springframework.cloud.gateway.support.ConfigurationService.class#normalizeProperties().

Questo metodo normalizeProperties() analizza le proprietà del filtro; passa le proprietà di configurazione del filtro a normalize, che alla fine entra in getValue per eseguire l’espressione SPEL, causando così l’iniezione di espressioni SPEL.

Analisi diretta (Chain di sfruttamento senza output visibile)

(1) Secondo la documentazione [https://cloud.spring.io/spring-cloud-gateway/multi/multi__actuator_api.html](https://cloud.spring.io/spring-cloud-gateway/multi/multi actuator_api.html ), l’utente può creare e eliminare route nel gateway tramite actuator. La figura seguente mostra la struttura base del gateway.

Scarica lo strumento