Nuevo 0-day que afecta a versiones antiguas de Joomla!

 

Ha sido encontrada una nueva vulnerabilidad en versiones antiguas de Joomla! que permitiría ejecutar código remoto a partir de una inyección de objetos en PHP.

SE RECOMIENDA INSTALAR NUEVA ACTUALIZACION NO VULNERABLE

La vulnerabilidad ha sido descubierta por el investigador Alessandro Groppo de Hacktive Security, y afecta a las versiones comprendidas entre la 3.0.0 y la 3.4.6. A pesar de no ser versiones actuales, es importante tener en cuenta que aún hay muchos sitios web que utilizan estas versiones antiguas de este CMS por cuestión de compatibilidad con temas y plugins.

Este fallo de seguridad se podría aprovechar a través de una inyección de objetos en PHP. El mejor escenario para reproducir este error sería el login de Joomla!, ya que los valores introducidos en los campos de usuario y contraseña se almacenan en un objeto serializado de manera consecutiva en una cookie de sesión. Y a su vez, los objetos definidos en la cookie de Joomla! se almacenan en su base de datos, valiéndose de dos funciones que permiten operar sobre la base de datos con dicho objeto: read() y write().

Al realizar una acción de lectura o escritura de un objeto en la base de datos, la función correspondiente reemplaza el valor «\00\x2a\x00» por «\0\0\0» en el caso de escritura (en la función write()) o viceversa reemplazando «\0\0\0» por «\00\x2a\x00» en caso de lectura (en la función read()). Estos reemplazos se realizan debido a que las variables $protected tienen el prefijo «\00\x2a\x00» en el objeto serializado pero en MySQL no es posible almacenar Null Bytes.

Este paso es muy importante para realizar con éxito la inyección, ya que si se introduce \0\0\0 en el campo username, a la hora de escribirlo, se guardará tal cual:

s:8:s:”username”;s:16:”my\0\0\0username”

Sin embargo al realizar la lectura con la función read(), modificará el valor de los 6 caracteres reduciéndolo a 3:

s:8:s:”username”;s:16:”myN*Nusername”
(indica string de 16 caracteres pero hay 13 caracteres)

Al tener control sobre usuario y contraseña, que son campos consecutivos en el objeto serializado como se observa en la siguiente imagen, es posible realizar un desbordamiento en el primer campo (usuario) dejando el segundo campo libre para inyectar el código del exploit en forma de objeto que daría paso a la ejecución remota de código.

Alessandro explica cada paso a realizar en el blog de hacktivesecurity. Además hace alusión al CVE-2015-8562, que afecta a las mismas versiones de Joomla!, aunque remarca como punto positivo que es independiente de las versiones de PHP en el servidor

 

 

Ver información original al respecto en Fuente>

__________

NOTA: Los interesados en información sobre contrato de soporte Asistencia Tecnica de SATINFO y/o licencia de uso/actualizaciones de sus utilidades, contacten con info@satinfo.es
__________

Este blog no se hace responsable de las opiniones y comentarios de los textos en los que se cita la Fuente, ofreciendo su contenido solo para facilitar el acceso a la información del mismo.

Puedes seguir cualquier respuesta a esta entrada mediante el canal RSS 2.0. Los comentarios y los pings están cerrados.

Los comentarios están cerrados.

 

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies