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
CVE-2024-22243 — Ejemplos de escenarios explotables para CVE-2024-22243 que afecta al framework Spring (redirección abierta y SSRF). | Kitploit
Herramientas/GitHubGitHub/seanpesce/cve-2024-22243
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebSeguridad WebCTFAprendizaje y Educación
GitHubseanpesce/cve-2024-22243

CVE-2024-22243

Ejemplos de escenarios explotables para CVE-2024-22243 que afecta al framework Spring (redirección abierta y SSRF).

Ver Repositorio
13214hace 1 añoAú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-22243

Autor: Sean Pesce

Este proyecto contiene una aplicación web de ejemplo que demuestra escenarios explotables para CVE-2024-22243, una vulnerabilidad de análisis de URL en el Spring Framework de Java (divulgación oficial aquí).

Vulnerabilidad

Las versiones afectadas de Spring analizan el segmento "userinfo" de las URL de una manera única, lo que puede dar lugar a la extracción de un segmento de nombre de host que difiere de muchas otras librerías comunes.

El comportamiento anómalo se debe a la siguiente expresión regular ("regex") en la clase UriComponentsBuilder (introducida por este commit en 2014):

root@kitploit:~
private static final String USERINFO_PATTERN = "([^@\\[/?#]*)";

Esta regex no permite el carácter "corchete izquierdo" ([) en el segmento de user info. Sin embargo, Spring parece ser un caso atípico con este comportamiento, por lo que llamar a en un objeto construido mediante o puede dar lugar a un comportamiento inesperado. Las clases , y también se ven afectadas debido a su uso interno de ; por lo tanto, las implementaciones pueden volverse vulnerables incluso sin usar directamente .

getHost()
UriComponents
UriComponentsBuilder.fromUriString
UriComponentsBuilder.fromHttpUrl
RestTemplate
RestClient
WebClient
UriComponentsBuilder
UriComponentsBuilder

Para entradas especialmente diseñadas, Spring devolverá un valor de nombre de host que difiere de todo lo siguiente:

  • Navegadores web modernos, incluyendo:
    • Chrome (y otros navegadores basados en Chromium)
    • Firefox
    • Safari
  • java.net.URI (según se informa, solo para versiones específicas de Java; otras versiones lanzan una URISyntaxException)
  • java.net.URL
  • curl
  • android.net.Uri
  • okhttp3.HttpUrl
  • (Python 3) urllib.parse.urlparse

(Tenga en cuenta que esta lista no es exhaustiva.)

Este comportamiento potencialmente hace que las aplicaciones web basadas en Spring sean vulnerables a redirección abierta y falsificación de solicitudes del lado del servidor (SSRF) si la implementación dependiente utiliza nombres de host de confianza para la autorización u otros mecanismos relevantes para la seguridad.

Ejemplos

La aplicación web de ejemplo contiene dos endpoints vulnerables.

El primer endpoint, /redirect, muestra cómo el análisis anómalo de URL de Spring puede resultar en una redirección abierta. Puede explotarse utilizando una URL como la siguiente:

root@kitploit:~
https://127.0.0.1[@evil.com

El segundo endpoint, /health-check, demuestra cómo un desajuste en el análisis de URL entre Spring y la clase URL de la librería estándar de Java puede resultar en una falsificación de solicitudes del lado del servidor (SSRF). Puede explotarse utilizando una URL como la siguiente:

root@kitploit:~
https://evil.com[@127.0.0.1

Uso

Para compilar este proyecto con Maven, simplemente ejecute el siguiente comando (probado con OpenJDK 17):

root@kitploit:~
mvn clean package

Después, inicie la aplicación web con un comando como el siguiente:

root@kitploit:~
java -jar seanpesce-cve-2024-22243.jar 9999

La aplicación web será accesible en http://127.0.0.1:9999/.

Docker

Para construir la imagen de docker, ejecute el siguiente comando:

root@kitploit:~
docker build -t seanpesce-cve-2024-22243:latest .

Después, inicie la aplicación web con un comando como el siguiente:

root@kitploit:~
docker run -i -e PORT=9999 -p 9999:9999 seanpesce-cve-2024-22243:latest

La aplicación web será accesible en http://127.0.0.1:9999/ en el host de Docker.

Semgrep

Este repositorio también contiene reglas de semgrep para ayudar a escanear rutas de código potencialmente vulnerables. spring-cve-2024-22243_loose.yaml realiza escaneos ingenuos de cualquier uso de las API vulnerables; por lo tanto, a menudo devolverá un gran número de falsos positivos. spring-cve-2024-22243_strict.yaml intenta utilizar una lógica más estricta y análisis de taint; sin embargo, esto no se ha probado a fondo y tiene un alto potencial de pasar por alto algunas implementaciones vulnerables (especialmente cuando no se utiliza Semgrep Pro, que es necesario para el análisis entre archivos).

Otros recursos

  • Entrada en la base de datos NIST
  • Commit de Git que corrigió la vulnerabilidad
  • Demo de implementación vulnerable: Flujo OAuth vulnerable con redirección abierta por threedr3am de SecCoder Security Lab
  • CVE-2024-22259, una segunda vulnerabilidad de análisis de URL que fue descubierta a raíz de CVE-2024-22243
  • CVE-2024-22262, una tercera vulnerabilidad de análisis de URL que fue descubierta a raíz de los dos primeros hallazgos
  • Hoja de referencia de bypass de URL de PortSwigger, que incluye payloads para CVE-2024-22243
Descargar herramienta