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-2025-61505 — Deserialización insegura en e107 CMS install.php | Kitploit
Herramientas/GitHubGitHub/pescada-dev/cve-2025-61505
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónSeguridad WebPapers e InvestigaciónAprendizaje y Educación
GitHubpescada-dev/cve-2025-61505

CVE-2025-61505

Deserialización insegura en e107 CMS install.php

Ver Repositorio
1hace 6 mesesAú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-2025-61505 – Inyección de objetos PHP en e107 CMS 2.x

Reportado: 18 de septiembre de 2025
CVE asignado: 9 de octubre de 2025
Publicado: 02 de febrero de 2026
ID CVE: CVE-2025-61505
Descubridor: Anas Abderrahman Benbarek

Resumen

Se descubrió una vulnerabilidad de Inyección de Objetos PHP (CWE-502: Deserialización de datos no confiables) en el script de instalación (install.php) de e107 CMS versión 2.3.3.

La vulnerabilidad permite a atacantes remotos no autenticados elaborar datos serializados maliciosos, lo que potencialmente puede conducir a la ejecución arbitraria de código, la manipulación de datos u otras acciones maliciosas, dependiendo de la presencia de clases gadget explotables en el código base de e107 o en sus dependencias.

Este problema se origina por el uso inseguro de la función unserialize() de PHP sobre entradas controladas por el usuario, sin restricciones (como la opción allowed_classes). Aunque se limita a la fase de instalación, representa un riesgo significativo durante la configuración en servidores expuestos, ya que el instalador maneja operaciones sensibles como la creación de bases de datos y la escritura de archivos.

Software afectado

  • Producto: e107 CMS
  • Versiones: ≤ 2.3.3
  • Componente: Script de instalación (install.php)

Detalles de la vulnerabilidad

El proceso de instalación de e107 CMS es de múltiples etapas. Las entradas del usuario (idioma, credenciales de la base de datos, detalles del administrador, etc.) se conservan entre pasos mediante un array serializado almacenado en el parámetro POST previous_steps. Estos datos se codifican en base64 para su transmisión y se decodifican/deserializan en el servidor.

El problema central es el paso directo de la entrada del usuario decodificada a unserialize() sin validación, saneamiento ni lista blanca de clases. Esto ocurre en dos lugares:

1. Ámbito global (manejo inicial de la anulación)

php if(isset($_POST['previous_steps'])) { $tmp = unserialize(base64_decode($_POST['previous_steps'])); $override = (isset($tmp['paths']) && isset($tmp['paths']['hash'])) ? array('site_path'=>$tmp['paths']['hash']) : array(); unset($tmp); }

Análisis en profundidad:

El script asume que previous_steps contiene datos serializados confiables de los pasos anteriores del formulario. Pero, al ser un parámetro POST simple, un atacante lo controla por completo. base64_decode() convierte la entrada en binario y unserialize() la reconstruye en objetos o arrays de PHP. Si la entrada contiene notación de objeto (que comienza con O:), PHP instancia esas clases si existen en el ámbito actual o si se cargan automáticamente (autoload). Esto puede activar inmediatamente __wakeup() u otros métodos mágicos, lo que potencialmente causa efectos secundarios como escritura de archivos o llamadas inesperadas a la base de datos si hay cadenas de gadget presentes. Nota sobre explotabilidad: El éxito depende de las clases gadget disponibles. Sin ellas, el impacto puede limitarse a fallos o corrupción de datos.

2. Constructor de la clase e_install (restauración principal del estado)

PHPif(isset($_POST['previous_steps'])) { $this->previous_steps = unserialize(base64_decode($_POST['previous_steps'])); // ... (filtering and password restoration logic) unset($_POST['previous_steps']); }

Análisis en profundidad:

Esta instancia es más peligrosa porque los datos deserializados pasan a formar parte del estado del objeto ($this->previous_steps) e influyen en acciones posteriores del instalador (configuración de MySQL, creación del administrador, generación del archivo de configuración). La inyección de objetos aquí puede persistir durante todo el proceso de instalación y afectar operaciones de alto privilegio. Nuevamente, la ausencia de la restricción allowed_classes significa que cualquier clase autocargada (núcleo, manejadores, plugins, librerías) puede ser instanciada. Nota sobre explotabilidad: La explotación en el mundo real normalmente requiere encadenar múltiples objetos (una "cadena de gadget") para alcanzar comportamientos peligrosos como la ejecución de código. Por ejemplo, el __wakeup() de una clase podría llamar a otro método que evalúe cadenas controladas por el usuario. Sin tales cadenas, el impacto podría limitarse a una denegación de servicio (por ejemplo, agotamiento de recursos en destructores). El contexto de alto privilegio del instalador (escribir e107_config.php, crear directorios) amplifica los riesgos, pero eliminar el script después de la instalación reduce la exposición a largo plazo.

La vulnerabilidad es accesible mediante peticiones HTTP POST no autenticadas a /install.php durante cualquier etapa de la instalación.

Mitigación

Elimine install.php — Borre o renombre el script inmediatamente después de la instalación. Restrinja el acceso — Use reglas de .htaccess, nginx o mueva el archivo fuera de la raíz web durante el despliegue. Recomendación de parche — Reemplace unserialize() por json_decode() para la persistencia del estado o, como mínimo, use:

unserialize($data, ['allowed_classes' => false]);

Añada firma/validación HMAC de los datos para una mayor integridad.

Referencias

Sitio web oficial de e107 CMS: https://e107.org Repositorio de GitHub de e107 CMS: https://github.com/e107inc/e107 Registro CVE: CVE-2025-61505 (se actualizará cuando se publique) CWE-502: Deserialización de datos no confiables: https://cwe.mitre.org/data/definitions/502.html

Descargar herramienta